Visão geral de External OAuth

Este tópico ensina como configurar servidores OAuth externos que utilizam OAuth 2.0 para acessar o Snowflake.

O OAuth externo integra o servidor OAuth 2.0 do cliente para fornecer uma experiência SSO sem interrupção, permitindo o acesso do cliente externo ao Snowflake.

O Snowflake oferece suporte aos seguintes servidores de autorização externos, clientes personalizados e aplicativos de parceiros:

Após configurar o servidor External OAuth de sua organização, que inclui quaisquer mapeamentos necessários de Escopos OAuth 2.0 para as funções do Snowflake, o usuário pode se conectar ao Snowflake de forma segura e programática sem ter que informar nenhum fator ou método adicional de autenticação ou autorização. O acesso do usuário aos dados do Snowflake depende tanto de sua função como da integração da função ao token de acesso para a sessão. Para obter mais informações, consulte Escopos (neste tópico).

Casos de uso e benefícios

  1. O Snowflake delega a emissão do token a um servidor de autorização dedicado para garantir que o cliente OAuth e o usuário se autentiquem corretamente. O resultado é o gerenciamento centralizado de tokens emitidos para o Snowflake.

  2. Os clientes podem integrar suas políticas de autenticação (por exemplo, multifator, sub-rede, biometria) e autorização (por exemplo, sem aprovação, aprovação do gerente) no servidor de autorização. O resultado é uma maior segurança que leva a uma proteção de dados mais robusta, apresentando desafios para o usuário. Se o usuário não passar no(s) desafio(s) da política, a sessão do Snowflake não é instanciada, e o acesso aos dados do Snowflake não ocorre.

  3. Para clientes programáticos que podem acessar o Snowflake e usuários que só iniciam suas sessões do Snowflake através de External OAuth, nenhuma configuração adicional de autenticação (ou seja, definição de uma senha) é necessária no Snowflake. O resultado é que contas de serviço ou usuários usados exclusivamente para acesso programático só poderão usar os dados do Snowflake quando passarem pelo serviço External OAuth configurado.

  4. Os clientes podem se autenticar no Snowflake sem acesso ao navegador, permitindo fácil integração com o servidor External OAuth.

  5. A integração do Snowflake com servidores External OAuth não depende da nuvem.

    • Não importa se o servidor de autorização existe na nuvem de um provedor de nuvem ou se o servidor de autorização está no local. O resultado é que os clientes têm muitas opções em termos de configuração do servidor de autorização para interagir com o Snowflake.

Fluxo de trabalho geral

Para cada um dos provedores de identidade com suporte, o fluxo de trabalho do OAuth relativo aos servidores de autorização External OAuth pode ser resumido da seguinte forma. Note que o primeiro passo só ocorre uma vez e os passos restantes ocorrem a cada tentativa de acesso aos dados do Snowflake.

workflow overview
  1. Configure seu servidor de autorização External OAuth em seu ambiente e a integração da segurança no Snowflake para estabelecer uma confiança.

  2. Um usuário tenta acessar os dados do Snowflake através de seu aplicativo de business intelligence, e o aplicativo tenta verificar o usuário.

  3. Na verificação, o servidor de autorização envia um Web Token JSON (ou seja, token OAuth) para o aplicativo do cliente.

  4. O driver do Snowflake passa uma cadeia de conexão ao Snowflake com o token OAuth.

  5. O Snowflake valida o token OAuth.

  6. O Snowflake realiza uma pesquisa de usuário.

  7. Na verificação, o Snowflake instancia uma sessão para o usuário acessar dados no Snowflake com base em sua função.

Escopos

O parâmetro de escopo no servidor de autorização limita as operações e funções permitidas pelo token de acesso e o que o usuário pode acessar após instanciar uma sessão do Snowflake.

Observe que as funções ACCOUNTADMIN, ORGADMIN e SECURITYADMIN estão bloqueadas por padrão. Se for necessário usar uma ou mais dessas funções, use o comando ALTER ACCOUNT para definir o parâmetro de conta EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST como FALSE.

  • Para Okta, PingFederate e personalizado, use o padrão de escopo de funções na tabela a seguir.

  • Para Azure AD, consulte Etapa de pré-requisito: determinar o fluxo OAuth no Azure AD

  • Se você não quiser administrar as funções do Snowflake em seu servidor External OAuth, passe o valor estático de SESSION:ROLE-ANY no atributo de escopo do token.

A seguinte tabela resume os escopos do External OAuth. Note que se você não definir um escopo, a tentativa de conexão ao Snowflake falhará.

Parâmetro de conexão de escopo/função

Descrição

session:role-any

Faz o mapeamento para a função ANY no Snowflake.

Use este escopo se a função padrão do usuário no Snowflake for desejável.

O parâmetro da integração de segurança external_oauth_any_role_mode deve ser configurado para habilitar a função ANY para um determinado provedor de OAuth externo. Para obter os detalhes de configuração, consulte a seção da função ANY em Okta, Azure AD, PingFederate ou personalizado.

Note que, com uma integração do Power BI com o Snowflake, um usuário do PowerBI não pode mudar de função usando esse escopo.

session:role:custom_role

Mapeado para uma função personalizada do Snowflake. Por exemplo, se sua função personalizada for ANALYST, seu escopo é session:role:analyst.

session:role:public

Mapeado para a função PUBLIC do Snowflake.

Uso de funções secundárias com External OAuth

O Snowflake suporta o uso de funções secundárias com External OAuth.

OAuth Snowflake não oferece suporte à mudança das funções na sessão para funções secundárias.

Para obter mais informações, consulte:

Configuração do suporte do External OAuth

Snowflake oferece suporte ao uso de aplicativos de parceiros e clientes personalizados que oferecem suporte a OAuth externo.

Consulte a lista abaixo se você precisar configurar aplicativos de parceiros ou clientes personalizados:

OAuth e funções secundárias

O Snowflake suporta o uso de funções secundárias com External Oauth.

Para obter mais informações, consulte Uso de funções secundárias com External OAuth.

Códigos de erro

Consulte a tabela abaixo para obter descrições de códigos de erro associados a OAuth externos:

Código de erro

Erro

Descrição

390318

OAUTH_ACCESS_TOKEN_EXPIRED

O token de acesso OAuth expirou. {0}

390144

JWT_TOKEN_INVALID

O token JWT é inválido.

Solução de problemas

  • Use a função SYSTEM$VERIFY_EXTERNAL_OAUTH_TOKEN para determinar se seu token de acesso do External OAuth é válido ou precisa ser gerado novamente.

  • Se você encontrar uma mensagem de erro associada a uma tentativa de login do OAuth externo com falha e a mensagem de erro tiver um UUID, você pode pedir a um administrador com um privilégio MONITOR atribuído a sua função para usar o UUID da mensagem de erro para obter uma descrição mais detalhada do erro usando a função SYSTEM$GET_LOGIN_FAILURE_DETAILS.