ALTER SECURITY INTEGRATION (External OAuth)

注意

提到的 Microsoft Azure Active Directory 指的是 Microsoft Entra ID。

修改为 External OAuth 创建的现有安全集成的属性。有关修改其他类型的安全集成(例如 Snowflake OAuth),请参阅 ALTER SECURITY INTEGRATION

另请参阅:

CREATE SECURITY INTEGRATION (External OAuth)DROP INTEGRATIONSHOW INTEGRATIONSDESCRIBE INTEGRATION

语法

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name> SET
  [ TYPE = EXTERNAL_OAUTH ]
  [ ENABLED = { TRUE | FALSE } ]
  [ EXTERNAL_OAUTH_TYPE = { OKTA | AZURE | PING_FEDERATE | CUSTOM } ]
  [ EXTERNAL_OAUTH_ISSUER = '<string_literal>' ]
  [ EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = '<string_literal>' | ('<string_literal>', '<string_literal>' [ , ... ] ) ]
  [ EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME | EMAIL_ADDRESS' ]
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' ] -- For OKTA | PING_FEDERATE | CUSTOM
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' | ('<string_literal>' [ , '<string_literal>' ... ] ) ] -- For Azure
  [ EXTERNAL_OAUTH_RSA_PUBLIC_KEY = <public_key1> ]
  [ EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = <public_key2> ]
  [ EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ EXTERNAL_OAUTH_AUDIENCE_LIST = ('<string_literal>') ]
  [ EXTERNAL_OAUTH_ANY_ROLE_MODE = DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE ]
  [ EXTERNAL_OAUTH_SCOPE_DELIMITER = '<string_literal>' ] -- Only for EXTERNAL_OAUTH_TYPE = CUSTOM
  [ COMMENT = '<string_literal>' ]

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name>  UNSET {
                                                            ENABLED                      |
                                                            EXTERNAL_OAUTH_AUDIENCE_LIST |
                                                            }
                                                            [ , ... ]

ALTER [ SECURITY ] INTEGRATION <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER [ SECURITY ] INTEGRATION <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
Copy

参数

name

要更改的集成的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

SET ...

指定要为集成设置的一个或多个属性/参数(用空格、逗号或新行分隔):

TYPE = EXTERNAL_OAUTH

区分 External OAuth 集成与 Snowflake OAuth 集成。

ENABLED = { TRUE | FALSE }

指定是启动集成操作还是暂停集成操作。

  • TRUE 允许集成基于管道定义中指定的参数运行。

  • FALSE 会暂停集成以进行维护。Snowflake 与第三方服务之间的任何集成都无法正常工作。

EXTERNAL_OAUTH_TYPE = { OKTA | AZURE | PING_FEDERATE | CUSTOM }

指定 OAuth 2.0 授权服务器为 Okta、Microsoft Entra ID、Ping Identity PingFederate 或自定义 OAuth 2.0 授权服务器。

EXTERNAL_OAUTH_ISSUER = 'string_literal'

指定 URL 以定义 OAuth 2.0 授权服务器。

EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = { 'string_literal' | ('string_literal', 'string_literal' [ , ... ] ) }

指定可用于将访问令牌映射到 Snowflake 用户记录的一个或多个访问令牌声明。

声明的数据类型必须是字符串或字符串列表。

EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = { 'LOGIN_NAME | EMAIL_ADDRESS' }

指示应使用哪个 Snowflake 用户记录属性将访问令牌映射到 Snowflake 用户记录。

EXTERNAL_OAUTH_JWS_KEYS_URL = 'string_literal'

指定要从中下载公钥或证书以验证 External OAuth 访问令牌的端点。

此语法适用于安全集成,其中 EXTERNAL_OAUTH_TYPE = { OKTA | PING_FEDERATE | CUSTOM }

EXTERNAL_OAUTH_JWS_KEYS_URL = { 'string_literal' | ('string_literal' [ , 'string_literal' ... ] ) }

指定要从中下载公钥或证书以验证 External OAuth 访问令牌的端点或端点列表。列表中可指定的最大 URLs 数量为 3。

此语法适用于安全集成,其中 EXTERNAL_OAUTH_TYPE = AZURE

EXTERNAL_OAUTH_RSA_PUBLIC_KEY = public_key1

指定 Base64 编码的 RSA 公钥,无需 -----BEGIN PUBLIC KEY----------END PUBLIC KEY----- 标头。

EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = public_key2

指定另一个 RSA 公钥,无需 -----BEGIN PUBLIC KEY----------END PUBLIC KEY----- 标头。用于键的轮换。

EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

指定客户端 不能 设置为:ref:主要角色 <label-access_control_role_enforcement> 的角色列表。此列表中的角色 不能 在基于来自 External OAuth 授权服务器的访问令牌创建 Snowflake 会话时使用。

默认情况下,此列表包括 ACCOUNTADMIN、ORGADMIN 和 SECURITYADMIN 角色。要从列表中移除这些拥有权限的角色,请使用 ALTER ACCOUNT 命令将 EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST 账户参数设置为 FALSE

EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )

指定客户端不能设置为主要角色的角色列表。

根据 External OAuth 授权服务器提供的访问令牌创建 Snowflake 会话时,可以使用此列表中的角色。

小心

该参数支持 ACCOUNTADMIN、ORGADMIN 和 SECURITYADMIN 系统角色。

创建将这些高权限角色设置为主要角色的 Snowflake 会话时请务必小心。

EXTERNAL_OAUTH_AUDIENCE_LIST = ('string_literal')

在使用客户的 Snowflake 账户 URL(即 <account_identifier>.snowflakecomputing.cn)的基础上,指定可用于访问令牌受众验证的附加值。有关更多信息,请参阅 账户标识符

有关使用 Power BI SSO 时此属性的详细信息,请参阅 Power BI SSO 安全集成

目前,只可以将多名受众 URLs 指定为 External OAuth 自定义客户端。每个 URL 必须放在单引号内,并用逗号分隔每个 URL。例如:

external_oauth_audience_list = ('https://example.com/api/v2/', 'https://example.com')
Copy
EXTERNAL_OAUTH_ANY_ROLE_MODE = { DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE }

指定 OAuth 客户端或用户是否可以使用未在 OAuth 访问令牌中定义的角色。请注意,在将 :doc:` Power BI 用于 Snowflake 集成 </user-guide/oauth-powerbi>` 时,PowerBI 用户即使启用此参数也无法切换角色。

  • DISABLE 不允许 OAuth 客户端或用户切换角色(即 USE ROLE role;)。默认。

  • ENABLE 允许 OAuth 客户端或用户切换角色。

  • ENABLE_FOR_PRIVILEGE 允许 OAuth 客户端或用户仅为具有 USE_ANY_ROLE 权限的客户端或用户切换角色。可以将此权限授予用户可以使用的一个或多个角色,也可以撤消。例如:

    GRANT USE_ANY_ROLE ON INTEGRATION external_oauth_1 TO role1;
    
    Copy
    REVOKE USE_ANY_ROLE ON INTEGRATION external_oauth_1 FROM role1;
    
    Copy

请注意,该值可以选择放在单引号内(例如 DISABLE 或者 'DISABLE')。

EXTERNAL_OAUTH_SCOPE_DELIMITER = 'string_literal'

指定授权令牌中的作用域分隔符。

分隔符可以是任何单个字符,例如逗号 (',') 或空格 (' ')。

此安全集成属性是可选的,可用于替换默认的逗号分隔符。请注意,自定义 External OAuth 集成仅支持此属性,其中:

EXTERNAL_OAUTH_TYPE = CUSTOM

请联系 Snowflake 支持部门,在您的 Snowflake 账户中启用此属性。

COMMENT = 'string_literal'

添加注释或覆盖集成的现有注释。

默认:无值

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 对象和列的标签配额

UNSET ...

指定要为安全集成取消设置的一个或多个属性/参数,这会将它们重置回默认值:

  • ENABLED

  • EXTERNAL_OAUTH_AUDIENCE_LIST

  • TAG tag_name [ , tag_name ... ]

使用说明

关于元数据:

注意

客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

以下示例启动了已暂停的集成的操作:

ALTER SECURITY INTEGRATION myint SET ENABLED = TRUE;
Copy
语言: 中文