Como trabalhar com senhas

Este tópico descreve como um administrador pode configurar os requisitos de senha e redefinir as senhas de usuário.

Políticas de senhas

Uma política de senhas especifica os requisitos que devem ser atendidos para criar e redefinir uma senha para autenticação no Snowflake.

Snowflake oferece duas opções para políticas de senhas:

  • Uma política de senhas integrada para facilitar o processo inicial de provisionamento do usuário.

  • Um objeto de política de senhas no nível do esquema que pode ser definido no nível da conta Snowflake, um usuário individual, ou ambos, dependendo dos casos de uso e das necessidades do administrador do usuário.

Práticas recomendadas para políticas de senhas e senhas

Snowflake recomenda as seguintes práticas recomendadas com relação a senhas e políticas de senhas:

Criação e aplicação da política de senhas personalizada

O objeto da política de senhas é aplicado uma vez que a política de senhas seja definida em uma conta ou usuário.

Configure essas propriedades com valores que atendam às suas necessidades de segurança interna. Para obter mais detalhes, consulte Passo 4: criar uma política de senhas (neste tópico):

  • PASSWORD_HISTORY para garantir que os usuários não possam reutilizar senhas com muita frequência e para ajudar a evitar ataques de força bruta para determinar a senha de um usuário.

  • PASSWORD_MIN_AGE_DAYS para exigir que o usuário use a nova senha. Um valor 0 não é recomendado porque o usuário pode alterar a senha para esgotar o histórico de senha e reutilizar o valor da senha original muito cedo.

Para exigir que o usuário altere sua senha para cumprir a política de senhas em seu login inicial ou no próximo login ao Snowflake, defina a propriedade MUST_CHANGE_PASSWORD no usuário como TRUE usando um comando ALTER USER.

Para obter mais detalhes, consulte Etapa 6: exigir uma alteração de senha (neste tópico).

Exigência de senhas fortes

Definir uma política de senhas em nível de conta para exigir senhas fortes.

Uma senha forte tem pelo menos 8 caracteres e inclui uma combinação de letras maiúsculas e minúsculas, caracteres especiais (por exemplo, ! e *) e números.

MFA

Use a autenticação multifator (MFA) para segurança adicional.

Uso de SCIM

Você pode definir uma senha para o usuário acessar o Snowflake em uma solicitação do API SCIM. Administradores de SCIM e administradores de usuários devem escolher gerenciar a senha do usuário para acessar o Snowflake em seu provedor de identidade ou usando uma política de senhas no Snowflake.

Atualmente, os usuários provisionados para o Snowflake com SCIM são obrigados a ter sua senha de acordo com a política de senhas padrão Snowflake. Este requisito pode ser contornado se você optar por usar este recurso de política de senhas.

Para contornar a exigência padrão da política de senhas, siga as instruções na seção Uso de políticas de senhas (neste tópico).

Monitoramento de senhas

Para monitorar as senhas:

  • Consulte a exibição do Snowflake Account Usage USERS para determinar se o valor da coluna HAS_PASSWORD retorna TRUE para um determinado usuário.

  • Consulte a exibição do Snowflake Account Usage LOGIN_HISTORY e avalie a coluna FIRST_AUTHENTICATION_FACTOR. Se um usuário não exigir uma senha para acessar o Snowflake, execute um comando ALTER USER para definir a propriedade password como NULL.

Política de senhas fornecida pela Snowflake

Uma senha pode ser qualquer cadeia de caracteres que diferencia maiúsculas de minúsculas e com até 256 caracteres, incluindo espaços em branco e caracteres especiais (isto é, não alfanuméricos), tais como pontos de exclamação (!), sinais de porcentagem (%) e asteriscos (*).

Durante a criação de usuário inicial, é possível definir uma senha fraca para o usuário que não esteja de acordo com os requisitos mínimos descritos abaixo (por exemplo, 'test12345'). Esse recurso permite que os administradores usem senhas genéricas para o usuário durante o processo de criação. Se esse caminho for escolhido, a Snowflake recomenda fortemente que você configure a propriedade MUST_CHANGE_PASSWORD como TRUE para exigir que os usuários mudem sua senha no próximo login, incluindo o login inicial, no Snowflake.

Além disso, o Snowflake permite criar usuários sem uma senha inicial para oferecer suporte a processos comerciais nos quais novos usuários não estão autorizados a entrar no sistema. Se isso ocorrer, o valor da propriedade PASSWORD do usuário será NULL. Entretanto, como regra geral, o Snowflake espera que os usuários sejam criados com senhas iniciais.

No contexto de redefinir uma senha existente (por exemplo, mudar 'test12345' para 'q@-*DaC2yjZoq3Re4JYX'), o Snowflake aplica a seguinte política de senhas como um requisito mínimo ao usar o comando ALTER USER e a interface da Web:

  • Deve ter pelo menos 8 caracteres.

  • Deve conter pelo menos 1 dígito.

  • Deve conter pelo menos 1 letra maiúscula e 1 letra minúscula.

A Snowflake recomenda fortemente as seguintes diretrizes para criar as senhas mais fortes possíveis:

  • Crie uma senha única para o Snowflake (ou seja, não reutilize senhas de outros sistemas ou contas).

  • Use mais de 8 caracteres.

  • Inclua letras maiúsculas e minúsculas, números e caracteres especiais, incluindo espaços em branco.

  • Não use senhas, nomes, números ou datas comuns e fáceis de adivinhar.

Por fim, para configurar o mais alto nível de segurança para o login de usuário, a Snowflake recomenda que os usuários se inscrevam em MFA.

Política de senhas personalizada para a conta e usuários

A política de senhas personalizada é um objeto em nível de esquema que especifica os requisitos que devem ser atendidos para criar e redefinir uma senha de autenticação no Snowflake, incluindo o número de tentativas de inserir a senha com sucesso e o número de minutos antes que uma senha possa ser novamente testada (ou seja, o tempo de bloqueio).

Os requisitos da política de senhas para uma senha incluem letras maiúsculas ou minúsculas, caracteres especiais, números e comprimento de senha para atender aos requisitos de segurança para usuários e clientes durante a autenticação no Snowflake. As políticas de senhas que exigem senhas fortes ajudam a cumprir as diretrizes e regulamentos de segurança.

A Snowflake oferece suporte à definição de uma política de senhas para sua conta Snowflake e para usuários individuais. Apenas uma política de senhas pode ser definida a qualquer momento para sua conta Snowflake ou para um usuário. Se existir uma política de senhas para a conta Snowflake e outra política de senhas for definida para um usuário na mesma conta Snowflake, a política de senhas no nível de usuário tem precedência sobre a política de senha no nível de conta.

A política de senhas se aplica às novas senhas definidas em sua conta Snowflake. Para garantir que os usuários com senhas existentes atendam às exigências da política de senhas, exija que os usuários mudem sua senha durante seu próximo login no Snowflake como mostrado em Etapa 6: exigir uma alteração de senha (neste tópico).

Nota

A maioria das alterações de propriedade de política de senhas entram em vigor na próxima vez que um usuário altera sua senha. Por exemplo, se você alterar a propriedade PASSWORD_MAX_LENGTH de 10 para 16 a fim de exigir que o usuário use uma senha mais longa, o usuário deverá obedecer à alteração da política de senhas sempre que alterar sua senha. Você pode definir a propriedade de usuário MUST_CHANGE_PASSWORD para TRUE com uma instrução ALTER USER para exigir que o usuário altere sua senha no próximo login no Snowflake.

Entretanto, algumas alterações de propriedade da política de senhas entram em vigor durante o próximo login porque o Snowflake não força o usuário a alterar sua senha na sessão atual:

  • PASSWORD_MAX_AGE_DAYS = integer

  • PASSWORD_MAX_RETRIES = integer

  • PASSWORD_LOCKOUT_TIME_MINS = integer

Quaisquer alterações dessas propriedades não afetam a sessão atual. Por exemplo, uma alteração no valor da propriedade PASSWORD_MAX_AGE_DAYS não faz com que a senha atual do usuário expire. Entretanto, no próximo login no Snowflake, o usuário deverá alterar sua senha.

Considerações

  • Concessões futuras de privilégios em políticas de senhas não são suportadas.

    Como alternativa, conceda o privilégio APPLYPASSWORD POLICY a uma função personalizada para permitir que esta função aplique políticas de senhas no usuário ou conta Snowflake.

  • A política de senhas pode ser gerenciada com SQL usando SnowSQL ou um driver ou conector compatível, ou no Worksheets usando o Classic Console ou Snowsight.

  • Reinicialização ou troca de uma senha:

    • Classic Console, SnowSQL e conectores e drivers suportados:

      Ao executar um comando ALTER USER ou usar a Classic Console para redefinir ou alterar uma senha, Snowflake avalia a política de senhas para assegurar que a senha recém-criada corresponda aos requisitos da política de senhas.

  • Rastreamento do uso da política de senhas:

    • Consulte a exibição PASSWORD_POLICIES do Account Usage para retornar uma linha para cada política de senhas em sua conta Snowflake.

    • Use a função de tabela do Information Schema POLICY_REFERENCES para retornar uma linha para cada usuário que é atribuído à política de senhas especificada e uma linha para a política de senhas atribuída à conta Snowflake.

      Atualmente, apenas a seguinte sintaxe é suportada para as políticas de senhas:

      POLICY_REFERENCES( POLICY_NAME => '<password_policy_name>' )
      
      Copy

      Onde password_policy_name é o nome totalmente qualificado da política de senhas.

      Por exemplo, execute a seguinte consulta para retornar uma linha para cada usuário ao qual é atribuída a política de senhas chamada password_policy_prod_1, que é armazenada no banco de dados chamado my_db e o esquema chamado my_schema:

      SELECT *
      FROM TABLE(
          my_db.information_schema.policy_references(
            POLICY_NAME => 'my_db.my_schema.password_policy_prod_1'
        )
      );
      
      Copy

Controle de acesso para políticas de senha

Os privilégios de controle de acesso a seguir permitem que os usuários trabalhem com políticas de senha:

Privilégio

Tipo de objeto

Uso

CREATE PASSWORD POLICY

Esquema

Permite a criação de uma nova política de senhas.

APPLY PASSWORD POLICY

Conta, usuário

Permite aplicar uma política de senhas no nível de conta ou de usuário.

OWNERSHIP

Política de senhas

Concede controle total sobre a política de senhas. Necessário para alterar a maioria das propriedades de uma política de senhas.

A tabela a seguir resume a relação entre as operações da política de senhas DDL e os privilégios necessários.

Operação

Privilégio necessário

Criação da política de senhas

Uma função com o privilégio CREATE PASSWORD POLICY no esquema para armazenar a política de senhas.

Alteração da política de senhas

Uma função com o privilégio OWNERSHIP na política de senhas.

Descarte da política de senhas

Uma função com o privilégio OWNERSHIP na política de senhas.

Descrição da política de senhas

Uma função com o privilégio OWNERSHIP na política de senhas ou . o privilégio APPLY PASSWORD POLICY na conta.

Exibição das políticas de senhas

Uma função com o privilégio OWNERSHIP na política de senhas ou . o privilégio APPLY PASSWORD POLICY na conta.

Definição e cancelamento da política de senhas

Uma função com o privilégio APPLY PASSWORD POLICY na conta ou usuário.

Nota

O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.

Comandos DDL

O Snowflake fornece os seguintes comandos DDL para gerenciar os objetos da política de senhas:

Uso de políticas de senhas

Os passos seguintes são um guia representativo para definir e estabelecer uma política de senhas no Snowflake.

Esses passos pressupõem uma abordagem de gerenciamento centralizado no qual uma função personalizada chamada policy_admin possui a política da senhas (ou seja, tem o privilégio OWNERSHIP da política da senhas) e é responsável por definir a política de senhas em uma conta ou usuário (ou seja, tem o privilégio global APPLY PASSWORD POLICY, conforme mostrado na etapa 2).

Nota

Para definir uma política em uma conta, a função personalizada policy_admin também deve ter o privilégio USAGE no banco de dados e esquema que contém a política de senhas.

Para obter mais informações, consulte: Privilégios de controle de acesso

Passo 1: criar a função personalizada

Crie uma função personalizada que permita criar e gerenciar políticas de senhas. Ao longo deste tópico, a função personalizada de exemplo é denominada policy_admin, embora a função possa ter qualquer nome apropriado.

Se a função personalizada já existir, continue para o próximo passo.

Caso contrário, crie a função personalizada policy_admin.

USE ROLE USERADMIN;

CREATE ROLE policy_admin;
Copy

Passo 2: conceder privilégios à função personalizada

Se a função personalizada policy_admin ainda não tiver os seguintes privilégios, conceda-os como mostrado abaixo:

  • USAGE no banco de dados e no esquema que conterá a política de senhas.

  • CREATE PASSWORD POLICY no esquema que irá armazenar a política de senhas.

  • APPLY PASSWORD POLICY na conta.

USE ROLE SECURITYADMIN;

GRANT USAGE ON DATABASE security TO ROLE policy_admin;

GRANT USAGE ON SCHEMA security.policies TO ROLE policy_admin;

GRANT CREATE PASSWORD POLICY ON SCHEMA security.policies TO ROLE policy_admin;

GRANT APPLY PASSWORD POLICY ON ACCOUNT TO ROLE policy_admin;
Copy

Se você decidir definir uma política de senhas para um usuário, conceda o privilégio APPLY PASSWORD POLICY ao usuário. Por exemplo, se o nome de usuário for JSMITH, execute o seguinte comando.

GRANT APPLY PASSWORD POLICY ON USER jsmith TO ROLE policy_admin;
Copy

Para obter mais informações, consulte Controle de acesso para políticas de senha.

Etapa 3: conceder a função personalizada a um usuário

Conceder a função personalizada policy_admin aos usuários responsáveis pelo gerenciamento das políticas de senhas.

USE ROLE SECURITYADMIN;
GRANT ROLE policy_admin TO USER jsmith;
Copy

Para obter mais informações, consulte Configuração do controle de acesso

Passo 4: criar uma política de senhas

Usando a função policy_admin personalizada, crie uma política de senhas chamada password_policy_prod_1. Para obter mais informações, consulte CREATE PASSWORD POLICY.

USE ROLE policy_admin;

USE SCHEMA security.policies;

CREATE PASSWORD POLICY PASSWORD_POLICY_PROD_1
    PASSWORD_MIN_LENGTH = 14
    PASSWORD_MAX_LENGTH = 24
    PASSWORD_MIN_UPPER_CASE_CHARS = 2
    PASSWORD_MIN_LOWER_CASE_CHARS = 2
    PASSWORD_MIN_NUMERIC_CHARS = 2
    PASSWORD_MIN_SPECIAL_CHARS = 2
    PASSWORD_MIN_AGE_DAYS = 1
    PASSWORD_MAX_AGE_DAYS = 999
    PASSWORD_MAX_RETRIES = 3
    PASSWORD_LOCKOUT_TIME_MINS = 30
    PASSWORD_HISTORY = 5
    COMMENT = 'production account password policy';
Copy

Nota

A propriedade PASSWORD_MAX_AGE_DAYS é definida como o maior valor, 999. Escolha um valor que se alinhe com suas diretrizes internas. Para obter mais detalhes, consulte CREATE PASSWORD POLICY.

Passo 5: definir a política de senhas para a conta ou usuário

Defina a política em uma conta com o comando ALTER ACCOUNT:

ALTER ACCOUNT SET PASSWORD POLICY security.policies.password_policy_prod_1;
Copy

Se você decidir criar uma política de senhas adicional para um ou mais usuários, defina a política de senhas no nível de usuário em um usuário com um comando ALTER USER:

ALTER USER jsmith SET PASSWORD POLICY security.policies.password_policy_user;
Copy

Importante

Para substituir uma política de senhas que já esteja definida para uma conta ou usuário, primeiro desative a política de senhas e depois defina a nova política de senhas para a conta ou usuário. Por exemplo:

ALTER ACCOUNT UNSET PASSWORD POLICY;

ALTER ACCOUNT SET PASSWORD POLICY security.policies.password_policy_prod_2;
Copy

Etapa 6: exigir uma alteração de senha

Defina a propriedade MUST_CHANGE_PASSWORD como TRUE para usuários individuais usando uma instrução ALTER USER para exigir que os usuários mudem sua senha para cumprir a política de senhas em seu próximo login para Snowflake.

ALTER USER JSMITH SET MUST_CHANGE_PASSWORD = true;
Copy

Redefinição da senha para um usuário

Os administradores podem alterar a senha de um usuário por meio das seguintes interfaces.

Uso de Snowsight

  1. Faça login no Snowsight.

  2. Selecione Admin » Users & Roles.

  3. Localize o usuário cuja senha você deseja alterar e selecione Mais opções » Reset Password.

  4. Digite uma nova senha para o usuário e confirme a senha.

  5. Selecione Update.

Uso do console clássico

Nota

Os usuários só podem mudar sua própria senha por meio da Classic Console. Para obter mais informações, consulte Alteração de senha/Troca de função (sessão)/Logout.

  1. Selecione Account Guia de conta » Users.

  2. Clique em uma linha de usuário para selecioná-la e selecione Reset Password. A caixa de diálogo Reset Password é aberta.

  3. Digite a nova senha para o usuário e confirme a senha.

  4. Deixe a caixa de seleção Force Password Change selecionada para forçar o usuário a alterar sua senha em seu próximo login; caso contrário, desmarque a caixa de seleção.

  5. Selecione Finish.

Uso de SQL

Use o comando ALTER USER para inserir a senha de um usuário. Por exemplo:

ALTER USER janesmith SET PASSWORD = 'H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt' MUST_CHANGE_PASSWORD = TRUE;
Copy

Alternativamente, use a sintaxe ALTER USER … RESET PASSWORD para gerar um URL para compartilhar com o usuário. O URL abre uma página da Web na qual o usuário pode inserir a nova senha. Por exemplo:

ALTER USER janesmith RESET PASSWORD;
Copy

Nota

  • O URL gerado é válido para um único uso e expira após 4 horas.

  • Executar a instrução ALTER USER … RESET PASSWORD não invalida a senha atual. O usuário pode continuar usando a senha antiga até que a nova senha seja definida.

Como usar o Python

O método UserResource.create_or_alter no Snowflake Python APIs atualmente não oferece suporte à alteração de password para um usuário existente. Você só pode definir a senha usando esse método ao criar um novo usuário.

Redefinição da senha para um administrador

Um administrador de conta (ou seja, um usuário com a função ACCOUNTADMIN) pode redefinir sua própria senha usando o procedimento descrito em Redefinição da senha para um usuário.

Se um administrador de conta for bloqueado de sua conta, um usuário diferente com a função ACCOUNTADMIN pode redefinir a senha para o administrador bloqueado. Caso o administrador esteja bloqueado e não haja outro administrador para alterar a senha, entre em contato com o suporte Snowflake para redefinir a senha.

Desativação da funcionalidade de mudança de senha para usuários

Os usuários alteram sua senha Snowflake na interface da Web clicando no menu suspenso no canto superior direito (ao lado do nome de login) » Change Password. A caixa de diálogo Select a New Password é aberta. A caixa de diálogo aceita a senha atual e a nova senha.

Opcionalmente, você pode desativar a possibilidade de os usuários de sua conta alterarem a própria senha. Os administradores de conta podem continuar alterando as senhas de usuários por meio da interface da Web em Account Guia de conta » Users ou do comando SQL ALTER USER.

Para solicitar esta mudança, entre em contato com o suporte Snowflake.