Autenticação multifator (MFA)

O Snowflake suporta autenticação multifator (ou seja, MFA) para fornecer maior segurança no login para usuários que se conectam ao Snowflake. O suporte para MFA é fornecido como um recurso integrado do Snowflake, alimentado pelo serviço Duo Security, que é gerenciado completamente pelo Snowflake.

Os usuários não precisam inscrever-se separadamente no Duo ou realizar nenhuma tarefa, além de instalar o aplicativo Duo Mobile, que tem suporte em múltiplas plataformas de smartphones (iOS, Android, Windows, etc.). Consulte o Guia do usuário do Duo para mais informações sobre plataformas/dispositivos com suporte e como funciona a autenticação multifator do Duo.

A MFA é ativada para cada usuário; no entanto, neste momento, os usuários não estão automaticamente inscritos na MFA. Para utilizar a MFA, os próprios usuários devem se inscrever.

Atenção

No mínimo, a Snowflake recomenda fortemente que todos os usuários com a função ACCOUNTADMIN sejam obrigados a usar MFA.

Neste tópico:

Pré-requisito

O serviço do aplicativo Duo se comunica através da porta TCP 443.

Para garantir um comportamento consistente, atualize suas configurações de firewall para incluir o serviço do aplicativo Duo na porta TCP 443.

*.duosecurity.com:443
Copy

Para obter mais informações, consulte a documentação Duo.

Fluxo de login da MFA

O diagrama a seguir ilustra o fluxo geral de login para um usuário inscrito na MFA, independentemente da interface usada para conectar:

Fluxo de login da MFA

Inscrição de um usuário do Snowflake na MFA

Qualquer usuário Snowflake pode se inscrever na MFA através da interface da Web. Para obter mais informações, consulte Gerenciamento de seu perfil de usuário usando o Snowsight.

Troca de telefones usados para MFA

Instant Restore é um recurso do Duo que permite ao usuário fazer backup do aplicativo Duo antes de mudar para um novo telefone. Desde que um usuário do Snowflake faça backup de seu telefone antigo primeiro, ele pode usar o Instant Restore para permitir a autenticação no novo telefone sem interromper a MFA para o Snowflake.

Se um usuário não fizer backup do telefone antigo ou perder o telefone antigo, o administrador da conta Snowflake deve desativar a MFA para cada nome de usuário que usou o telefone antigo antes que a MFA possa ser reativada no novo telefone.

Gerenciamento da MFA para uma conta e usuários

No nível da conta, a MFA não requer gerenciamento. Ela é automaticamente habilitada para uma conta e está disponível para todos os usuários se inscreverem. Entretanto, o administrador da conta (ou seja, o usuário a quem foi concedida a função ACCOUNTADMIN do sistema) pode precisar desativar a MFA para um usuário, temporária ou permanentemente; por exemplo, se o usuário perder seu telefone ou mudar seu número de telefone e não conseguir fazer o login com MFA.

O administrador de conta pode usar as seguintes propriedades do comando ALTER USER para realizar estas tarefas:

  • MINS_TO_BYPASS_MFA

    Especifica o número de minutos para desativar temporariamente a MFA para o usuário para que ele possa entrar no sistema. Depois que o tempo passa, a MFA é aplicada e o usuário não pode entrar sem o token temporário gerado pelo aplicativo Duo Mobile.

  • DISABLE_MFA

    Desativa a MFA para o usuário, cancelando efetivamente sua inscrição. Talvez seja necessário atualizar o navegador para verificar se o usuário não está mais inscrito na MFA. Para usar a MFA novamente, o usuário deve se inscrever novamente.

    Nota

    DISABLE_MFA não é uma coluna em nenhuma tabela ou exibição do Snowflake. Depois que um administrador de conta executa o comando ALTER USER para definir DISABLE_MFA como TRUE, o valor para a propriedade EXT_AUTHN_DUO é automaticamente definido como FALSE.

    Para verificar se a MFA está desabilitada para um determinado usuário, execute uma instrução DESCRIBE USER e verifique o valor da propriedade EXT_AUTHN_DUO.

Conexão ao Snowflake com MFA

O login MFA é projetado principalmente para se conectar ao Snowflake através da interface da Web, mas também é totalmente com suporte pelo SnowSQL e por drivers Snowflake JDBC e ODBC.

Uso do armazenamento em cache de tokens MFA para minimizar o número de tentativas durante a autenticação — opcional

O armazenamento em cache de tokens MFA pode ajudar a reduzir o número de prompts que devem ser confirmados ao se conectar e autenticar no Snowflake, especialmente quando múltiplas tentativas de conexão são feitas dentro de um intervalo de tempo relativamente curto.

Um token MFA armazenado em cache é válido por até quatro horas.

O token MFA armazenado em cache é inválido se alguma das seguintes condições for preenchida:

  1. O parâmetro ALLOW_CLIENT_MFA_CACHING está definido como FALSE para a conta.

  2. O método de autenticação muda.

  3. As credenciais de autenticação mudam (ou seja, nome de usuário e/ou senha).

  4. As credenciais de autenticação não são válidas.

  5. O token armazenado em cache expira ou não é válido criptograficamente.

  6. O nome da conta associada ao token armazenado em cache muda.

O processo geral que o Snowflake usa para armazenar tokens MFA em cache é semelhante ao usado para armazenar tokens de conexão em cache para o login único federado baseado em navegador. O aplicativo cliente armazena o token MFA no keystore do sistema operacional do lado do cliente. Os usuários podem excluir o token MFA em cache do keystore a qualquer momento.

Snowflake oferece suporte ao cache de tokenMFA com os seguintes drivers e conectores em macOS e Windows. Este recurso não é suportado no Linux.

  • Versão do driver ODBC 2.23.0 (ou posterior).

  • Versão do driver JDBC 3.12.16 (ou posterior).

  • Conector Python para Snowflake versão 2.3.7 (ou superior).

O Snowflake recomenda consultar os responsáveis pela segurança interna e conformidade antes de habilitar o armazenamento de tokens MFA.

Dica

O armazenamento em cache de tokens MFA pode ser combinado com o armazenamento em cache de conexões no login único federado.

Para combinar estes dois recursos, certifique-se de que o parâmetro ALLOW_ID_TOKEN esteja definido para true em conjunto com o parâmetro ALLOW_CLIENT_MFA_CACHING.

Para ativar o armazenamento em cache de tokens MFA, complete as seguintes etapas:

  1. Como administrador de conta (ou seja, um usuário com a função ACCOUNTADMIN do sistema), defina o parâmetro ALLOW_CLIENT_MFA_CACHING para true para uma conta usando o comando ALTER ACCOUNT.

    ALTER ACCOUNT SET ALLOW_CLIENT_MFA_CACHING = TRUE;
    
    Copy
  2. Na cadeia de conexão do cliente, atualize o valor do autenticador para authenticator = username_password_mfa.

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

Para desativar o armazenamento em cache de tokens MFA, desabilite o parâmetro ALLOW_CLIENT_MFA_CACHING:

ALTER ACCOUNT UNSET ALLOW_CLIENT_MFA_CACHING;
Copy

Para encontrar todos os usuários que usam armazenamento em cache de token MFA como autenticação de segundo fator para fazer login, você pode executar a seguinte instrução SQL como administrador de conta (um usuário com a função ACCOUNTADMIN):

SELECT EVENT_TIMESTAMP,
       USER_NAME,
       IS_SUCCESS
  FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
  WHERE SECOND_AUTHENTICATION_FACTOR = 'MFA_TOKEN';
Copy

Uso de MFA com Snowsight

Para entrar no Snowsight com MFA:

  1. Entre no Snowsight.

  2. Insira suas credenciais (nome de login e senha do usuário).

  3. Se o Duo Push estiver ativado, você pode selecionar um método de notificação. Se Send Me a Push for selecionado, uma notificação push é enviada para seu aplicativo Duo Mobile. Ao receber a notificação, selecione Approve e você estará conectado ao Snowflake.

    Caixa de diálogo de seleção de MFA com as opções Envie-me um push, Ligue-me e Digite uma senha.

    Como mostrado acima, em vez de usar a notificação push, você também pode optar por:

    • Selecione Call Me para receber instruções de login por telefone para o dispositivo móvel registrado.

    • Selecione Enter a Passcode para fazer o login digitando manualmente uma senha fornecida pelo aplicativo Duo Mobile.

Uso de MFA com a interface da web Classic Console

Para fazer login no Classic Console com MFA:

  1. Aponte seu navegador para o URL de sua conta. Por exemplo: https://myorg-account1.snowflakecomputing.com.

  2. Insira suas credenciais (nome de login e senha do usuário).

  3. Se o Duo Push estiver ativado, uma notificação push é enviada para seu aplicativo Duo Mobile. Ao receber a notificação, selecione Approve e você estará conectado ao Snowflake.

    Caixa de diálogo de seleção de MFA com as opções Envie-me um push, Ligue-me e Digite uma senha.

    Como mostrado na captura de tela acima, em vez de usar a notificação push, você também pode optar por:

    • Selecione Call Me para receber instruções de login por telefone para o dispositivo móvel registrado.

    • Selecione Enter a Passcode para fazer o login digitando manualmente uma senha fornecida pelo aplicativo Duo Mobile.

Uso de MFA com SnowSQL

A MFA pode ser usada para conexão com o Snowflake através do SnowSQL. Por padrão, o mecanismo de autenticação Duo Push é usado quando um usuário é inscrito na MFA.

Para usar um código de acesso gerado pelo Duo em vez do mecanismo de push, os parâmetros de login devem incluir uma das seguintes opções de conexão:

--mfa-passcode <string> OR --mfa-passcode-in-password

Para obter mais detalhes, consulte SnowSQL (cliente CLI).

Uso de MFA com JDBC

A MFA pode ser usada para conexão com o Snowflake através do driver Snowflake JDBC. Por padrão, o mecanismo de autenticação Duo Push é usado quando um usuário é inscrito na MFA; não são necessárias alterações na cadeia de conexão JDBC.

Para usar um código de acesso gerado pelo Duo em vez do mecanismo push, um dos parâmetros a seguir deve ser incluído na cadeia de conexão JDBC:

passcode=<passcode_string> OR passcodeInPassword=on

Onde:

  • passcode_string é um código de acesso gerado pelo Duo para o usuário que está se conectando. Pode ser um código de acesso gerado pelo aplicativo Duo Mobile ou uma senha SMS.

  • Se passcodeInPassword=on, então a senha e o código de acesso são concatenados, na forma de <password_string><passcode_string>.

Para obter mais detalhes, consulte Driver JDBC.

Exemplos de cadeias de caracteres de conexão JDBC usando Duo

Cadeia de conexão JDBC para o usuário demo conectando à conta xy12345 (na região US West) usando um código de acesso Duo:

jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcode=123456
Copy

Cadeia de conexão JDBC para o usuário demo conectando à conta xy12345 (na região US West) usando um código de acesso Duo que está incorporado na senha:

jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcodeInPassword=on
Copy

Uso de MFA com ODBC

A MFA pode ser usada para conexão com o Snowflake através do driver Snowflake ODBC. Por padrão, o mecanismo de autenticação Duo Push é usado quando um usuário é inscrito na MFA; não são necessárias alterações nas configurações do ODBC.

Para usar um código de acesso gerado pelo Duo em vez do mecanismo push, um dos parâmetros a seguir deve ser especificado para o driver:

passcode=<passcode_string> OR passcodeInPassword=on

Onde:

  • passcode_string é um código de acesso gerado pelo Duo para o usuário que está se conectando. Pode ser um código de acesso gerado pelo aplicativo Duo Mobile ou uma senha SMS.

  • Se passcodeInPassword=on, então a senha e o código de acesso são concatenados, na forma de <password_string><passcode_string>.

Para obter mais detalhes, consulte Driver ODBC.

Uso da MFA com Python

A MFA pode ser usada para conexão com o Snowflake através do conector Snowflake Python. Por padrão, o mecanismo de autenticação Duo Push é usado quando um usuário é inscrito na MFA; não são necessárias alterações nas chamadas de API do Python.

Para usar um código de acesso gerado pelo Duo em vez do mecanismo push, um dos parâmetros a seguir deve ser especificado para o driver no método connect():

passcode=<passcode_string> OR passcode_in_password=True

Onde:

  • passcode_string é um código de acesso gerado pelo Duo para o usuário que está se conectando. Pode ser um código de acesso gerado pelo aplicativo Duo Mobile ou uma senha SMS.

  • Se passcode_in_password=True, então a senha e o código de acesso são concatenados, na forma de <password_string><passcode_string>.

Para obter mais detalhes, consulte a descrição do método connect() na seção Funções da documentação da API do Conector Python.

Códigos de erro MFA

A seguir estão os códigos de erro associados à MFA que podem ser retornados durante o fluxo de autenticação.

Os erros são exibidos a cada tentativa de login com falha. Os dados históricos também estão disponíveis em Snowflake Information Schema e Account Usage:

Código de erro

Erro

Descrição

390120

EXT_AUTHN_DENIED

A autenticação Duo Security é negada.

390121

EXT_AUTHN_PENDING

A autenticação Duo Security está pendente.

390122

EXT_AUTHN_NOT_ENROLLED

O usuário não está inscrito no Duo Security. Contate seu administrador de sistema local.

390123

EXT_AUTHN_LOCKED

O usuário está bloqueado pelo Duo Security. Contate seu administrador de sistema local.

390124

EXT_AUTHN_REQUESTED

É necessária a autenticação no Duo Security.

390125

EXT_AUTHN_SMS_SENT

O código de acesso temporário do Duo Security é enviado via SMS. Por favor, autentique usando o código de acesso.

390126

EXT_AUTHN_TIMEOUT

Tempo de espera pela aprovação de seu pedido de login via Duo Mobile. Se seu dispositivo móvel não tiver serviço de dados, gere um código de acesso Duo e insira-o na cadeia de conexão.

390127

EXT_AUTHN_INVALID

Foi especificado um código de acesso incorreto.

390128

EXT_AUTHN_SUCCEEDED

A autenticação Duo Security foi bem-sucedida.

390129

EXT_AUTHN_EXCEPTION

A solicitação não pôde ser concluída devido a um problema de comunicação com o provedor de serviços externo. Tente novamente mais tarde.

390132

EXT_AUTHN_DUO_PUSH_DISABLED

O Duo Push não está habilitado para sua MFA. Forneça um código de acesso como parte da cadeia de conexão.