ALTER AUTHENTICATION POLICY

修改 身份验证策略 的属性。

另请参阅:

CREATE AUTHENTICATION POLICYDESCRIBE AUTHENTICATION POLICYDROP AUTHENTICATION POLICYSHOW 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 ]
Copy

参数

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

SnowsightClassic Console,Snowflake Web 界面。

小心

If SNOWFLAKE_UI is not included in the CLIENT_TYPES list while MFA_ENROLLMENT is set to REQUIRED, or MFA_ENROLLMENT is unspecified, MFA enrollment doesn't work。

DRIVERS

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

小心

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

SNOWFLAKE_CLI

用于连接到 Snowflake 并管理以开发人员为中心的工作负载和 SQL 操作的 命令行客户端

SNOWSQL

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

如果客户端尝试连接,但客户端不在有效的 CLIENT_TYPES 之列,则登录尝试失败。如果未设置 CLIENT_TYPES,则任何客户端都可以连接。

默认:ALL

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

更改与身份验证策略关联的安全集成。当 SAMLOAUTH 不在 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
);
Copy
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 权限。

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

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

使用说明

示例

更改身份验证策略上允许的客户端的列表:

ALTER AUTHENTICATION POLICY restrict_client_types_policy SET CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL');
Copy
语言: 中文