管理针对 OAuth 的用户同意

本主题介绍如何管理 OAuth 的委派授权,即向与指定角色的 Snowflake 集成关联的一个或多个客户端授予的用户同意。

添加委派授权

为用户添加委派授权,预授权同意使用特定集成的指定角色发起会话。如果没有委派授权,则用户必须在身份验证后授予对角色的同意。请注意,委派授权只能绕过给定角色的授权步骤;用户必须始终进行身份验证才能请求授权码。

The ability to add delegated authorizations is limited to custom clients. For public clients (that is, Tableau Cloud or Desktop), Snowflake always displays the confirmation dialog for a given role.

Add user consent for a role using ALTER USER with the ADD DELEGATED AUTHORIZATION keywords:

ALTER USER <username> ADD DELEGATED AUTHORIZATION
    OF ROLE <role_name>
    TO SECURITY INTEGRATION <integration_name>;

其中:

username

指定要添加其同意的用户。

role_name

指定与访问令牌关联的角色。

integration_name

指定与特定客户端的访问令牌关联的集成。

Note

只有安全管理员(即具有 SECURITYADMIN 角色的用户)或更高级别的用户才能执行此 SQL 命令。

例如,为针对 MYINT 集成的用户 JANE.SMITH 添加 CUSTOM1 角色的用户同意:

ALTER USER jane.smith ADD DELEGATED AUTHORIZATION
    OF ROLE custom1
    TO SECURITY INTEGRATION myint;

查看委派授权

List the active delegated authorizations for which you have access privileges, using 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 命令。

Note

只有安全管理员(即具有 SECURITYADMIN 角色的用户)或更高级别的用户才能执行此 SQL 命令。

ALTER USER <username>
  REMOVE DELEGATED AUTHORIZATIONS
  FROM SECURITY INTEGRATION <integration_name>

To revoke user consent associated with a specific role, include the OF ROLE role_name parameter in the statement:

ALTER USER <username>
  REMOVE DELEGATED AUTHORIZATION OF ROLE <role_name>
  FROM SECURITY INTEGRATION <integration_name>

其中:

username

指定您要撤消其同意的用户。

role_name

指定与访问令牌关联的角色。

integration_name

指定与特定客户端的访问令牌关联的集成。

例如,从针对 MYINT 集成的用户 JANE.SMITH 中移除 CUSTOM1 角色的用户同意:

ALTER USER jane.smith
  REMOVE DELEGATED AUTHORIZATION OF ROLE custom1
  FROM SECURITY INTEGRATION myint;