Faça a gestão da autenticação integrada através de políticas de palavras-passe

Selecione uma versão da documentação:

Esta página descreve como pode definir e gerir políticas de palavras-passe para o AlloyDB Omni.

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:

  1. Localize o ficheiro de configuração postgresql.conf para a sua instalação do AlloyDB Omni e abra-o num editor de texto.

  2. Localize a linha shared_preload_libraries e verifique se inclui alloydb_password_validation. Se não for o caso, tem de o adicionar. Quando terminar, a linha shared_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:

  1. Verifique se o ficheiro postgresql.conf pré-carrega a biblioteca de validação de palavras-passe.

  2. Defina a flag password.enforce_complexity como ON.

  3. 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:

  1. Verifique se o ficheiro postgresql.conf pré-carrega a biblioteca de validação de palavras-passe.

  2. Defina a flag password.enforce_expiration como ON.

  3. 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.

  4. 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:

  1. 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
    
  2. 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:

  1. Verifique se o ficheiro postgresql.conf pré-carrega a biblioteca de validação de palavras-passe.

  2. Definir o password.enforce_password_does_not_contain_username para ON.

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';

O que se segue?