Uso do Snowflake OAuth para aplicativos locais¶
O Snowflake OAuth é implementado criando uma integração de segurança que define uma interface entre o Snowflake como o servidor de autorização do OAuth e o aplicativo que está autenticando em nome de um usuário usando o fluxo de código de autorização do OAuth. O Snowflake OAuth é uma opção de autenticação forte porque o aplicativo não precisa armazenar ou gerenciar segredos e você não precisa configurar um provedor de identidade de terceiros como o External OAuth.
Para simplificar como um aplicativo local (isto é, um aplicativo de desktop) usa o Snowflake OAuth para ser autenticado, sua conta tem uma integração de segurança integrada chamada SNOWFLAKE$LOCAL_APPLICATION. Como a integração de segurança já existe, se um aplicativo local usa um cliente Snowflake, como o driver Python ou o Snowflake CLI, o aplicativo pode se autenticar no Snowflake definindo uma propriedade ou parâmetro do cliente. Nenhuma outra configuração é necessária. A integração incorporada também simplifica a configuração para aplicativos locais que chamam os pontos de extremidade do OAuth diretamente, em vez de usar um cliente Snowflake.
Um administrador pode alterar os parâmetros da integração SNOWFLAKE$LOCAL_APPLICATION para ajustar o comportamento, como especificar por quanto tempo os tokens de acesso e de atualização do OAuth são válidos.
O Snowflake OAuth para aplicativos locais tem as seguintes vantagens adicionais:
Ao contrário das integrações do Snowflake OAuth criadas pelo usuário, a troca de sessão dentro da função é compatível.
Isso é uma substituição direta para aplicativos que atualmente usam apenas senhas para autenticar usuários. O Snowflake está descontinuando senhas de fator único; portanto, o Snowflake OAuth para aplicativos locais oferece um caminho para usar uma forma mais segura de autenticação sem exigir muita configuração.
Nota
A integração de segurança SNOWFLAKE$LOCAL_APPLICATION está sendo implementada gradualmente em todas as contas. Para determinar se essa integração incorporada existe em sua conta, execute o seguinte comando:
SHOW SECURITY INTEGRATION LIKE 'SNOWFLAKE$LOCAL_APPLICATION';
Configuração da integração do Snowflake OAuth¶
A integração de segurança SNOWFLAKE$LOCAL_APPLICATION incorporada pertence ao sistema, mas pode ser configurada por administradores de segurança (ou seja, usuários com a função de sistema SECURITYADMIN).
Os administradores de segurança podem configurar os seguintes parâmetros da integração de segurança:
Parâmetro |
Descrição |
|---|---|
|
Controla se a integração está habilitada. Se a integração estiver desabilitada, os aplicativos locais deverão usar um método de autenticação diferente. |
|
Controla se o servidor de autorização emite tokens de atualização. |
|
Define a duração da validade dos tokens de atualização. |
|
Controla se o servidor de autorização emite tokens de atualização de uso único. |
|
Define a duração da validade dos tokens de acesso. |
Por exemplo, para modificar a integração de segurança integrada para que o servidor de autorização comece a emitir tokens de atualização de uso único, execute os seguintes comandos:
USE ROLE SECURITYADMIN;
ALTER SECURITY INTEGRATION SNOWFLAKE$LOCAL_APPLICATION
SET OAUTH_SINGLE_USE_REFRESH_TOKENS_REQUIRED = TRUE;
Para obter mais informações sobre como definir esses parâmetros, consulte ALTER SECURITY INTEGRATION.
Controle da frequência de login¶
Quando OAUTH_ISSUE_REFRESH_TOKENS = TRUE, os aplicativos podem usar tokens de atualização para obter novos tokens de acesso sem solicitar que os usuários façam login novamente. Os usuários só precisam se autenticar novamente quando o token de atualização expirar após a duração especificada pelo parâmetro OAUTH_REFRESH_TOKEN_VALIDITY.
Configuração de um aplicativo local para usar o Snowflake OAuth¶
Esta seção fornece os detalhes que um desenvolvedor precisa para configurar um aplicativo local para autenticação com o Snowflake OAuth. Os seguintes tipos de aplicativos locais podem ser autenticados usando a integração incorporada:
Um aplicativo local que usa um cliente Snowflake como o driver Python ou Snowflake CLI. Consulte Aplicativos que usam um cliente Snowflake.
Um aplicativo local que faz solicitações REST diretamente para o ponto de extremidade de autorização de OAuth e o ponto de extremidade de token, sem usar um cliente Snowflake. Consulte Aplicativos que chamam pontos de extremidade do OAuth diretamente.
Aplicativos que usam um cliente Snowflake¶
Quando um aplicativo local usa um cliente Snowflake como o driver Snowflake ODBC, ele pode ser autenticado usando o Snowflake OAuth definindo a opção de conexão authenticator como oauth_authorization_code. Não é necessário desenvolvimento adicional.
Pré-requisito¶
Com o Snowflake OAuth para aplicativos locais, o cliente Snowflake deve ser capaz de abrir o navegador Web do usuário. Por esse motivo, tanto o cliente Snowflake quanto o aplicativo local que o utiliza devem estar instalados na máquina do usuário. O Snowflake OAuth para aplicativos locais não funciona se o cliente Snowflake for utilizado por código executado em um servidor.
Clientes compatíveis¶
Seu aplicativo local pode usar os seguintes clientes Snowflake para autenticar com o Snowflake OAuth para aplicativos locais:
Cliente |
Versão mínima exigida |
Configuração obrigatória |
|---|---|---|
.NET |
v4.8.0 |
Defina |
Go |
v1.14.1 |
Defina |
JDBC |
v3.24.1 |
Defina |
Node.js |
v2.1.0 |
Defina |
ODBC |
v3.9.0 |
|
Python |
v3.16.0 |
Passe |
Snowflake CLI |
v3.8.1 |
Adicione a opção |
SnowSQL |
v1.4.0 |
Adicione o parâmetro |
Aplicativos que chamam pontos de extremidade do OAuth diretamente¶
Seu aplicativo local pode usar o Snowflake OAuth fazendo solicitações para os pontos de extremidade de autorização e de token do Snowflake como servidor de autorização. Você não precisa usar um cliente Snowflake. O aplicativo envia uma solicitação ao ponto de extremidade de autorização do Snowflake para autenticar o usuário e receber um código de autorização e, em seguida, envia uma solicitação ao ponto de extremidade de token para trocar esse código por um token de acesso.
Para obter mais informações sobre como fazer solicitações REST aos pontos de extremidade de autorização e token do Snowflake, consulte Chamada dos pontos de extremidade do OAuth.
Requisitos para solicitações¶
As solicitações REST do seu aplicativo aos pontos de extremidade de autorização e token devem estar em conformidade com os seguintes requisitos:
O URL de redirecionamento na solicitação ao ponto de extremidade de autorização deve ser
http://127.0.0.1[:port][/path]. Ou seja, seu aplicativo local deve estar escutando em um endereço de loopback para o código de autorização retornado pelo Snowflake como o servidor de autorização.As solicitações aos pontos de extremidade de autorização e token devem implementar a Proof Key for Code Exchange (PKCE). Para obter mais informações, consulte Proof Key for Code Exchange.
Ao chamar o ponto de extremidade de token para trocar um código de autorização por um token de acesso, o aplicativo deve fornecer o ID e o segredo do cliente adequado. Esse requisito varia ligeiramente, dependendo de como você está enviando essas credenciais do cliente:
Se você enviar as credenciais do cliente no cabeçalho da solicitação, o ID do cliente deverá ser
LOCAL_APPLICATIONe o segredo do cliente deverá serLOCAL_APPLICATION.Se você enviar as credenciais do cliente no corpo POST, o ID do cliente deverá ser
LOCAL_APPLICATION. A integração incorporada configura o aplicativo local como um cliente público; portanto, o segredo do cliente não é necessário se você fornecer o ID do cliente comoclient_id=LOCAL_APPLICATIONno corpo de POST.
Notas de uso¶
Cada conta tem uma integração SNOWFLAKE$LOCAL_APPLICATION; portanto, essa integração não é replicada. A configuração da integração incorporada é exclusiva para cada conta.