Gerenciamento do consentimento do usuário para OAuth¶
Este tópico descreve como gerenciar autorizações delegadas para OAuth, ou seja, o consentimento do usuário dado a um ou mais clientes associados às integrações do Snowflake para uma função específica.
Neste tópico:
Adição de autorizações delegadas¶
Adicionar uma autorização delegada a um usuário pré-autoriza o consentimento para iniciar uma sessão usando uma função específica para uma determinada integração. Sem a autorização delegada, o usuário deve autorizar o consentimento para a função após a autenticação. Note que uma autorização delegada somente ignora a etapa de autorização para uma determinada função; um usuário deve sempre se autenticar para solicitar um código de autorização.
A capacidade de adicionar autorizações delegadas é limitada aos clientes personalizados. Para clientes públicos (ou seja, Tableau Server ou Desktop), o Snowflake sempre exibe o diálogo de confirmação para uma determinada função.
Adicione o consentimento do usuário para uma função usando ALTER USER com as palavras-chave ADD DELEGATED AUTHORIZATION:
ALTER USER <username> ADD DELEGATED AUTHORIZATION
OF ROLE <role_name>
TO SECURITY INTEGRATION <integration_name>;
Onde:
username
Especifica o usuário cujo consentimento você está adicionando.
role_name
Especifica a função associada com o token de acesso.
integration_name
Especifica a integração associada com os tokens de acesso para um cliente específico.
Nota
Somente administradores de segurança (ou seja, usuários com a função SECURITYADMIN) ou superior podem executar este comando SQL.
Por exemplo, adicione o consentimento do usuário para a função CUSTOM1 ao usuário JANE.SMITH para a integração MYINT:
ALTER USER jane.smith ADD DELEGATED AUTHORIZATION
OF ROLE custom1
TO SECURITY INTEGRATION myint;
Visualização de autorizações delegadas¶
Liste as autorizações delegadas ativas para as quais você tem privilégios de acesso, usando 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 |
+-------------------------------+-----------+-----------+-------------------+--------------------+
Relacione as autorizações delegadas ativas para um usuário especificado. Os usuários podem listar suas próprias autorizações delegadas; caso contrário, esta variante de comando requer o privilégio OWNERSHIP sobre o usuário.
SHOW DELEGATED AUTHORIZATIONS
BY USER <username>;
Relacione as autorizações delegadas ativas para uma integração específica. Esta variante de comando requer o privilégio OWNERSHIP para a integração (ou seja, a função ACCOUNTADMIN):
SHOW DELEGATED AUTHORIZATIONS
TO SECURITY INTEGRATION <integration_name>;
Revogação de autorizações delegadas¶
Um usuário pode revogar o consentimento de uma integração específica. Isto tem o efeito de revogar qualquer token de acesso associado com a integração.
Para revogar o consentimento do usuário para uma determinada integração, execute o comando ALTER USER … REMOVE DELEGATED AUTHORIZATIONS.
Nota
Somente administradores de segurança (ou seja, usuários com a função SECURITYADMIN) ou superior podem executar este comando SQL.
ALTER USER <username>
REMOVE DELEGATED AUTHORIZATIONS
FROM SECURITY INTEGRATION <integration_name>
Para revogar o consentimento do usuário associado a uma função específica, inclua o parâmetro OF ROLE role_name
na instrução:
ALTER USER <username>
REMOVE DELEGATED AUTHORIZATION OF ROLE <role_name>
FROM SECURITY INTEGRATION <integration_name>
Onde:
username
Especifica o usuário cujo consentimento você está revogando.
role_name
Especifica a função associada com o token de acesso.
integration_name
Especifica a integração associada com os tokens de acesso para um cliente específico.
Por exemplo, remova o consentimento do usuário para a função CUSTOM1 do usuário JANE.SMITH para a integração MYINT:
ALTER USER jane.smith
REMOVE DELEGATED AUTHORIZATION OF ROLE custom1
FROM SECURITY INTEGRATION myint;