CREATE SECURITY INTEGRATION(外部 API 身份验证)¶
为账户中的外部 API 身份验证创建新的安全集成或替换现有集成。
有关创建其他类型的安全集成(例如外部 OAuth)的信息,请参阅 CREATE SECURITY INTEGRATION。
- 另请参阅:
ALTER SECURITY INTEGRATION(外部 API 身份验证)、DESCRIBE INTEGRATION、DROP INTEGRATION、SHOW INTEGRATIONS
语法¶
OAuth:客户端凭据¶
CREATE SECURITY INTEGRATION <name>
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
ENABLED = { TRUE | FALSE }
[ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
[ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
[ OAUTH_CLIENT_ID = '<string_literal>' ]
[ OAUTH_CLIENT_SECRET = '<string_literal>' ]
[ OAUTH_GRANT = 'CLIENT_CREDENTIALS']
[ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
[ OAUTH_ALLOWED_SCOPES = ( '<scope_1>' [ , '<scope_2>' ... ] ) ]
[ COMMENT = '<string_literal>' ]
OAuth:JWT Bearer Flow¶
CREATE SECURITY INTEGRATION <name>
TYPE = API_AUTHENTICATION
AUTH_TYPE = OAUTH2
ENABLED = { TRUE | FALSE }
[ OAUTH_AUTHORIZATION_ENDPOINT = '<string_literal>' ]
[ OAUTH_TOKEN_ENDPOINT = '<string_literal>' ]
[ OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST ]
[ OAUTH_CLIENT_ID = '<string_literal>' ]
[ OAUTH_CLIENT_SECRET = '<string_literal>' ]
[ OAUTH_GRANT = 'JWT_BEARER']
[ OAUTH_ACCESS_TOKEN_VALIDITY = <integer> ]
[ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
[ COMMENT = '<string_literal>' ]
必填参数¶
name
指定集成的标识符(即名称)。此值在您的账户中必须唯一。
此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。
有关更多详细信息,请参阅 标识符要求。
TYPE = API_AUTHENTICATION
指定您正在 Snowflake 和使用 OAuth 2.0 及外部 API 身份验证的外部服务之间创建安全接口。
AUTH_TYPE = OAUTH2
指定集成使用 OAuth 2.0 对外部服务进行身份验证。
ENABLED = { TRUE | FALSE }
指定是启用还是禁用此安全集成。
TRUE
允许集成基于集成定义中指定的参数运行。
FALSE
暂停集成以进行维护。Snowflake 与第三方服务之间的任何集成都无法正常工作
可选参数¶
请注意,这是可由您配置的详尽参数列表。配置集成中的参数,使其与在基于选定的 OAuth 流程 创建密钥 时配置的参数相匹配。
OAUTH_AUTHORIZATION_ENDPOINT = 'string_literal'
指定用于对外部服务进行身份验证的 URL。例如,要连接到 ServiceNow 实例,URL 应采用以下格式:
https://<instance_name>.service-now.com/oauth_token
其中
instance_name
是 ServiceNow 实例的名称。OAUTH_TOKEN_ENDPOINT = 'string_literal'
指定客户端用于获取访问令牌的令牌端点,方法是提供其授权授予或刷新令牌。令牌端点用于每个授权授予,但隐式授权类型除外(因为访问令牌是直接颁发的)。
OAUTH_CLIENT_AUTH_METHOD = CLIENT_SECRET_POST
指定将 POST 用作外部服务的身份验证方法。
OAUTH_CLIENT_ID = 'string_literal'
指定外部服务中 OAuth 应用程序的客户端 ID。
OAUTH_CLIENT_SECRET = 'string_literal'
为上一步中的 ServiceNow 实例中的 OAuth 应用程序指定客户端密钥。连接器使用该密钥向 ServiceNow 实例请求访问令牌。
OAUTH_GRANT = 'string_literal'
指定 OAuth 流的类型。以下其中一项:
'CLIENT_CREDENTIALS'
,当集成使用客户端凭据时。'AUTHORIZATION_CODE'
,当集成使用授权代码时。'JWT_BEARER'
,当集成将
OAUTH_ACCESS_TOKEN_VALIDITY = integer
指定由 OAuth 服务器颁发的 OAuth 访问令牌的默认生命周期(以秒为单位)。
如果访问令牌生命周期未作为 OAuth 令牌响应的一部分返回,则使用此属性中设置的值。当两个值都可用时,两者中较小的值将用于刷新访问令牌。
OAUTH_REFRESH_TOKEN_VALIDITY = integer
指定用于确定从 OAuth 服务器获取的刷新令牌有效性的值。
OAUTH_ALLOWED_SCOPES = ( 'scope_1' [ , 'scope_2' ... ] )
指定以逗号分隔的范围列表,每个范围放在单引号内,在 OAuth 客户端凭证流期间由集成中具备 USAGE 的角色通过 OAuth 发出请求时使用。
此列表必须是安全集成的
OAUTH_ALLOWED_SCOPES
属性中定义的范围的子集。如果未指定OAUTH_SCOPES
属性值,则密钥将继承安全集成中指定的所有范围。对于 ServiceNow 连接器,唯一可能的范围值是
'useraccount'
。默认:空列表(即
[]
)。COMMENT = 'string_literal'
指定集成的注释。
默认:无值
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
CREATE INTEGRATION |
账户 |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
示例¶
创建一个名为 servicenow_oauth
的安全集成,使用 OAuth 及代码授权流程将 Snowflake 连接到名为 myinstance
的 ServiceNow 实例:
CREATE SECURITY INTEGRATION servicenow_oauth TYPE = api_authentication AUTH_TYPE = oauth2 OAUTH_CLIENT_AUTH_METHOD = client_secret_post OAUTH_CLIENT_ID = 'sn-oauth-134o9erqfedlc' OAUTH_CLIENT_SECRET = 'eb9vaXsrcEvrFdfcvCaoijhilj4fc' OAUTH_TOKEN_ENDPOINT = 'https://myinstance.service-now.com/oauth_token.do' ENABLED = true;