Para reforçar a segurança da autenticação integrada do banco de dados, defina e gerencie políticas de senha para usuários do banco de dados nas instâncias do AlloyDB para PostgreSQL.
Para 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 aplicativo se autenticarem nas instâncias do AlloyDB usando o método integrado baseado em senha, será possível tornar a autenticação mais segura aplicando senhas fortes. É possível definir e ativar a aplicação de senha 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 senha se aplicam apenas a usuários de banco de dados integrados (
BUILT_IN). Os usuários de banco de dados baseados no IAM (IAM_BASED) são excluídos das políticas de senha da instância.As políticas de senha se aplicam apenas às senhas criadas depois que você as define. As senhas dos usuários não são afetadas por uma mudança na política de senhas.
As políticas de senha se aplicam apenas às 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
Para definir uma política de senha em uma instância, configure as flags de senha nela.
Bloquear nome de usuário: impeça o uso do nome de usuário 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 tamanho da senha é válido.
Expiração da senha: exige a rotação periódica da senha.
Para uma lista das flags de política de senha compatíveis com o AlloyDB, consulte Flags de política de senha.
Para obedecer aos padrões de segurança e se alinhar às orientações do recomendador de segurança, ative as três opções juntas configurando as flags de aplicação principais como ON:
password.enforce_password_does_not_contain_usernamepassword.enforce_complexitypassword.enforce_expiration
Se você definir qualquer uma dessas três flags como OFF ou omiti-las, o recomendador de segurança
sinalizará a instância como não tendo uma política de senha ativada.
Aplicar complexidade de senha
Para aplicar uma política de complexidade de senha, faça o seguinte:
- Defina a flag
password.enforce_complexitycomoON. - Use flags de política de senha para definir sua política de senha.
Por exemplo, para aplicar uma política de senha que estabelece que uma senha precisa conter pelo menos uma letra maiúscula, um número e ter pelo menos 10 caracteres, defina as seguintes flags:
Sinalização
password.enforce_complexitycomoONSinalização
password.min_uppercase_letterspara1Sinalização
password.min_numerical_charscomo1Sinalização
password.min_pass_lengthcomo10
Depois que essas flags forem definidas, uma tentativa de definir uma senha de usuário do banco de dados que
não obedeça a essa política de senha vai falhar. Por exemplo, com essa política
definida, o comando do 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 validade da senha
Para aplicar a política de validade da senha, faça o seguinte:
Defina a flag
password.enforce_expirationcomoON.Defina a flag
password.expiration_in_dayscomo o número de dias após a definição de uma senha para que ela expire.Defina a flag
password.notify_expiration_in_dayscomo 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 senha que estabelece que as senhas expiram após 30 dias e que os usuários são notificados 15 dias antes da expiração da senha, defina o seguinte:
Sinalização
password.enforce_expirationcomoONSinalização
password.expiration_in_dayspara30Sinalização
password.notify_expiration_in_dayspara15
Quando um usuário se conecta durante o período de notificação antes que a senha
expire, o AlloyDB exibe a seguinte mensagem na conexão do cliente
e a grava em postgres.log:
Caution: Password is set to expire soon. Be sure to update the password before the expiration time.
Se a senha de um usuário expirar, ele não poderá se conectar à instância do AlloyDB. Para redefinir a senha de um usuário, consulte Alterar 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:
- Defina a flag
password.enforce_password_does_not_contain_usernamecomoON.
Por exemplo, para impedir que uma senha contenha um nome de usuário como uma substring, defina o seguinte:
- Sinalização
password.enforce_password_does_not_contain_usernamecomoON
Se essa flag estiver definida, a operação a seguir vai falhar porque a senha
alex-secret contém o nome de usuário alex:
CREATE USER alex WITH PASSWORD 'alex-secret';