ALTER AUTHENTICATION POLICY¶
修改 身份验证策略 的属性。
- 另请参阅:
CREATE AUTHENTICATION POLICY、DESCRIBE AUTHENTICATION POLICY、DROP AUTHENTICATION POLICY、SHOW AUTHENTICATION POLICIES
语法¶
ALTER AUTHENTICATION POLICY <name> RENAME TO <new_name>
ALTER AUTHENTICATION POLICY [ IF EXISTS ] <name> SET
[ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
[ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ PAT_POLICY = ( {list_of_properties} ) ]
[ COMMENT = '<string_literal>' ]
ALTER AUTHENTICATION POLICY [ IF EXISTS ] <name> UNSET
[ CLIENT_TYPES ]
[ AUTHENTICATION_METHODS ]
[ SECURITY_INTEGRATIONS ]
[ MFA_AUTHENTICATION_METHODS ]
[ MFA_ENROLLMENT ]
[ MFA_POLICY ]
[ PAT_POLICY ]
[ COMMENT ]
参数¶
name
指定要更改的身份验证策略的标识符。
如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
有关更多信息,请参阅 标识符要求。
RENAME TO ...
指定现有身份验证策略的新名称。
SET ...
指定要为身份验证策略设置的一个或多个属性,属性之间用空格、逗号或换行符分隔。
AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )
更改登录时允许使用的身份验证方法。该参数可接受以下一个或多个值:
小心
通过身份验证方法进行限制可能会产生意想不到的后果,例如阻止驱动程序连接或第三方集成。
ALL
允许所有身份验证方法。
SAML
允许 SAML2 安全集成。如果
SAML
存在,则会显示 SSO 登录选项。如果SAML
不存在,则不会显示 SSO 登录选项。PASSWORD
允许用户使用用户名和密码进行身份验证。
OAUTH
允许 External OAuth。
KEYPAIR
允许 密钥对身份验证。
PROGRAMMATIC_ACCESS_TOKEN
允许用户使用 编程访问令牌 进行身份验证。
默认:
ALL
。MFA_AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )
登录时执行多重身份验证 (MFA) 的身份验证方法列表。此参数中未列出的身份验证方法不会提示进行多重身份验证。
以下身份验证方法支持 MFA:
SAML
PASSWORD
该参数可接受以下一个或多个值:
SAML
在使用 SAML2 安全集成 进行身份验证时,如果用户已注册 MFA,则系统会提示用户使用 MFA。
PASSWORD
在使用用户名和密码进行身份验证时,如果用户已注册 MFA,则系统会提示用户使用 MFA。
默认:
('PASSWORD', 'SAML')
。MFA_ENROLLMENT = { REQUIRED | OPTIONAL }
更改用户是否必须注册多重身份验证。
REQUIRED
强制用户注册 MFA。如果使用此值,那么
CLIENT_TYPES
参数必须包括SNOWFLAKE_UI
,因为 Snowsight 是用户可以 注册多重身份验证 (MFA) 的唯一地方。OPTIONAL
用户可以选择是否注册 MFA。
默认:
REQUIRED
。MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) )
指定用户可用作第二个身份验证因素的多重身份验证 (MFA) 方法。您可以指定多个方法。
ALL
用户可以使用密钥、身份验证器应用程序或 Duo 作为第二个身份验证因素。
PASSKEY
用户可以使用密钥作为第二个身份验证因素。
TOTP
用户可以使用身份验证器应用程序作为第二个身份验证因素。
DUO
用户可以使用 Duo 作为第二个身份验证因素。
CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )
更改可以使用 Snowflake 进行身份验证的客户端。
如果客户端尝试连接,但客户端不是下面列出的有效
CLIENT_TYPES
值之一,则登录尝试失败。如果您将
MFA_ENROLLMENT
设置为REQUIRED
,则必须在CLIENT_TYPES
列表中包含SNOWFLAKE_UI
,才能允许用户注册 MFA。如果要从
CLIENT_TYPES
列表中排除SNOWFLAKE_UI
,则必须将MFA_ENROLLMENT
设置为OPTIONAL
。The
CLIENT_TYPES
property of an authentication policy is a best effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary。此属性接受以下一个或多个值:
ALL
允许所有客户端进行身份验证。
SNOWFLAKE_UI
Snowsight 或 Classic Console,Snowflake Web 界面。
小心
If
SNOWFLAKE_UI
is not included in theCLIENT_TYPES
list whileMFA_ENROLLMENT
is set toREQUIRED
, orMFA_ENROLLMENT
is unspecified, MFA enrollment doesn't work。DRIVERS
驱动程序允许从使用 支持的语言 编写的应用程序访问 Snowflake。例如,Go、JDBC、.NET 驱动程序和 Snowpipe Streaming。
小心
如果
DRIVERS
未列入CLIENT_TYPES
列表,自动引入可能会停止工作。SNOWFLAKE_CLI
用于连接到 Snowflake 并管理以开发人员为中心的工作负载和 SQL 操作的 命令行客户端。
SNOWSQL
命令行客户端,用于连接 Snowflake。
如果客户端尝试连接,但客户端不在有效的
CLIENT_TYPES
之列,则登录尝试失败。如果未设置CLIENT_TYPES
,则任何客户端都可以连接。默认:
ALL
。SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )
更改与身份验证策略关联的安全集成。当
SAML
或OAUTH
不在AUTHENTICATION_METHODS
列表中时,该参数不起作用。SECURITY_INTEGRATIONS
列表中的所有值必须与AUTHENTICATION_METHODS
列表中的值兼容。例如,如果SECURITY_INTEGRATIONS
包含 SAML 安全集成,而AUTHENTICATION_METHODS
包含OAUTH
,则无法创建身份验证策略。ALL
允许所有安全集成。
默认:
ALL
。
PAT_POLICY = ( list_of_properties )
指定 编程访问令牌 的策略。将此设置为以下一个或多个属性与值组成的、以空格分隔的列表:
DEFAULT_EXPIRY_IN_DAYS = number_of_days
指定编程访问令牌的默认到期时间(以天为单位)。您可以指定介于 1 到最大时间(可通过设置 MAX_EXPIRY_IN_DAYS 指定)之间的值。
默认到期时间为 15 天。
有关更多信息,请参阅 设置默认到期时间。
MAX_EXPIRY_IN_DAYS = number_of_days
指定可为编程访问令牌设置的最长期限(以天为单位)。您可以指定一个介于 1 和 365 之间的值。
默认的最长到期时间为 365 天。
备注
如果现有编程访问令牌的到期时间超过了新的最长到期时间,则尝试使用这些令牌进行身份验证将失败。
例如,假设您生成了一个名为
my_token
且到期时间为 7 天的编程访问令牌。如果您稍后将所有令牌的最长到期时间更改为 2 天,则使用my_token
身份验证将失败,因为令牌的到期时间超过了新的最长到期时间。有关更多信息,请参阅 设置最长到期时间。
NETWORK_POLICY_EVALUATION = { ENFORCED_REQUIRED | ENFORCED_NOT_REQUIRED | NOT_ENFORCED }
指定如何处理编程访问令牌的网络策略要求。
默认情况下,用户必须遵守具有一个或多个 网络规则 的 网络策略 才能生成或使用编程访问令牌:
服务用户(使用 TYPE=SERVICE)必须遵守网络策略才能生成和使用编程访问令牌。
人类用户(使用 TYPE=PERSON)必须遵守网络策略才能使用编程访问令牌。
要替换此行为,请将此属性设置为以下值之一:
- :code:`ENFORCED_REQUIRED`(默认行为)
用户必须遵守网络策略才能生成和使用编程访问令牌。
如果用户受网络策略的约束,则网络策略将在身份验证期间强制执行。
ENFORCED_NOT_REQUIRED
用户 无需 受网络策略的约束即可生成和使用编程访问令牌。
如果用户受网络策略的约束,则网络策略将在身份验证期间强制执行。
NOT_ENFORCED
用户 无需 受网络策略的约束即可生成和使用编程访问令牌。
如果用户受网络策略的约束,则在身份验证期间 不会 强制执行网络策略。
例如:
PAT_POLICY=( DEFAULT_EXPIRY_IN_DAYS=30 MAX_EXPIRY_IN_DAYS=365 NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED );
COMMENT = 'string_literal'
更改身份验证策略的注释。
UNSET ...
指定要为身份验证策略取消设置的属性,这会将这些属性重置为默认值。
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
OWNERSHIP |
身份验证策略 |
Only the SECURITYADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed. |
要对架构中的任何对象执行操作,需要对父数据库和架构具有 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
如果您要更新现有身份验证策略,并且需要查看该策略的定义,请运行 DESCRIBE AUTHENTICATION POLICY 命令或 GET_DDL 函数。
示例¶
更改身份验证策略上允许的客户端的列表:
ALTER AUTHENTICATION POLICY restrict_client_types_policy SET CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL');