Configuração do Snowflake OAuth para aplicativos de parceiros¶
Este tópico explica como configurar o acesso do Snowflake OAuth ao Snowflake para aplicativos de parceiros Snowflake com suporte. Este processo requer a criação de uma integração, um objeto Snowflake de primeira classe que define a interface entre o Snowflake e um aplicativo ou serviço de terceiros.
Importante
Ao conectar-se ao Snowflake utilizando qualquer aplicativo de terceiros, a Snowflake recomenda que você verifique se o fluxo de integração utilizado pela aplicativo atende às suas exigências internas de segurança. Você pode entrar em contato diretamente com o parceiro para obter detalhes sobre seu fluxo de ponta a ponta utilizado para este recurso.
Nota
A troca de funções durante a sessão para funções secundárias não tem suporte com o Snowflake OAuth.
Se este comportamento for necessário com seu fluxo de trabalho OAuth, use External OAuth.
Para obter mais informações, consulte Uso de funções secundárias com External OAuth.
Atualmente, o Snowflake OAuth suporta os seguintes aplicativos:
Cliente |
Versão necessária do cliente |
Tipo de cliente |
---|---|---|
2019.1 ou superior |
Público |
|
6.20 ou superior |
||
Consulte a documentação Alation |
||
Consulte a documentação ThoughtSpot |
||
Consulte a documentação Collibra |
- 1
Se o Tableau Server estiver conectando com o Snowflake usando conectividade privada ao serviço Snowflake, você precisará usar uma integração de segurança personalizada em vez de uma integração desenvolvida para um aplicativo de parceiro. Para obter instruções, consulte Configuração do Snowflake OAuth para clientes personalizados. O Tableau Desktop continua a usar a integração do aplicativo do parceiro, independentemente se ele usa o URL privado.
- 2
O Looker suporta OAuth somente quando as instâncias hospedadas pelo Looker podem acessar a Internet pública. Observe que esta limitação não afeta as implementações do Looker hospedadas pelo cliente (ou seja, implementações no local). Clientes que usam conectividade privada ao serviço Snowflake podem ter problemas se tentarem usar OAuth e Looker com Snowflake. Entre em contato com o Looker em caso de dúvidas ou para obter mais detalhes.
Neste tópico:
Etapa 1: Configurar uma integração do Snowflake OAuth¶
Crie uma integração usando o comando CREATESECURITYINTEGRATION. Uma integração é um objeto Snowflake que fornece uma interface entre o Snowflake e serviços de terceiros, tais como um cliente que suporta Snowflake OAuth.
Nota
Somente administradores de conta (ou seja, usuários com a função de sistema ACCOUNTADMIN) ou uma função com o privilégio global CREATE INTEGRATION podem executar este comando SQL.
CREATE [ OR REPLACE ] SECURITY INTEGRATION [ IF NOT EXISTS ]
<name>
TYPE = OAUTH
ENABLED = { TRUE | FALSE }
OAUTH_CLIENT = <partner_application>
oauthClientParams
[ COMMENT = '<string_literal>' ]
Onde:
oauthClientParams
oauthClientParams ::= [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ] [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ] [ BLOCKED_ROLES_LIST = ('<role_name>', '<role_name>') ]
Bloqueio de funções específicas para o uso de integração¶
O parâmetro opcional BLOCKED_ROLES_LIST permite listar as funções do Snowflake que um usuário não pode consentir explicitamente em usar com a integração.
Por padrão, as funções ACCOUNTADMIN, SECURITYADMIN e ORGADMIN estão incluídas nesta lista e não podem ser removidas. Se você tiver uma necessidade comercial de permitir que os usuários usem o Snowflake OAuth com essas funções e se sua equipe de segurança permitir isso, entre em contato com o suporte Snowflake para solicitar que essas funções sejam permitidas para sua conta.
Controle da frequência de login¶
Quando um usuário tiver se autenticado com sucesso, o aplicativo do parceiro pode usar o token de atualização emitido para solicitar novos tokens de acesso de curta duração e não solicitar ao usuário que repita o processo de login até que o token de atualização expire. O parâmetro opcional OAUTH_REFRESH_TOKEN_VALIDITY especifica o período de tempo em que um token de atualização é válido (em segundos). Esta configuração pode ser usada para expirar o token de atualização periodicamente, forçando o usuário a repetir o processo de login.
Os valores mínimo, máximo e padrão com suporte para o parâmetro OAUTH_REFRESH_TOKEN_VALIDITY são os seguintes:
Aplicativo |
Mínimo |
Máximo |
Padrão |
---|---|---|---|
Tableau Desktop |
|
|
|
Tableau Server ou Tableau Online |
|
|
|
Se você tem uma necessidade comercial de baixar o valor mínimo ou aumentar o valor máximo, entre em contato com o suporte Snowflake para solicitar a mudança para sua conta.
Uso do redirecionamento do cliente com Snowflake OAuth para aplicativos de parceiro¶
O Snowflake oferece suporte para o uso do Redirecionamento do cliente com Snowflake OAuth para aplicativos de parceiros, incluindo o uso do Redirecionamento do cliente e do Snowflake OAuth com clientes Snowflake com suporte.
Para obter mais informações, consulte Redirecionamento de conexões do cliente.
Gerenciamento de políticas de rede¶
O Snowflake suporta políticas de rede para Snowflake OAuth. Para obter mais informações, consulte Políticas de rede.
Exemplos¶
Tableau Desktop
O exemplo seguinte cria uma integração do Snowflake OAuth com as configurações padrão:
CREATE SECURITY INTEGRATION td_oauth_int1 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_DESKTOP;Ver as configurações de integração usando DESCRIBE INTEGRATION:
DESC SECURITY INTEGRATION td_oauth_int1;O exemplo seguinte cria uma integração do Snowflake OAuth com tokens de atualização que expiram após 10 horas (36000 segundos). A integração bloqueia o início de uma sessão com SYSADMIN como a função ativa:
CREATE SECURITY INTEGRATION td_oauth_int2 TYPE = OAUTH ENABLED = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 36000 BLOCKED_ROLES_LIST = ('SYSADMIN') OAUTH_CLIENT = TABLEAU_DESKTOP;
Tableau Server ou Tableau Online
O exemplo seguinte cria uma integração do Snowflake OAuth com as configurações padrão:
CREATE SECURITY INTEGRATION ts_oauth_int1 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_SERVER;Ver as configurações de integração usando DESCRIBE INTEGRATION:
DESC SECURITY INTEGRATION ts_oauth_int1;O exemplo a seguir cria uma integração do Snowflake OAuth com tokens de atualização que expiram após 1 dia (86400 segundos). A integração bloqueia o início de uma sessão com SYSADMIN como a função ativa:
CREATE SECURITY INTEGRATION ts_oauth_int2 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_SERVER OAUTH_REFRESH_TOKEN_VALIDITY = 86400 BLOCKED_ROLES_LIST = ('SYSADMIN');
Etapa 2: Entrar no Snowflake a partir de um aplicativo de parceiro¶
Tableau¶
Siga as instruções fornecidas pela Tableau para conectar-se ao Snowflake usando o Snowflake OAuth.
Importante
Atualmente, aplicativos Tableau só podem autorizar a função padrão para um usuário; ou, se uma função padrão não estiver definida, então a função PUBLIC é usada como a função ativa para a sessão.
Looker¶
Siga os passos fornecidos pela Looker para conectar-se ao Snowflake usando o Snowflake OAuth.
Alation¶
Acesse a comunidade Alation e siga as instruções fornecidas pela Alation para conectar-se ao Snowflake usando o Snowflake OAuth.
ThoughtSpot¶
Acesse a documentação ThoughtSpot e siga as instruções para criar uma conexão com o Snowflake, que inclui uma etapa sobre como configurar o Snowflake OAuth.
Collibra¶
Acesse a documentação Collibra e siga as instruções fornecidas pela Collibra para se conectar ao Snowflake usando o Snowflake OAuth.
Gerenciamento do consentimento do usuário¶
Esta seção descreve como gerenciar autorizações delegadas, ou seja, o consentimento do usuário dado a um ou mais clientes associados às integrações do Snowflake.
Exibição de consentimentos do Snowflake OAuth¶
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>;
Revogar consentimento¶
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>
Onde:
username
Especifica o usuário cujo consentimento você está revogando.
integration_name
Especifica a integração associada com os tokens de acesso para um cliente específico.
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:
role_name
Especifica a função associada com o token de acesso.
Todos os tokens de acesso associados com a função são revogados.
Códigos de erro¶
Consulte em Códigos de erro uma lista de códigos de erro associados ao OAuth, bem como erros que são retornados no blob JSON, durante o fluxo de autorização, solicitação ou troca de tokens ou ao criar uma sessão do Snowflake após completar o fluxo OAuth.