CREATE AUTHENTICATION POLICY¶
在当前或指定的架构中创建新的身份验证策略,或替换现有的身份验证策略。您可以使用身份验证策略为账户或用户定义身份验证控制和安全要求。
该命令支持以下变体:
CREATE OR ALTER AUTHENTICATION POLICY:创建身份验证策略(若不存在),或更改现有身份验证策略。
- 另请参阅:
ALTER AUTHENTICATION POLICY、DESCRIBE AUTHENTICATION POLICY、DROP AUTHENTICATION POLICY、SHOW AUTHENTICATION POLICIES、CREATE OR ALTER <对象>
语法¶
CREATE [ OR REPLACE ] AUTHENTICATION POLICY [ IF NOT EXISTS ] <name>
[ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
变体语法¶
CREATE OR ALTER AUTHENTICATION POLICY¶
如果身份验证策略尚不存在,则创建新的身份验证策略,或者将现有身份验证策略更改为语句中定义的策略。CREATE OR ALTER AUTHENTICATION POLICY 语句遵循 CREATE AUTHENTICATION POLICY 语句的语法规则,并具有与 ALTER AUTHENTICATION POLICY 语句相同的限制。
CREATE OR ALTER AUTHENTICATION POLICY <name>
[ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
必填参数¶
可选参数¶
AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )
小心
通过身份验证方法进行限制可能会产生意想不到的后果,例如阻止驱动程序连接或第三方集成。
登录时允许使用的身份验证方法列表。该参数可接受以下一个或多个值:
ALL
允许所有身份验证方法。
SAML
允许 SAML2 安全集成。如果
SAML
存在,则会显示 SSO 登录选项。如果SAML
不存在,则不会显示 SSO 登录选项。PASSWORD
允许用户使用用户名和密码进行身份验证。
OAUTH
允许 External OAuth。
KEYPAIR
允许 密钥对身份验证。
默认:
ALL
。
MFA_AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )
登录时执行多重身份验证 (MFA) 的身份验证方法列表。此参数中未列出的身份验证方法不会提示进行多重身份验证。
以下身份验证方法支持 MFA:
SAML
PASSWORD
该参数可接受以下一个或多个值:
SAML
在使用 SAML2 安全集成 进行身份验证时,如果用户已注册 MFA,则系统会提示用户使用 MFA。
PASSWORD
在使用用户名和密码进行身份验证时,如果用户已注册 MFA,则系统会提示用户使用 MFA。
默认:
('PASSWORD')
。MFA_ENROLLMENT = { REQUIRED | OPTIONAL }
确定用户是否必须注册多重身份验证。
REQUIRED
强制用户注册 MFA。如果使用此值,那么
CLIENT_TYPES
参数必须包括SNOWFLAKE_UI
,因为 Snowsight 是用户可以 注册多重身份验证 (MFA) 的唯一地方。OPTIONAL
用户可以选择是否注册 MFA。
默认:
REQUIRED
。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。
默认:
ALL
。SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )
身份验证策略关联的安全集成列表。当
SAML
或OAUTH
不在AUTHENTICATION_METHODS
列表中时,该参数不起作用。SECURITY_INTEGRATIONS
列表中的所有值必须与AUTHENTICATION_METHODS
列表中的值兼容。例如,如果SECURITY_INTEGRATIONS
包含 SAML 安全集成,而AUTHENTICATION_METHODS
包含OAUTH
,则无法创建身份验证策略。ALL
允许所有安全集成。
默认:
ALL
。COMMENT = 'string_literal'
指定策略描述。
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
CREATE AUTHENTICATION POLICY |
架构 |
|
OWNERSHIP |
身份验证策略 |
|
要对架构中的任何对象执行操作,需要对父数据库和架构具有 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
创建身份验证策略后,您必须使用 ALTER ACCOUNT 或 ALTER USER 命令为账户或用户设置它,然后 Snowflake 才能执行该策略。
如果您要更新现有身份验证策略,并且需要查看该策略的定义,请运行 DESCRIBE AUTHENTICATION POLICY 命令或 GET_DDL 函数。
OR REPLACE
和IF NOT EXISTS
子句互斥。它们不能同时用于同一条语句中。CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
示例¶
创建名为 restrict_client_types_policy
的身份验证策略,该策略仅允许通过 Snowsight 或 Classic Console 访问:
CREATE AUTHENTICATION POLICY restrict_client_types_policy
CLIENT_TYPES = ('SNOWFLAKE_UI')
COMMENT = 'Auth policy that only allows access through the web interface';
设置多重身份验证,更新客户端列表,并取消设置 restrict_client_types_policy
的注释:
CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
MFA_ENROLLMENT = REQUIRED
MFA_AUTHENTICATION_METHODS = ('PASSWORD', 'SAML')
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');
有关更多示例,请参阅 身份验证策略。