Gerenciamento/uso da autenticação federada

Este tópico descreve como gerenciar e usar a autenticação federada uma vez configurada.

Neste tópico:

Gerenciamento de usuários com autenticação federada ativada

Gerenciamento de senhas de usuário do Snowflake

Com a autenticação federada habilitada para sua conta, o Snowflake ainda permite manter e usar as credenciais de usuário do Snowflake (nome de login e senha). Em outras palavras:

  • Os administradores de conta e segurança ainda podem criar usuários com senhas mantidas no Snowflake.

  • Os usuários ainda podem fazer login no Snowflake usando suas credenciais do Snowflake.

Entretanto, se a autenticação federada estiver habilitada para sua conta, a Snowflake recomenda não manter as senhas dos usuários no Snowflake. Em vez disso, as senhas dos usuários devem ser mantidas somente em seu IdP.

Se você criar um usuário sem senha (ou alterar um usuário existente e remover sua senha), isso desativará efetivamente a autenticação do Snowflake para o usuário. Sem uma senha no Snowflake, um usuário não pode fazer login usando a autenticação do Snowflake e deve usar a autenticação federada. Note que você não pode usar a interface da Web do Snowflake para criar usuários sem senhas ou remover senhas de usuários existentes. Você deve usar CREATE USER ou ALTER USER.

Especificamente, recomendamos desativar a autenticação do Snowflake para todos os usuários não-administradores.

Importante

A propriedade do usuário MUST_CHANGE_PASSWORD não se aplica à autenticação federada e não deve ser usada. Em particular, se você optar por não manter senhas no Snowflake para usuários, certifique-se de que essa propriedade esteja definida como FALSE para esses usuários.

Além disso, você deve manter pelo menos um administrador de conta Snowflake com uma senha Snowflake. Isso garante que um administrador de conta possa acessar o Snowflake o tempo todo para gerenciar a autenticação federada e solucionar quaisquer problemas que ocorram.

Desativação e descarte de usuários

Como administrador de segurança ou conta no Snowflake, você pode achar necessário descartar ou, mais provavelmente, desativar um usuário. Os usuários que forem descartados ou desativados no Snowflake ainda poderão entrar em suas contas Okta, mas receberão uma mensagem de erro quando tentarem se conectar ao Snowflake. Você deve recriar ou habilitar o usuário antes que ele possa fazer login.

Você pode descartar/criar e desabilitar/habilitar usuários usando ou a interface da Web do Snowflake ou os comandos SQL equivalentes.

Uso de SSO com aplicativos clientes que se conectam ao Snowflake

Com um IdP configurado para sua conta, o Snowflake oferece suporte usando SSO para conexão e autenticação com os seguintes clientes fornecidos pelo Snowflake:

SnowSQL

v1.1.43 ou superior

Conector Python

v1.4.8 ou superior

Driver JDBC

v3.2.7 ou superior

Driver ODBC

v2.13.11 ou superior

Driver .NET

v1.0.13 ou superior

Driver Node.js

v1.6.0 ou superior (para SSO baseado em navegador); v1.6.1 ou superior (para autenticação SSO nativa por meio do Okta)

Go Driver

v1.1.5 ou superior

O Snowflake oferece suporte a dois métodos de autenticação:

  • SSO baseado em navegador

  • SSO programático (somente para Okta)

Importante

Ao utilizar SSO com aplicativos clientes que se conectam ao Snowflake, os usuários devem inserir suas credenciais de login quando solicitados; entretanto, por razões de segurança, essas credenciais nunca são processadas por meio do cliente. Em vez disso, as credenciais são enviadas ao IdP para autenticação e o IdP envia de volta uma resposta SAML válida que permite ao cliente iniciar uma sessão do Snowflake.

SSO baseado em navegador

Se os usuários tiverem a versão necessária (ou superior) dos clientes fornecidos pelo Snowflake instalada, eles podem usar o SSO baseado em navegador para fazer login no Snowflake.

Como funciona o SSO baseado em navegador

Quando um aplicativo cliente é configurado para usar SSO baseado em navegador, o aplicativo usa o seguinte fluxo de trabalho para autenticação do usuário:

  1. O aplicativo inicia o navegador da Web padrão no sistema operacional do usuário ou abre uma nova guia/janela do navegador, exibindo a página de autenticação do IdP.

  2. O usuário insere suas credenciais IdP (nome de usuário e senha).

  3. Se o usuário estiver inscrito na MFA (autenticação multifator) no Snowflake, ele será solicitado a digitar a senha de MFA (enviada de outro dispositivo) ou a confirmar a autenticação (no outro dispositivo).

  4. Após o IdP ter autenticado as credenciais do usuário, o navegador exibe uma mensagem de sucesso. O usuário pode então fechar a guia/janela do navegador (ela não precisa estar aberta após a autenticação), retornar ao aplicativo e usar a sessão Snowflake que foi iniciada.

Requisitos para uso de SSO baseado em navegador

Com SSO baseado em navegador, o cliente fornecido pelo Snowflake (por exemplo, o driver Snowflake JDBC) precisa ser capaz de abrir o navegador da Web do usuário. Por esse motivo, o cliente fornecido pelo Snowflake e o aplicativo cliente que o utiliza precisam ser instalados na máquina do usuário. O SSO baseado em navegador não funciona se o cliente fornecido pelo Snowflake for usado por código que roda em um servidor.

Configuração de SSO baseado em navegador

Para configurar o SSO baseado em navegador para autenticação, defina o parâmetro/opção de login authenticator para externalbrowser para o cliente.

Cliente

Instruções

SnowSQL

Especifique o sinalizador de linha de comando --authenticator externalbrowser ao iniciar o cliente.

Python

Passe authenticator='externalbrowser' para a função snowflake.connector.connect().

JDBC

Defina authenticator=externalbrowser na cadeia de caracteres de conexão para o driver.

ODBC (Linux/macOS)

Defina authenticator=externalbrowser no arquivo odbc.ini.

ODBC (Windows)

Na ferramenta ODBC Data Source Administrator, edite o DSN para o Snowflake e defina Authenticator para externalbrowser.

.NET

Defina authenticator=externalbrowser na cadeia de caracteres de conexão para o driver.

Node.js

Defina a opção authenticator=EXTERNALBROWSER ao chamar a função snowflake.createConnection.

Go

Defina authenticator=externalbrowser na cadeia de caracteres de conexão para o driver.

Uso do cache de conexão para minimizar o número de tentativas de autenticação — Opcional

Sempre que um aplicativo cliente estabelece uma nova conexão com o Snowflake, o usuário é solicitado a se autenticar. Isso pode resultar em múltiplas solicitações de autenticação se o aplicativo cliente estabelecer uma conexão várias vezes.

Para minimizar o número de vezes que um usuário é solicitado a se autenticar, o administrador da conta pode habilitar o cache de conexão.

Quando o cache de conexão é ativado, o aplicativo cliente armazena um token de conexão para uso em conexões subsequentes. Por segurança, o token de conexão é armazenado no keystore do sistema operacional. Antes de ativar o cache de conexão, consulte sua equipe de segurança para determinar se isso está de acordo com as políticas de segurança.

Dica

O cache de conexão pode ser combinado com o cache de token MFA.

Para obter mais informações sobre como combinar esses dois recursos, consulte Uso do armazenamento em cache de tokens MFA para minimizar o número de tentativas durante a autenticação — opcional.

O Snowflake oferece suporte ao cache de conexão com os seguintes drivers e conectores em macOS e Windows (atualmente, este recurso não é compatível com Linux):

  • Driver Go versão 1.6.15 (ou posterior)

  • Driver JDBC versão 3.12.8 (ou posterior)

  • Driver ODBC versão 2.21.2 (ou posterior)

  • Conector Snowflake para Python 2.2.8 (ou posterior)

Para permitir o cache de conexão:

  1. Defina o parâmetro no nível da conta ALLOW_ID_TOKEN como true:

    alter account set allow_id_token = true;
    
    Copy

    Nota

    Você deve ser um administrador de conta (ou seja, um usuário com a função ACCOUNTADMIN) para permitir o cache de conexão.

  2. Adicione o pacote ou as bibliotecas necessárias para o driver ou conector:

    • Se você estiver usando o conector Snowflake para Python, instale o pacote opcional de token de autenticação executando:

      pip install "snowflake-connector-python[secure-local-storage]"
      
      Copy

      Você deve inserir os colchetes ([ e ]) como mostrado no comando. Os colchetes especificam a parte extra do pacote que deve ser instalada.

      Use aspas ao redor do nome do pacote, como mostrado, para evitar que os colchetes sejam interpretados como um curinga.

      Se você precisar instalar outros extras (por exemplo, pandas para usando as APIs do conector Python para Pandas), use uma vírgula entre os extras:

      pip install "snowflake-connector-python[secure-local-storage,pandas]"
      
      Copy
    • Para o driver Snowflake JDBC, consulte Adição de classes JNA a seu classpath.

SSO nativo — Somente Okta

Se seu IdP for Okta, o Snowflake oferece suporte à autenticação nativa por meio do Okta. Este método de autenticação é útil quando se está usando SSO com um cliente que não tem acesso a um navegador da Web (por exemplo, conectando-se programaticamente por meio do conector Python ou por meio do driver JDBC ou ODBC).

Nota

Desative o Okta MFA para o usuário que usa autenticação nativa SSO com os drivers do cliente. Consulte seu administrador Okta para obter mais informações.

Para habilitar o SSO nativo por meio do Okta, defina o parâmetro/opção de login authenticator para o cliente para o ponto de extremidade do URL Okta de sua conta Okta (fornecido pelo Okta), normalmente na forma de https://<nome_de_conta_okta>.okta.com:

Cliente

Instruções

SnowSQL

Especifique o sinalizador de linha de comando --authenticator https://<nome_de_conta_okta>.okta.com ao iniciar o cliente.

Python

Passe authenticator='https://<nome_de_conta_okta>.okta.com' para a função snowflake.connector.connect().

JDBC

Defina authenticator=https://<nome_de_conta_okta>.okta.com na cadeia de caracteres de conexão para o driver.

ODBC (Linux/macOS)

Defina authenticator=https://<nome_de_conta_okta>.okta.com no arquivo odbc.ini.

ODBC (Windows)

Na ferramenta ODBC Data Source Administrator, edite o DSN para o Snowflake e defina Authenticator para https://<nome_de_conta_okta>.okta.com.

.NET

Defina authenticator=https://<nome_de_conta_okta>.okta.com na cadeia de caracteres de conexão para o driver.

Node.js

Defina a opção authenticator para https://<nome_de_conta_okta>.okta.com ao chamar snowflake.createConnection.

Atualização para Okta Identity Engine

Se você estiver atualizando do Okta Classic para o Okta Identity Engine for SSO nativo, será necessário atualizar os drivers do cliente Snowflake antes da atualização.

Se você encontrar erros HTTP 429 após a atualização, é provável que tenha atingido o limite de taxa imposto pelo ponto de extremidade de autenticação usado pelos drivers de cliente mais recentes. Para obter mais detalhes, consulte Erros HTTP 429 (neste tópico).

Erros HTTP 429

O Okta Identity Engine exige comunicação por meio de seu ponto de extremidade de autenticação (/api/v1/authn), que atualmente tem um limite de taxa de 20 solicitações por usuário por 5 segundos. Para oferecer suporte ao Okta Identity Engine, os drivers mais recentes do cliente Snowflake usam esse ponto de extremidade de autenticação e, portanto, estão sujeitos ao limite de taxa. Se esse limite for proibitivo, entre em contato com o Suporte da Okta para aumentar o limite de taxa do ponto de extremidade de autenticação.

Os drivers do cliente Snowflake mudaram para o ponto de extremidade de autenticação nas seguintes versões:

  • Go: 1.6.20

  • JDBC: 3.13.22

  • .NET: 2.0.20

  • Node.js: 1.6.21

  • ODBC: 2.25.5

  • Python: 2.7.12

  • SnowSQL: 1.2.24

  • SQLAlchemy: 1.4.6

Uso de SSO com MFA

O Snowflake oferece suporte ao uso de MFA em conjunto com SSO para fornecer níveis adicionais de segurança:

  • Usuários individuais no Snowflake podem se inscrever no MFA. Se um usuário Snowflake estiver inscrito no MFA e usar SSO para se conectar, o fluxo de trabalho de login MFA é iniciado dentro do fluxo de trabalho SSO e é necessário para completar a autenticação com sucesso. Para obter mais informações sobre MFA no Snowflake, consulte Autenticação multifator (MFA).

    Nota

    Para conectar-se por meio do SSO Okta com MFA, o Snowflake requer o uso de SSO baseado em navegador. Se você estiver usando SSO nativo para Okta, MFA não é suportado.

  • Além disso, seu IdP também pode oferecer suporte a MFA, mas isso é separado de MFA no Snowflake e deve ser configurado separadamente por meio de seu IdP. Se o MFA estiver habilitado para seu IdP, o IdP determina o fluxo de trabalho. Para determinar se seu IdP oferece suporte ao MFA e como ele é implementado, consulte a documentação para seu IdP.

  • Com certos clientes fornecidos pelo Snowflake, você pode armazenar tokens MFA por até quatro horas. Para obter mais informações, consulte Uso do armazenamento em cache de tokens MFA para minimizar o número de tentativas durante a autenticação — opcional.

Uso de SSO com vários valores de audiência

O Snowflake oferece suporte a múltiplos valores de audiência (ou seja, audiência ou campos de restrição de audiência) na asserção SAML 2.0 do provedor de identidade para o Snowflake.

Essa funcionalidade é compatível com URLs para acessar o Snowflake como valores de audiência. Os URLs para múltiplas contas Snowflake são suportados porque cada conta tem um URL com um único identificador de conta para acessar o Snowflake. Além disso, o Snowflake aceita os nomes de domínio da conta e os URLs para acessar o Snowflake usando conectividade privada ao serviço Snowflake como valores de audiência.

Para obter mais detalhes sobre SSO e evitar a internet pública, consulte SSO com conectividade privada.

Atualmente, o Snowflake oferece suporte e aceita até quatro valores de audiência diferentes. Nenhuma configuração é necessária no Snowflake. Se for necessário incluir mais de quatro valores de audiência, entre em contato com o suporte Snowflake.

Para ajuda na configuração dos valores de audiência SAML 2.0, entre em contato com o administrador do provedor de identidade de sua organização.

Uso de SSO com conectividade privada

O Snowflake oferece suporte ao SSO com conectividade privada ao serviço Snowflake para contas Snowflake na Amazon Web Services (AWS), Microsoft Azure e Google Cloud Platform (GCP).

Para obter mais detalhes, consulte SSO com conectividade privada.