Acerca das políticas de palavras-passe
Se os utilizadores da base de dados da sua aplicação se autenticarem com o AlloyDB Omni através do método integrado baseado em palavra-passe, pode tornar a autenticação mais segura aplicando palavras-passe fortes. Pode definir e ativar a aplicação de palavras-passe definindo uma política de palavras-passe do AlloyDB Omni.
Limitações das políticas de palavras-passe
As políticas de palavras-passe do AlloyDB Omni têm as seguintes limitações:
As políticas de palavra-passe aplicam-se a palavras-passe criadas apenas depois de definir as políticas. As palavras-passe dos utilizadores existentes não são afetadas por uma alteração na política de palavras-passe.
As políticas de palavras-passe aplicam-se apenas a palavras-passe introduzidas como texto simples. As políticas de palavras-passe não se aplicam a palavras-passe introduzidas como strings encriptadas.
Defina uma política de palavras-passe do AlloyDB Omni
Define uma política de palavras-passe atualizando os parâmetros de palavras-passe da configuração unificada geral (GUC) no seu ficheiro de configuração postgresql.conf
. Para saber como definir um parâmetro GUC, consulte o artigo Configure as flags da base de dados do AlloyDB Omni.
Uma política de palavras-passe para o AlloyDB Omni pode incluir as seguintes opções:
Não permitir nome de utilizador: impede que o nome de utilizador seja usado na palavra-passe.
Complexidade da palavra-passe: verifique se a palavra-passe contém o número permitido de carateres minúsculos, maiúsculos, numéricos e não alfanuméricos. Verifique também se o comprimento da palavra-passe é válido.
Expiração da palavra-passe: certifique-se de que as palavras-passe são alteradas periodicamente.
Para ver uma lista das flags da política de palavras-passe suportadas pelo AlloyDB Omni, consulte o artigo Flags da política de palavras-passe.
Pré-carregue a biblioteca de validação de palavras-passe
Para que uma política de palavras-passe entre em vigor no AlloyDB Omni, a biblioteca alloydb_password_validation
tem de ser carregada. Para carregar esta biblioteca,
faça o seguinte:
Localize o ficheiro de configuração
postgresql.conf
para a sua instalação do AlloyDB Omni e abra-o num editor de texto.Localize a linha
shared_preload_libraries
e verifique se incluialloydb_password_validation
. Se não for o caso, tem de o adicionar. Quando terminar, a linhashared_preload_libraries
tem um aspeto semelhante ao seguinte:shared_preload_libraries='google_columnar_engine,google_job_scheduler,google_storage,alloydb_password_validation'
Aplique a complexidade da palavra-passe
Para aplicar uma política de complexidade de palavras-passe, faça o seguinte:
Verifique se o ficheiro
postgresql.conf
pré-carrega a biblioteca de validação de palavras-passe.Defina a flag
password.enforce_complexity
comoON
.Use flags de política de palavras-passe para definir a sua política de palavras-passe.
Por exemplo, para aplicar uma política de palavras-passe que indique que uma palavra-passe tem de conter, pelo menos, uma letra maiúscula, um número e ter, pelo menos, 10 carateres, defina o seguinte no ficheiro postgresql.conf
:
password.enforce_complexity = ON
password.min_uppercase_letters = 1
password.min_numerical_chars = 1
password.min_pass_length = 10
Depois de definir estas flags, qualquer tentativa de definir uma palavra-passe de utilizador da base de dados que não esteja em conformidade com esta política de palavras-passe falha. Por exemplo, com este conjunto de políticas, o seguinte comando de cliente psql
falha porque a palavra-passe foo
tem menos de 10 carateres e não contém um número nem um carater em maiúsculas.
CREATE USER USERNAME WITH PASSWORD foo;
Aplique a expiração da palavra-passe
Para aplicar a política de expiração de palavras-passe, faça o seguinte:
Verifique se o ficheiro
postgresql.conf
pré-carrega a biblioteca de validação de palavras-passe.Defina a flag
password.enforce_expiration
comoON
.Defina a flag
password.expiration_in_days
para o número de dias após a definição de uma palavra-passe em que esta expira.Defina a flag
password.notify_expiration_in_days
para o número de dias antes de uma palavra-passe expirar em que um utilizador começa a receber notificações de expiração da palavra-passe.
Por exemplo, para aplicar uma política de palavras-passe que indique que as palavras-passe expiram após 30 dias e que os utilizadores são notificados 15 dias antes da respetiva palavra-passe expirar, tem de definir o seguinte no seu ficheiro postgresql.conf
:
password.enforce_expiration = ON
password.expiration_in_days = 30
password.notify_expiration_in_days = 15
Se a palavra-passe de um utilizador expirar, esse utilizador não pode estabelecer ligação ao AlloyDB Omni. Para repor a palavra-passe de um utilizador, faça o seguinte:
Ligue-se ao AlloyDB Omni através do
psql
. Por exemplo, se tiver instalado o AlloyDB Omni através do Docker, execute o seguinte comando:docker exec -it CONTAINER-NAME psql -h localhost -U postgres
No comando
postgres=#
, execute o seguinte comando:ALTER USER USERNAME WITH 'NEW-PASSWORD';
Para mais informações sobre como alterar a palavra-passe de um utilizador, consulte o artigo
ALTER ROLE
na
documentação do PostgreSQL.
Não permitir nomes de utilizador em palavras-passe
Para aplicar a política que impede que uma palavra-passe contenha um nome de utilizador, faça o seguinte:
Verifique se o ficheiro
postgresql.conf
pré-carrega a biblioteca de validação de palavras-passe.Definir o
password.enforce_password_does_not_contain_username
paraON
.
Por exemplo, para garantir que uma palavra-passe não contém um nome de utilizador como uma subcadeia de carateres, define o seguinte no ficheiro postgresql.conf
:
password.enforce_password_does_not_contain_username = ON
Se esta flag estiver definida, a operação seguinte falha porque a palavra-passe
alex-secret
contém o nome de utilizador alex
:
CREATE USER alex WITH PASSWORD 'alex-secret';