Visão geral 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:
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.
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.
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.
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.
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 rede¶
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. A política de rede do Snowflake OAuth não afeta outras políticas de rede na conta nem outras políticas de rede da conta afetam a política de rede do Snowflake OAuth. Portanto, a política de rede do Snowflake OAuth permite a autenticação e autorização dos usuários, como pretendido.
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>;
Para remover a política de rede do Snowflake OAuth, use este comando:
ALTER SECURITY INTEGRATION <oauth_integration> UNSET <oauth_network_policy>;
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 |
|
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 |
|
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. |