为合作伙伴应用程序配置 Snowflake OAuth¶
本主题说明如何为受支持的 Snowflake 合作伙伴应用程序配置对 Snowflake 的 Snowflake OAuth 访问权限。此过程需要创建一个集成,即定义 Snowflake 与第三方应用程序或服务之间的界面的第一类 Snowflake 对象。
重要
使用任何第三方应用程序连接到 Snowflake 时,Snowflake 建议您验证该应用程序使用的集成流程是否满足内部安全要求。您可以直接与合作伙伴联系,以详细了解其用于此功能的端到端流程。
备注
Snowflake OAuth 不支持在会话中将角色切换为辅助角色。
如果 OAuth 工作流程需要进行此行为,请改用外部 OAuth。
有关更多信息,请参阅 将次要角色与 External OAuth 结合使用。
目前,Snowflake OAuth 支持以下应用程序:
客户端 |
所需的客户端版本 |
客户端类型 |
|---|---|---|
Tableau Desktop / Cloud (https://www.tableau.com/) [1] |
2019.1 或更高版本 |
公共 |
Looker (https://looker.com) [2] |
6.20 或更高版本 |
|
Alation (https://www.alation.com/) |
请参阅 Alation 文档 |
|
ThoughtSpot (https://thoughtspot.com) |
请参阅 ThoughtSpot 文档 |
|
Collibra (https://www.collibra.com) |
请参阅 Collibra 文档 |
配置 Snowflake OAuth 集成¶
使用 CREATE SECURITY INTEGRATION 命令创建集成。集成是一个 Snowflake 对象,它在 Snowflake 和第三方服务(例如支持 Snowflake OAuth 的客户端)之间提供界面。
备注
只有账户管理员(即具有 ACCOUNTADMIN 系统角色的用户)或具有全局 CREATE INTEGRATION 权限的角色才能执行此 SQL 命令。
CREATE [ OR REPLACE ] SECURITY INTEGRATION [ IF NOT EXISTS ]
<name>
TYPE = OAUTH
ENABLED = { TRUE | FALSE }
OAUTH_CLIENT = <partner_application>
oauthClientParams
[ COMMENT = '<string_literal>' ]
其中:
oauthClientParams
oauthClientParams ::= [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ] [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ] [ BLOCKED_ROLES_LIST = ('<role_name>', '<role_name>') ]
阻止特定角色使用集成¶
可选的 BLOCKED_ROLES_LIST 参数允许您列出用户 无法 明确同意在集成中使用的 Snowflake 角色。
默认情况下,ACCOUNTADMIN、SECURITYADMIN、GLOBALORGADMIN 和 ORGADMIN 角色包含在此列表中,并且无法移除。如果在业务上需要允许用户将 Snowflake OAuth 与这些角色一起使用,并且安全团队允许这样做,请联系 Snowflake 支持部门,以请求允许您的账户使用这些角色。
控制登录频率¶
当用户成功进行身份验证时,合作伙伴应用程序可以使用颁发的刷新令牌来请求新的短期访问令牌,并且在刷新令牌过期之前不会提示用户重复登录过程。可选的 OAUTH_REFRESH_TOKEN_VALIDITY 参数指定刷新令牌的有效时间长度(以秒为单位)。此设置可用于定期使刷新令牌过期,从而强制用户重复登录过程。
下面列出 OAUTH_REFRESH_TOKEN_VALIDITY 参数支持的最小值、最大值和默认值:
应用程序 |
最小值 |
最大值 |
默认值 |
|---|---|---|---|
Tableau Desktop |
:code:`60`(1 分钟) |
:code:`36000`(10 小时) |
:code:`36000`(10 小时) |
Tableau Cloud |
:code:`60`(1 分钟) |
:code:`7776000`(90 天) |
:code:`7776000`(90 天) |
如果在业务上需要降低最小值或提高最大值,请联系 Snowflake 支持部门,以请求为您的账户进行此变更。
将 Client Redirect 与用于合作伙伴应用程序的 Snowflake OAuth 一起使用¶
此功能在中华人民共和国不可用。
Snowflake 支持将 Client Redirect 与用于合作伙伴应用程序的 Snowflake OAuth 一起使用,包括将 Client Redirect 和 Snowflake OAuth 与支持的 Snowflake 客户端一起使用。
有关更多信息,请参阅 重定向客户端连接。
管理网络策略¶
Snowflake supports network policies for Looker, but not other partner applications. For more information, see 网络策略.
示例¶
Tableau Desktop
以下示例使用默认设置来创建 Snowflake OAuth 集成:
CREATE SECURITY INTEGRATION td_oauth_int1 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_DESKTOP;使用 DESCRIBE INTEGRATION 查看集成设置:
DESC SECURITY INTEGRATION td_oauth_int1;以下示例使用在 10 小时(36000 秒)后过期的刷新令牌创建 Snowflake OAuth 集成。该集成会阻止用户在使用 SYSADMIN 作为活动角色的情况下启动会话:
CREATE SECURITY INTEGRATION td_oauth_int2 TYPE = OAUTH ENABLED = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 36000 BLOCKED_ROLES_LIST = ('SYSADMIN') OAUTH_CLIENT = TABLEAU_DESKTOP;
Tableau Cloud
以下示例使用默认设置来创建 Snowflake OAuth 集成:
CREATE SECURITY INTEGRATION ts_oauth_int1 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_SERVER;使用 DESCRIBE INTEGRATION 查看集成设置:
DESC SECURITY INTEGRATION ts_oauth_int1;以下示例使用在 1 天(86400 秒)后过期的刷新令牌创建 Snowflake OAuth 集成。该集成会阻止用户在使用 SYSADMIN 作为活动角色的情况下启动会话:
CREATE SECURITY INTEGRATION ts_oauth_int2 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_SERVER OAUTH_REFRESH_TOKEN_VALIDITY = 86400 BLOCKED_ROLES_LIST = ('SYSADMIN');
从合作伙伴应用程序登录到 Snowflake¶
Tableau¶
按照 Tableau 提供的 说明 (https://onlinehelp.tableau.com/current/pro/desktop/en-us/examples_snowflake.htm),使用 Snowflake OAuth 连接到 Snowflake。
Looker¶
按照 Looker 提供的 步骤 (https://docs.looker.com/setup-and-management/database-config/snowflake#oauth),使用 Snowflake OAuth 连接到 Snowflake。
Alation¶
访问 Alation 社区 (https://community.alation.com/home),并按照 Alation 提供的说明使用 Snowflake OAuth 连接到 Snowflake。
ThoughtSpot¶
访问 ThoughtSpot 文档 (https://docs.thoughtspot.com/software/latest/connections-snowflake),并按照说明创建与 Snowflake 的连接,说明中包含了有关如何配置 Snowflake OAuth (https://docs.thoughtspot.com/software/latest/connections-snowflake-oauth.html) 的步骤。
Collibra¶
访问 Collibra 文档 (https://productresources.collibra.com/docs/collibra/latest/Content/Edge/JDBCConnections/ta_create-jdbc-connection.htm?catalog-connector-details=snowflake-native),并按照 Collibra 提供的说明使用 Snowflake OAuth 连接到 Snowflake。
管理用户同意¶
本部分介绍如何管理委派授权,即向与 Snowflake 集成关联的一个或多个客户端授予的用户同意。
显示 Snowflake OAuth 同意¶
使用 SHOW DELEGATED AUTHORIZATIONS 列出您拥有访问权限的有效委派授权:
SHOW DELEGATED AUTHORIZATIONS;
+-------------------------------+-----------+-----------+-------------------+--------------------+
| created_on | user_name | role_name | integration_name | integration_status |
|-------------------------------+-----------+-----------+-------------------+--------------------|
| 2018-11-27 07:43:10.914 -0800 | JSMITH | PUBLIC | MY_OAUTH_INT | ENABLED |
+-------------------------------+-----------+-----------+-------------------+--------------------+
列出指定用户的有效委派授权。用户可以列出自己的委派授权;否则,此命令变体需要用户的 OWNERSHIP 权限。
SHOW DELEGATED AUTHORIZATIONS
BY USER <username>;
列出指定集成的有效委派授权。此命令变体需要关于集成的 OWNERSHIP 权限(即 ACCOUNTADMIN 角色):
SHOW DELEGATED AUTHORIZATIONS
TO SECURITY INTEGRATION <integration_name>;
撤消同意¶
用户可以撤消对指定集成的同意。这实际上是撤消与集成相关的任何访问令牌。
要撤消用户对给定集成的同意,请执行 ALTER USER ...REMOVE DELEGATED AUTHORIZATIONS 命令。
备注
只有安全管理员(即具有 SECURITYADMIN 角色的用户)或更高级别的用户才能执行此 SQL 命令。
ALTER USER <username> REMOVE DELEGATED AUTHORIZATIONS
FROM SECURITY INTEGRATION <integration_name>
其中:
username指定您要撤消其同意的用户。
integration_name指定与特定客户端的访问令牌关联的集成。
要撤消与特定角色相关的用户同意,请在语句中添加 OF ROLE role_name 参数:
ALTER USER <username> REMOVE DELEGATED AUTHORIZATION
OF ROLE <role_name>
FROM SECURITY INTEGRATION <integration_name>
其中:
role_name指定与访问令牌关联的角色。
与该角色关联的任何访问令牌都将被撤消。
错误代码¶
请参阅 错误代码,以查看与 OAuth 关联的错误代码列表,以及在授权流程、令牌请求或交换期间或在完成 OAuth 流程后创建 Snowflake 会话时,在 JSON Blob 中返回的错误。