Sobre as políticas de senha
Se os usuários do banco de dados do seu aplicativo fizerem a autenticação com o AlloyDB Omni usando o método integrado baseado em senha, é possível aumentar a segurança da autenticação exigindo senhas fortes. É possível definir e ativar a aplicação de senha definindo uma política de senha do AlloyDB Omni.
Limitações das políticas de senha
As políticas de senhas do AlloyDB Omni têm as seguintes limitações:
As políticas de senha são válidas apenas para 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 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 senhas do AlloyDB Omni
Para definir uma política de senhas, atualize os parâmetros de senha da configuração unificada geral (GUC)
no arquivo de configuração do postgresql.conf
. Para saber como definir um parâmetro
GUC, consulte
Configurar flags de banco de dados do AlloyDB Omni.
Uma política de senha para o AlloyDB Omni pode incluir as seguintes opções:
Bloquear nome de usuário: impede 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 comprimento da senha é válido.
Validade da senha: verifique se as senhas são trocadas periodicamente.
Para uma lista das flags de política de senha compatíveis com o AlloyDB Omni, consulte Flags de política de senha.
Pré-carregar a biblioteca de validação de senha
Para que uma política de senha entre em vigor no AlloyDB Omni, a biblioteca
alloydb_password_validation
precisa ser carregada. Para carregar essa biblioteca,
faça o seguinte:
Localize o arquivo de configuração
postgresql.conf
da sua instalação do AlloyDB Omni e abra-o em um editor de texto.Localize a linha
shared_preload_libraries
e verifique se ela incluialloydb_password_validation
. Se não estiver, adicione. Quando terminar, a linhashared_preload_libraries
vai ficar assim:shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
Aplicar a complexidade da senha
Para aplicar uma política de complexidade de senhas, faça o seguinte:
Verifique se o arquivo
postgresql.conf
pré-carrega a biblioteca de validação de senha.Defina a flag
password.enforce_complexity
comoON
.Use flags de política de senhas para definir sua política de senhas.
Por exemplo, para aplicar uma política de senhas que exige que uma senha tenha pelo menos uma letra maiúscula, um número e pelo menos 10 caracteres, defina o seguinte no arquivo postgresql.conf
:
password.enforce_complexity = ON
password.min_uppercase_letters = 1
password.min_numerical_chars = 1
password.min_pass_length = 10
Depois que essas flags são definidas, uma tentativa de definir uma senha de usuário do banco de dados que
não esteja em conformidade com essa política de senha falha. Por exemplo, com esse conjunto de políticas, 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 a expiração da senha
Para aplicar a política de expiração de senha, faça o seguinte:
Verifique se o arquivo
postgresql.conf
pré-carrega a biblioteca de validação de senha.Defina a flag
password.enforce_expiration
comoON
.Defina a flag
password.expiration_in_days
com o número de dias após a definição de uma senha para que ela expire.Defina a flag
password.notify_expiration_in_days
com 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 determina que as senhas expiram após 30
dias e que os usuários são notificados 15 dias antes do vencimento, defina
o seguinte no arquivo postgresql.conf
:
password.enforce_expiration = ON
password.expiration_in_days = 30
password.notify_expiration_in_days = 15
Se a senha de um usuário expirar, ele não poderá se conectar ao AlloyDB Omni. Para redefinir a senha de um usuário, faça o seguinte:
Conecte-se ao AlloyDB Omni usando
psql
. Por exemplo, se você instalou o AlloyDB Omni usando o Docker, execute o seguinte comando:docker exec -it CONTAINER-NAME psql -h localhost -U postgres
No prompt do
postgres=#
, execute o seguinte comando:ALTER USER USERNAME WITH 'NEW-PASSWORD';
Para mais informações sobre como mudar a senha de um usuário, consulte
ALTER ROLE
na
documentação do PostgreSQL.
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:
Verifique se o arquivo
postgresql.conf
pré-carrega a biblioteca de validação de senha.Defina o
password.enforce_password_does_not_contain_username
comoON
.
Por exemplo, para garantir que uma senha não contenha um nome de usuário como uma
substring, defina o seguinte no arquivo postgresql.conf
:
password.enforce_password_does_not_contain_username = ON
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';