Gerenciar a autenticação integrada usando políticas de senha

Esta página descreve como definir e gerenciar políticas de senha para usuários de banco de dados das suas instâncias do AlloyDB para PostgreSQL.

Para ter uma visão geral dos métodos de autenticação disponíveis no AlloyDB, consulte Autenticação.

Sobre as políticas de senha

Se os usuários do banco de dados do seu aplicativo se autenticarem com as instâncias do AlloyDB usando o método integrado baseado em senha, você poderá tornar a autenticação mais segura impondo senhas fortes. É possível definir e ativar a aplicação de senhas definindo uma política de senha nas instâncias.

Limitações das políticas de senha

As políticas de senha do AlloyDB têm as seguintes limitações:

  • As políticas de senhas só se aplicam às senhas criadas depois que você as define. As senhas de usuário atuais não são afetadas por uma mudança na política de senhas.

  • As políticas de senha se aplicam apenas a senhas inseridas como texto simples. As políticas de senha não se aplicam a senhas inseridas como strings criptografadas.

Definir uma política de senha de instância

É possível definir uma política de senha em uma instância configurando sinalizações de senha em uma instância.

  • Bloquear nome de usuário: impede que o nome de usuário seja usado na senha.

  • Complexidade da senha: verifique se a senha contém o número permitido de caracteres minúsculos, maiúsculos, numéricos e não alfanuméricos. Verifique também se o comprimento da senha é válido.

  • Expiração da senha: alterne as senhas periodicamente.

Para conferir uma lista de flags de política de senha com suporte do AlloyDB, consulte Flags de política de senha.

Aplicar a complexidade da senha

Para aplicar uma política de complexidade de senha, faça o seguinte:

  1. Defina a flag password.enforce_complexity como ON.
  2. Use flags de política de senha para definir sua política de senha.

Por exemplo, para aplicar uma política de senha que declare que uma senha precisa conter pelo menos uma letra maiúscula, um número e ter pelo menos 10 caracteres, você precisa definir as seguintes flags:

  • password.enforce_complexity a ON
  • Sinalização password.min_uppercase_letters definida como 1
  • Sinalização password.min_numerical_chars definida como 1
  • Sinalização password.min_pass_length definida como 10

Depois que essas flags são definidas, uma tentativa de definir uma senha de usuário do banco de dados que não está em conformidade com essa política de senha falha. Por exemplo, com essa política definida, o comando de cliente psql a seguir falha porque a senha foo tem menos de 10 caracteres e não contém um número ou um caractere maiúsculo.

CREATE USER USERNAME WITH PASSWORD 'foo';

Aplicar a expiração da senha

Para aplicar a política de expiração de senha, faça o seguinte:

  1. Defina a flag password.enforce_expiration como ON.

  2. Defina a flag password.expiration_in_days para o número de dias após a definição de uma senha que ela expira.

  3. Defina a flag password.notify_expiration_in_days para o número de dias antes da expiração de uma senha em que um usuário começa a receber notificações de expiração de senha.

Por exemplo, para aplicar uma política de senhas que estabeleça que as senhas expiram após 30 dias e que os usuários sejam notificados 15 dias antes do vencimento, defina o seguinte:

  • password.enforce_expiration a ON
  • Sinalização password.expiration_in_days definida como 30
  • Sinalização password.notify_expiration_in_days definida como 15

Se a senha de um usuário expirar, ele não poderá se conectar à instância do AlloyDB Omni. Para redefinir a senha de um usuário, consulte Mudar a senha de um usuário do banco de dados.

Não permitir nomes de usuário em senhas

Para aplicar a política que impede que uma senha contenha um nome de usuário, faça o seguinte:

Por exemplo, para garantir que uma senha não contenha um nome de usuário como uma substring, defina o seguinte:

  • password.enforce_password_does_not_contain_username a ON

Se essa flag estiver definida, a operação a seguir falhará porque a senha alex-secret contém o nome de usuário Alex:

CREATE USER Alex WITH PASSWORD 'alex-secret';

A seguir