Visão geral do Snowflake OAuth

O Snowflake OAuth utiliza o serviço Snowflake OAuth integrado para fornecer uma autenticação baseada em OAuth.

Este tópico descreve o Snowflake OAuth e como usar o Snowflake como um recurso OAuth e servidor de autorização para acessar os dados do Snowflake com segurança.

O OAuth Snowflake utiliza o serviço OAuth integrado do Snowflake e suporta os seguintes aplicativos:

Fluxo de autorização do Snowflake OAuth

O fluxo de autorização do OAuth é o seguinte:

Fluxo de trabalho do Snowflake OAuth
  1. No cliente, o usuário tenta se conectar ao Snowflake usando OAuth.

    O aplicativo envia um pedido de autorização para o servidor de autorização do Snowflake, que por sua vez exibe uma tela de autorização que pede ao usuário que autorize o acesso.

  2. O usuário envia o nome de login e a senha do Snowflake, e por sua vez é apresentado a uma tela de consentimento para permitir ao cliente acesso ao Snowflake usando uma função específica em uma sessão do usuário (por exemplo, SYSADMIN ou CUSTOM_ROLE1).

    O usuário envia o consentimento para usar a função específica em uma sessão.

    O servidor de autorização do Snowflake envia um código de autorização de volta para o cliente.

  3. O cliente envia o código de autorização de volta ao servidor de autorização do Snowflake para solicitar um token de acesso e, opcionalmente, um token de atualização que permite que o cliente obtenha novos tokens de acesso.

    O servidor de autorização do Snowflake aceita o código de autorização e fornece ao cliente um token de acesso específico aos recursos do usuário no servidor de recursos do Snowflake. Com base nas configurações da solicitação de autorização, o servidor de autorização emite um token de atualização para obter novos tokens de acesso vinculados ao recurso específico.

  4. O cliente envia o token de acesso para o servidor de recursos do Snowflake.

    O servidor de recursos reconhece o token de acesso válido e cria uma sessão do usuário com a função autorizada. O cliente agora tem acesso aos recursos do Snowflake limitado pela função especificada pelo token de acesso.

    Por padrão, o Snowflake impede a autenticação das funções ACCOUNTADMIN, ORGADMIN, GLOBALORGADMIN e SECURITYADMIN. Para permitir a autenticação dessas funções privilegiadas, use o comando ALTER ACCOUNT para definir o parâmetro de conta OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST como FALSE.

Os tokens de acesso têm uma vida curta; normalmente 10 minutos. Quando o token de acesso expirar, o cliente pode enviar um token de atualização para obter novos tokens de acesso. Um token de atualização é enviado ao servidor de autorização do Snowflake para solicitar um novo token de acesso a cada vez que o token de acesso atual expira (Etapas 3-6). Se a integração estiver configurada para impedir o envio de tokens de atualização, o usuário deverá repetir as etapas acima para reautorizar o cliente. Se você deseja limitar o risco representado por tokens de longa duração em seu fluxo OAuth do Snowflake, pode usar tokens de atualização de uso único.

Tokens de atualização de uso único

Se tokens de atualização de uso único forem utilizados, cada um deles poderá ser usado apenas uma vez, após o qual um novo token de atualização será emitido. Cada token de atualização é válido pela duração configurada para a integração de segurança.

Para saber mais sobre tokens de atualização de uso único, consulte Tokens de atualização de uso único para integrações de segurança do OAuth no Snowflake.

Aplicativos de parceiros

Para configurar o suporte, consulte Configuração do Snowflake OAuth para aplicativos de parceiros.

Para aprender a usar o OAuth sem atravessar a internet pública, consulte Aplicativos de parceiros.

Clientes personalizados

O Snowflake suporta clientes personalizados configurados por sua organização. Para configurar o suporte, consulte Configuração do Snowflake OAuth para clientes personalizados.

Políticas de redes

Você pode integrar uma política de rede dedicada apenas com o Snowflake OAuth. A integração de segurança do OAuth externo não suporta a definição de uma política de redes separada, mas você ainda pode usar uma política de redes geral que se aplica a toda a conta Snowflake.

Nota

Você pode especificar uma política de redes apenas para clientes personalizados e Looker. As integrações de segurança para outros aplicativos de parceiros não oferecem suporte a políticas de rede.

A integração de segurança do Snowflake OAuth tem um parâmetro network_policy para que a integração do Snowflake OAuth possa autenticar e autorizar os usuários sem adicionar estes endereços IP para acesso normal do usuário.

A criação de uma política de rede específica para a integração do Snowflake OAuth permite que a política de rede do Snowflake OAuth seja distinta de outras políticas de rede que possam se aplicar à conta do Snowflake. Portanto, a política de rede do Snowflake OAuth permite a autenticação e autorização dos usuários, como pretendido.

Uma política de redes aplicada a uma integração do Snowflake OAuth substitui uma política de redes aplicada a toda a conta Snowflake, mas é substituída por uma política de redes atribuída a um usuário.

Importante

Se for definida uma política de rede por usuário ou conta e você estiver usando um serviço que funciona em um local diferente (por exemplo, o serviço Microsoft Power BI), você não poderá se conectar ao Snowflake.

Depois de criar a integração de segurança do Snowflake OAuth, defina a política de rede do OAuth usando este comando:

ALTER SECURITY INTEGRATION <oauth_integration> SET NETWORK_POLICY = <oauth_network_policy>;
Copy

Para remover a política de rede do Snowflake OAuth, use este comando:

ALTER SECURITY INTEGRATION <oauth_integration> UNSET <oauth_network_policy>;
Copy

Onde:

<oauth_integration>

Especifica o nome da integração de segurança do Snowflake OAuth.

<oauth_network_policy>

Especifica a política de rede do Snowflake OAuth no Snowflake.

Para obter mais informações, consulte Controle do tráfego de rede com políticas de rede e ALTER SECURITY INTEGRATION.

Códigos de erro

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

Código de erro

Erro

Descrição

390302

OAUTH_CONSENT_INVALID

Problema ao gerar ou validar o consentimento para um determinado usuário.

390303

OAUTH_ACCESS_TOKEN_INVALID

O token de acesso fornecido usado quando se tenta criar uma sessão do Snowflake está expirado ou inválido.

390304

OAUTH_AUTHORIZE_INVALID_RESPONSE_TYPE

response_type inválido foi fornecido como parâmetro para o ponto de extremidade da autorização (o mais provável é que seja code).

390305

OAUTH_AUTHORIZE_INVALID_STATE_LENGTH

O parâmetro de estado fornecido como parâmetro para o ponto de extremidade da autorização excede 2048 caracteres.

390306

OAUTH_AUTHORIZE_INVALID_CLIENT_ID

A integração associada a uma identificação de cliente fornecida não existe.

390307

OAUTH_AUTHORIZE_INVALID_REDIRECT_URI

redirect_uri dado como parâmetro ao ponto de extremidade de autorização não corresponde ao redirect_uri da integração associada à client_id fornecida ou o redirect_uri não está devidamente formatado.

390308

OAUTH_AUTHORIZE_INVALID_SCOPE

O escopo solicitado não é válido ou os escopos solicitados não podem ser totalmente concedidos ao usuário.

390309

OAUTH_USERNAMES_MISMATCH

O usuário que você estava tentando autenticar é diferente do usuário vinculado ao token de acesso.

390311

OAUTH_AUTHORIZE_INVALID_CODE_CHALLENGE_PARAMS

O método do desafio de código ou o desafio de código está faltando, é inválido ou não tem suporte.

Além disso, os seguintes erros são obtidos do RFC e retornados no blob JSON gerado durante uma solicitação ou troca de tokens sem sucesso:

Erro

Descrição

invalid_client

Houve uma falha relacionada à autenticação do cliente, tal como o cliente ser desconhecido, não correspondência do segredo do cliente, etc.

invalid_grant

A concessão de autorização ou o token de atualização fornecido é inválido, expirado, revogado, não corresponde ao URI de redirecionamento usado na solicitação de autorização ou foi emitido para outro cliente.

unsupported_grant_type

Foi fornecido um tipo de concessão para que o Snowflake atualmente não oferece suporte (“refresh_token” e “authorization_code” são os dois únicos tipos de concessão com suporte no momento).

invalid_request

O pedido foi malformado ou não pôde ser processado.