ALTER USER¶
修改系统中现有用户的属性和对象/会话参数:
管理员可以使用此命令更改管理员具有相应权限的任何用户的属性和参数默认值。
单个用户可以使用此命令更改自己的特定属性和任何会话参数的默认值。有关更多详细信息,请参阅 ` 使用说明 `_ (本主题内容)。
还可用于中止用户提交的所有查询(和其他 SQL 语句)。
语法¶
ALTER USER [ IF EXISTS ] [ <name> ] RENAME TO <new_name>
ALTER USER [ IF EXISTS ] [ <name> ] RESET PASSWORD
ALTER USER [ IF EXISTS ] [ <name> ] ABORT ALL QUERIES
ALTER USER [ IF EXISTS ] [ <name> ] ADD DELEGATED AUTHORIZATION OF ROLE <role_name> TO SECURITY INTEGRATION <integration_name>
ALTER USER [ IF EXISTS ] [ <name> ] REMOVE DELEGATED { AUTHORIZATION OF ROLE <role_name> | AUTHORIZATIONS } FROM SECURITY INTEGRATION <integration_name>
ALTER USER [ IF EXISTS ] [ <name> ] mfaActions
ALTER USER [ IF EXISTS ] [ <name> ] SET { AUTHENTICATION | PASSWORD | SESSION } POLICY <policy_name> [ FORCE ]
ALTER USER [ IF EXISTS ] [ <name> ] UNSET { AUTHENTICATION | PASSWORD | SESSION } POLICY
ALTER USER [ IF EXISTS ] [ <name> ] SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER USER [ IF EXISTS ] [ <name> ] UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER USER [ IF EXISTS ] [ <name> ] SET { [ objectProperties ] [ objectParams ] [ sessionParams ] }
ALTER USER [ IF EXISTS ] [ <name> ] UNSET { <object_property_name> | <object_param_name> | <session_param_name> } [ , ... ]
其中:
mfaActions ::= { ENROLL MFA SET DEFAULT_MFA_METHOD = { PASSKEY | TOTP | DUO } REMOVE MFA METHOD <mfa_method> MODIFY MFA METHOD <mfa_method> SET COMMENT = '<string>' ADD MFA METHOD OTP [ COUNT = <number> ] }objectProperties ::= PASSWORD = '<string>' LOGIN_NAME = <string> DISPLAY_NAME = <string> FIRST_NAME = <string> MIDDLE_NAME = <string> LAST_NAME = <string> EMAIL = <string> MUST_CHANGE_PASSWORD = TRUE | FALSE DISABLED = TRUE | FALSE DAYS_TO_EXPIRY = <integer> MINS_TO_UNLOCK = <integer> DEFAULT_WAREHOUSE = <string> DEFAULT_NAMESPACE = <string> DEFAULT_ROLE = <string> DEFAULT_SECONDARY_ROLES = ( 'ALL' ) MINS_TO_BYPASS_MFA = <integer> DISABLE_MFA = TRUE | FALSE RSA_PUBLIC_KEY = <string> RSA_PUBLIC_KEY_FP = <string> RSA_PUBLIC_KEY_2 = <string> RSA_PUBLIC_KEY_2_FP = <string> TYPE = PERSON | SERVICE | LEGACY_SERVICE WORKLOAD_IDENTITY = ( <list_of_properties> ) COMMENT = '<string>'objectParams ::= ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = TRUE | FALSE ENABLE_UNREDACTED_SECURE_OBJECT_ERROR = TRUE | FALSE NETWORK_POLICY = <string> PREVENT_UNLOAD_TO_INLINE_URL = TRUE | FALSE PREVENT_UNLOAD_TO_INTERNAL_STAGES = TRUE | FALSEsessionParams ::= ABORT_DETACHED_QUERY = TRUE | FALSE AUTOCOMMIT = TRUE | FALSE BINARY_INPUT_FORMAT = <string> BINARY_OUTPUT_FORMAT = <string> DATE_INPUT_FORMAT = <string> DATE_OUTPUT_FORMAT = <string> DEFAULT_NULL_ORDERING = <string> ENABLE_GET_DDL_USE_DATA_TYPE_ALIAS = TRUE | FALSE ENABLE_NOTEBOOK_CREATION_IN_PERSONAL_DB = TRUE | FALSE ERROR_ON_NONDETERMINISTIC_MERGE = TRUE | FALSE ERROR_ON_NONDETERMINISTIC_UPDATE = TRUE | FALSE JSON_INDENT = <num> LOCK_TIMEOUT = <num> QUERY_TAG = <string> ROWS_PER_RESULTSET = <num> S3_STAGE_VPCE_DNS_NAME = <string> SEARCH_PATH = <string> SIMULATED_DATA_SHARING_CONSUMER = <string> STATEMENT_TIMEOUT_IN_SECONDS = <num> STRICT_JSON_OUTPUT = TRUE | FALSE TIMESTAMP_DAY_IS_ALWAYS_24H = TRUE | FALSE TIMESTAMP_INPUT_FORMAT = <string> TIMESTAMP_LTZ_OUTPUT_FORMAT = <string> TIMESTAMP_NTZ_OUTPUT_FORMAT = <string> TIMESTAMP_OUTPUT_FORMAT = <string> TIMESTAMP_TYPE_MAPPING = <string> TIMESTAMP_TZ_OUTPUT_FORMAT = <string> TIMEZONE = <string> TIME_INPUT_FORMAT = <string> TIME_OUTPUT_FORMAT = <string> TRANSACTION_DEFAULT_ISOLATION_LEVEL = <string> TWO_DIGIT_CENTURY_START = <num> UNSUPPORTED_DDL_ACTION = <string> USE_CACHED_RESULT = TRUE | FALSE WEEK_OF_YEAR_POLICY = <num> WEEK_START = <num>
备注
为了便于阅读,此处不包括可为用户设置的会话参数的完整列表。有关所有会话参数的完整列表及其说明,以及账户和对象参数,请参阅 参数。
参数¶
name
指定要更改的用户的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
如果省略标识符,则语句将修改活动(即已登录)用户。适用 ` 使用说明 `_ (本主题内容)中描述的限制。
RENAME TO new_name
指定用户的新标识符;对于账户来说必须唯一。
有关更多信息,请参阅 标识符要求。
RESET PASSWORD
生成一个可以与用户共享的 URL,该 URL 将打开一个网页,用户可以在其中输入新密码。生成的 URL 可使用一次,4 小时后过期。
请注意,指定此参数 不会 使用户的当前密码失效。用户可以继续使用当前密码,直到通过 URL 重置密码。
如果您希望使用户当前的密码无效,请改用
SET PASSWORD = 'string'
,这会将用户的密码更改为新值。ABORT ALL QUERIES
中止用户当前运行或计划的所有查询和其他 SQL 语句,而不考虑在哪个仓库上运行/计划查询。
请注意,用户仍然可以登录 Snowflake 并启动新查询。
如果要中止所有正在运行/计划的查询并阻止用户登录 Snowflake 或启动新查询,请改为指定
SET DISABLED = TRUE
。ADD DELEGATED AUTHORIZATION OF ROLE role_name TO SECURITY INTEGRATION integration_name;
添加用户同意,以使用特定集成的指定角色启动会话。
有关更多详细信息,请参阅 添加 OAuth 用户同意的委派授权。
REMOVE DELEGATED AUTHORIZATION OF ROLE role_name FROM SECURITY INTEGRATION integration_name
、.REMOVE DELEGATED AUTHORIZATIONS FROM SECURITY INTEGRATION integration_name
撤消用户的同意:
第一个语法撤消对指定角色的指定安全集成的同意。这样做的效果是撤消与集成和特定角色关联的任何 OAuth 访问令牌。
第二个语法撤消指定安全集成中的所有同意。这样做的效果是撤消与集成相关的任何 OAuth 访问令牌。
有关更多详细信息,请参阅:
{ AUTHENTICATION | PASSWORD | SESSION } POLICY policy_name [ FORCE ]
为用户指定以下策略之一:
If you already set a policy on the user, then you can specify FORCE to set the new policy without needing to unset the existing policy first.
对象属性 (objectProperties
)¶
SET property_name = property_value [ ... ]
、.UNSET property_name [ , ... ]
指定要设置或取消设置的一个(或多个)对象属性以供使用。取消设置对象属性会将其重置回默认值。
TYPE = { PERSON | SERVICE | LEGACY_SERVICE | NULL }
更改用户的类型。您可以设置此属性以区分人工、服务和旧版服务用户。有关这些用户类型的特征,请参阅 用户类型。
PERSON
与 Snowflake 进行交互的人类用户。
SERVICE
用户是指无需人类干预即可与 Snowflake 进行交互的服务或应用程序。
如果用户使用 ALTER USER 命令将其
TYPE
属性设置为SERVICE
,则不兼容的属性将保持存储状态,但不通过 DESCRIBE USER 等命令返回。不能使用 ALTER USER 命令设置不兼容的属性。If a user, with their
TYPE
property set toSERVICE
, is changed to a user with theirTYPE
property set toPERSON
, the incompatible properties are restored and can be changed, including theirPASSWORD
property.LEGACY_SERVICE
TYPE
属性设置为LEGACY_SERVICE
的用户表示非交互式集成。与SERVICE
类似,但允许密码和 SAML 身份验证。NULL
Functions the same as
PERSON
. You can't set theTYPE
property asNULL
for an existing user.
DISABLE_MFA = { TRUE | FALSE }
此参数的效果取决于用户是自愿注册 MFA 还是需要注册。
如果用户受某个要求使用 MFA 的身份验证策略约束,将此参数设置为 TRUE 将清除该用户的 MFA 身份验证方法。用户下次登录时,系统会提示他们添加一种新 MFA 方法,该方法可用作第二个身份验证因素。
如果用户自愿注册 MFA,则将此参数设置为 TRUE 允许使用密码的用户在没有第二个身份验证因素的情况下进行身份验证。
WORKLOAD_IDENTITY = ( list_of_properties )
Configures the user to authenticate by using workload identity federation.
The following list shows the properties:
TYPE = { AWS | AZURE | GCP | OIDC }
Specifies the provider that issues the attestation that is sent by the application or workload to Snowflake.
ARN = 'string'
Required for
TYPE=AWS
. Not valid for other types.Specifies the Amazon Resource Identifier (ARN) that uniquely identifies the AWS user or role that is associated with the instance authenticating to Snowflake. Snowflake accepts the following forms of IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html):
arn:aws:iam::account:user/user_name_with_path
arn:aws:iam::account:role/role_name_with_path
arn:aws:sts::account:assumed_role/role_name/role_session_name
For help obtaining the ARN, see Configure Snowflake.
ISSUER = 'string'
Required for
TYPE=AZURE
andTYPE=OIDC
. Not valid for other types.For
TYPE=AZURE
, specifies the Entra ID tenant's Authority URL in the following form:https://login.microsoftonline.com/tenant/v2.0
For help obtaining this URL, see Configure Microsoft Azure.
For
TYPE=OIDC
, specifies the OpenID Connect (OIDC) issuer URL. An OIDC provider is identified by its issuer URL.For examples of how to obtain this issuer URL for different OIDC providers, 开始使用.
SUBJECT = 'string'
Required for
TYPE=AZURE
,TYPE=GCP
, andTYPE=OIDC
. Not valid for other types.For
TYPE=AZURE
, specifies the case-sensitive Object ID (Principal ID) of the managed identity assigned to the Azure workload.For
TYPE=GCP
, specifies theuniqueId
property of the service account associated with the workload that is connecting to Snowflake.For help obtaining this identifier, see Configure Snowflake.
For
TYPE=OIDC
, specifies the identifier of the workload that is connecting to Snowflake. The format of the value is specific to the OIDC provider that is issuing the attestation.For examples of how to construct the subject of an attestation issued by an OIDC provider, see 开始使用.
OIDC_AUDIENCE_LIST = ( 'string' [ , 'string' ... ] )
Optional for
TYPE=OIDC
. Not valid for other types.Specifies which values must be present in the
aud
claim of the ID token issued by the OIDC provider. Snowflake accepts the attestation if theaud
claim contains at least one of the specified audiences.If omitted or empty, the audience is assumed to be
snowflakecomputing.cn
.
有关可以设置的其他对象属性(例如PASSWORD、LOGIN_NAME、DEFAULT_ROLE),请参阅 CREATE USER。
有关设置和取消设置属性的更多常规详细信息,请参阅 ` 使用说明 `_ (本主题内容)。
对象参数 (objectParams
)¶
SET ...
指定要为用户设置的一个(或多个)参数(用空格、逗号或换行符分隔)。
ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = { TRUE | FALSE }
控制由于语法或解析错误而失败的查询在查询历史记录中的显示方式。如果值为 FALSE,则在提供查询历史记录的视图、页面和函数中编辑失败查询的内容。
此参数控制查看查询历史记录的用户的行为,而不是执行查询的用户的行为。
用户只有具有被授予或继承 AUDIT 权限的角色才能设置 ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR 参数。
ENABLE_UNREDACTED_SECURE_OBJECT_ERROR = { TRUE | FALSE }
控制是否在元数据中编辑与安全对象相关的错误消息。有关安全对象的错误消息编辑的更多信息,请参阅 安全对象:编辑错误消息中的信息。
用户只有具有被授予或继承 AUDIT 权限的角色才能设置 ENABLE_UNREDACTED_SECURE_OBJECT_ERROR 参数。
使用 ALTER USER 命令为特定用户将参数设置为
TRUE
时,请修改要查看查询文本的用户,而不是执行查询的用户(如果这些用户是不同的用户)。NETWORK_POLICY = string
指定对用户处于活动状态的 网络策略。
此外,有关设置和取消设置参数的更多常规详细信息,请参阅 ` 使用说明 `_ (本主题内容)。
UNSET ...
指定要为用户取消设置的属性,将其重置为默认值。
NETWORK_POLICY
AUTHENTICATION POLICY
PASSWORD POLICY
SESSION POLICY
TAG tag_name [ , tag_name ... ]
会话参数 (sessionParams
)¶
SET session_param_name = param_value [ ... ]
、.UNSET session_param_name [ , ... ]
指定要为用户设置或取消设置的一个或多个会话参数。取消设置会话参数会将其重置回默认值。
有关可以设置的会话参数(ABORT_DETACHED_SESSION、AUTOCOMMIT 等)的更多详细信息,请参阅 参数。
此外,有关设置和取消设置参数的更多常规详细信息,请参阅 ` 使用说明 `_ (本主题内容)。
多重身份验证 (MFA) 操作 (mfaActions)¶
user ENROLL MFA
在多重身份验证 (MFA) 中注册指定用户,并提示他们添加第二个身份验证因素。
如果用户拥有经过验证的电子邮件地址,Snowflake 会发送一封电子邮件,提示他们添加 MFA 身份验证方法。
如果用户没有经过验证的电子邮件,Snowflake 会返回一个页面 URL,提示用户添加 MFA 身份验证方法。
SET DEFAULT_MFA_METHOD = { PASSKEY | TOTP | DUO }
如果当前用户有多种 MFA 方法,则指定哪一种方法将用作第二个身份验证因素。
user REMOVE MFA METHOD mfa_method
移除指定用户先前设置的 MFA 方法。用户不能再使用该 MFA 方法作为第二个身份验证因素。
要获取
mfa_method
的标识符,请执行 SHOW MFA METHODS 命令,并在name
列中查找值。[ user ] MODIFY MFA METHOD mfa_method SET COMMENT = 'string'
为指定 MFA 方法设置描述性名称。
要获取
mfa_method
的标识符,请执行 SHOW MFA METHODS 命令,并在name
列中查找值。用户可以省略
user
来为自己的 MFA 方法设置描述性名称。ADD MFA METHOD OTP [ COUNT = number ]
Generates one-time passcodes (OTPs) that highly privileged users can use to authenticate when other authentication methods are unavailable.
COUNT
controls how many OTPs are generated. If omitted, one OTP is generated. The maximum is 10 OTPs.For more information, see 设置管理员紧急访问权限.
使用说明¶
只有对用户拥有 OWNERSHIP 权限的角色或更高级别的角色才能执行此命令来修改大多数用户属性。
小技巧
使用
SET PASSWORD = 'string'
更改用户密码时,建议同时指定MUST_CHANGE_PASSWORD = TRUE
以强制用户登录 Web 界面并更改其密码,然后才能通过任何其他界面(例如 SnowSQL 或其他客户端应用程序)登录 Snowflake。或者,使用
RESET PASSWORD
生成用户更改密码要访问的网页 URL。只有具有 ACCOUNTADMIN 角色的用户才能设置以下参数:
PREVENT_UNLOAD_TO_INLINE_URL
PREVENT_UNLOAD_TO_INTERNAL_STAGES
单个用户可以自行执行 ALTER USER 命令(即通过在命令中指定其用户名/标识符)并更改以下内容:
DEFAULT_WAREHOUSE
DEFAULT_NAMESPACE
DEFAULT_ROLE
任何用户会话参数默认值
请注意,用户 不能 使用此命令更改其密码。出于安全原因,Snowflake 仅允许用户从 Web 界面中更改其密码。
但是,具有适当权限的管理员可以将此命令与
SET PASSWORD = 'string'
结合使用来更改用户的密码。小技巧
更改用户密码时,建议同时指定
MUST_CHANGE_PASSWORD = TRUE
以强制用户登录 Web 界面并更改其密码,然后才能通过任何其他界面(例如 SnowSQL 或其他客户端应用程序)登录 Snowflake。或者,使用
RESET PASSWORD
生成用户更改密码要访问的网页 URL。ALTER USER 语句 不会 验证默认对象(
DEFAULT_WAREHOUSE
、DEFAULT_NAMESPACE
和DEFAULT_ROLE
)是否存在。请注意,DEFAULT_SECONDARY_ROLES
不接受对象名称作为值,但 ALTER USER 语句会验证是否指定了支持的值。您可以使用单个 ALTER 语句设置和取消设置多个对象属性和对象/会话参数:
设置多个属性/参数时,用空格、逗号或换行符将它们分隔。
取消设置多个属性/参数时,必须 用逗号将它们分隔。此外,取消重置属性/参数时,请仅指定名称;指定属性/参数的值将返回错误。
如果为用户指定
SET DISABLED = TRUE
,则会发生以下情况:用户当前运行或计划的所有查询和其他 SQL 语句都将中止,并且用户无法启动其他查询。
用户被 Snowflake 锁定,无法再次登录。
如果只想中止用户的所有正在运行和计划的查询/语句,请改用
ABORT ALL QUERIES
。如果用户的
TYPE
属性为SERVICE
,则无法使用以下命令:ALTER USER RESET PASSWORD
ALTER USER SET DISABLE_MFA = TRUE
If you run an ALTER USER ... UNSET TYPE command, the
TYPE
property is set toPERSON
.If you run an ALTER USER ... SET TYPE=NULL command, the
TYPE
property is set toPERSON
.关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
将 user1
重命名为 user2
:
ALTER USER user1 RENAME TO user2;
将名为 user1
的用户的密码设置为 H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt
,并要求用户通过登录 Snowflake Web 界面来更改其密码:
ALTER USER user1 SET PASSWORD = 'H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt' MUST_CHANGE_PASSWORD = TRUE;
将 用户的类型 更改为与 Snowflake 进行编程交互的应用程序:
ALTER USER user1 SET TYPE = SERVICE;
移除用户的现有注释:
ALTER USER user1 UNSET COMMENT;
默认不激活次要角色:
ALTER USER user1 SET DEFAULT_SECONDARY_ROLES = ();
默认激活所有次要角色:
ALTER USER user1 UNSET DEFAULT_SECONDARY_ROLES;
OR
ALTER USER user1 SET DEFAULT_SECONDARY_ROLES = ('ALL');