CREATE AUTHENTICATION POLICY

在当前或指定的架构中创建新的身份验证策略,或替换现有的身份验证策略。您可以使用身份验证策略为账户或用户定义身份验证控制和安全要求。

另请参阅:

ALTER AUTHENTICATION POLICYDESCRIBE AUTHENTICATION POLICYDROP AUTHENTICATION POLICYSHOW AUTHENTICATION POLICIES

语法

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>' ]
Copy

必填参数

name

为身份验证策略指定 标识符。如果标识符包含空格或特殊字符,则必须将字符串放在双引号中。放在双引号中的标识符区分大小写。标识符必须满足 标识符要求

可选参数

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', 'SAML')

MFA_ENROLLMENT = { REQUIRED | OPTIONAL }

确定用户是否必须注册多重身份验证。

REQUIRED

强制用户注册 MFA。如果使用此值,那么 CLIENT_TYPES 参数必须包括 SNOWFLAKE_UI,因为 Snowsight 是用户可以 注册多重身份验证 (MFA) 的唯一地方。

OPTIONAL

用户可以选择是否注册 MFA。

默认:OPTIONAL

CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )

可使用 Snowflake 进行身份验证的客户端列表。如果客户端尝试连接,但客户端不在有效的 CLIENT_TYPES 之列,则登录尝试失败。

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

SnowsightClassic Console,Snowflake Web 界面。

小心

If SNOWFLAKE_UI is not included in the CLIENT_TYPES list, MFA enrollment does not work。

DRIVERS

驱动程序允许从使用 支持的语言 编写的应用程序访问 Snowflake。例如,GoJDBC.NET 驱动程序和 Snowpipe Streaming

小心

如果 DRIVERS 未列入 CLIENT_TYPES 列表,自动引入可能会停止工作。

SNOWSQL

命令行客户端,用于连接 Snowflake。

默认:ALL

SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )

身份验证策略关联的安全集成列表。当 SAMLOAUTH 不在 AUTHENTICATION_METHODS 列表中时,该参数不起作用。

SECURITY_INTEGRATIONS 列表中的所有值必须与 AUTHENTICATION_METHODS 列表中的值兼容。例如,如果 SECURITY_INTEGRATIONS 包含 SAML 安全集成,而 AUTHENTICATION_METHODS 包含 OAUTH,则无法创建身份验证策略。

ALL

允许所有安全集成。

默认:ALL

COMMENT = 'string_literal'

指定策略描述。

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE AUTHENTICATION POLICY

架构

Only the SECURITYADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed.

请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 创建身份验证策略后,您必须使用 ALTER ACCOUNTALTER USER 命令为账户或用户设置它,然后 Snowflake 才能执行该策略。

  • 如果您要更新现有身份验证策略,并且需要查看该策略的定义,请运行 DESCRIBE AUTHENTICATION POLICY 命令或 GET_DDL 函数。

  • 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';
Copy

有关更多示例,请参阅 身份验证策略

语言: 中文