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:

Snowflake OAuth workflow
  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 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 for configurada para evitar o envio de tokens de atualização, o usuário deve repetir as etapas acima para reautorizar o cliente.

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.

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 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.