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 INTEGRATION、SHOW INTEGRATIONS、DESCRIBE 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> ... ]
参数¶
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')
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;
REVOKE USE_ANY_ROLE ON INTEGRATION external_oauth_1 FROM role1;
请注意,该值可以选择放在单引号内(例如
DISABLE
或者'DISABLE'
)。EXTERNAL_OAUTH_SCOPE_DELIMITER = 'string_literal'
指定授权令牌中的作用域分隔符。
分隔符可以是任何单个字符,例如逗号 (
','
) 或空格 (' '
)。此安全集成属性是可选的,可用于替换默认的逗号分隔符。请注意,自定义 External OAuth 集成仅支持此属性,其中:
EXTERNAL_OAUTH_TYPE = CUSTOM
请联系 Snowflake 支持部门,在您的 Snowflake 账户中启用此属性。
COMMENT = 'string_literal'
添加注释或覆盖集成的现有注释。
默认:无值
UNSET ...
指定要为安全集成取消设置的一个或多个属性/参数,这会将它们重置回默认值:
ENABLED
EXTERNAL_OAUTH_AUDIENCE_LIST
TAG tag_name [ , tag_name ... ]
使用说明¶
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
以下示例启动了已暂停的集成的操作:
ALTER SECURITY INTEGRATION myint SET ENABLED = TRUE;