Noções básicas de perfis e permissões do PostgreSQL - Amazon Aurora

Noções básicas de perfis e permissões do PostgreSQL

Ao criar um cluster de banco de dados do Aurora PostgreSQL usando o AWS Management Console, uma conta de administrador é criada ao mesmo tempo. Por padrão, o nome é postgres, conforme mostrado na captura de tela a seguir:

A identidade de login padrão para credenciais na página Create database (Criar banco de dados) é postgres.

É possível escolher outro nome em vez de aceitar esse padrão (postgres). Se você fizer isso, o nome escolhido deverá começar com uma letra e ter 1 a 16 caracteres alfanuméricos. Para simplificar, nós nos referimos a essa conta de usuário principal pelo seu valor padrão (postgres) ao longo deste guia.

Ao usar create-db-cluster na AWS CLI, em vez de usar o AWS Management Console, você cria o nome do usuário ao passá-lo com o parâmetro master-username. Para obter mais informações, consulte Etapa 2: Criar um cluster de banco de dados do Aurora PostgreSQL.

Se você usar o AWS Management Console, a AWS CLI ou a API do Amazon RDS e se usar o nome postgres padrão ou escolher um nome diferente, essa primeira conta de usuário do banco de dados será membro do grupo rds_superuser e terá privilégios de rds_superuser.

Noções básicas sobre o perfil rds_superuser

No PostgreSQL, um perfil pode definir um usuário, um grupo ou um conjunto de permissões específicas concedidas a um grupo ou usuário a vários objetos no banco de dados. Os comandos do PostgreSQL para CREATE USER e CREATE GROUP foram substituídos pelo comando mais geral CREATE ROLE com propriedades específicas para distinguir usuários de banco de dados. Um usuário de banco de dados pode ser considerado um perfil com o privilégio LOGIN.

nota

Os comandos CREATE USER e CREATE GROUP ainda podem ser usados. Para obter mais informações, consulte Database Roles (Perfis de banco de dados) na documentação do PostgreSQL.

O usuário postgres é o usuário de banco de dados mais privilegiado no cluster de banco de dados do Aurora PostgreSQL. Ele tem as características definidas pela seguinte instrução CREATE ROLE.

CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION VALID UNTIL 'infinity'

As propriedades NOSUPERUSER, NOREPLICATION, INHERIT e VALID UNTIL 'infinity' são as opções padrão da instrução CREATE ROLE, a menos que especificado de outra forma.

Por padrão, postgres tem privilégios concedidos à função rds_superuser e permissões para criar funções e bancos de dados. O perfil rds_superuser permite que o usuário postgres faça o seguinte:

  • Adicione as extensões que estão disponíveis para o uso com o Amazon RDS. Para obter mais informações, consulte Aurora PostgreSQL. Para obter mais informações, consulte Trabalhar com extensões e invólucros de dados externos.

  • Crie funções para usuários e conceda privilégios aos usuários. Para obter mais informações, consulte CREATE ROLE e GRANT na documentação do PostgreSQL.

  • Crie bancos de dados. Para obter mais informações, consulte CREATE DATABASE na documentação do PostgreSQL.

  • Conceda privilégios de rds_superuser a outras funções de usuário que não têm esses privilégios e revogue esses privilégios conforme necessário. Recomendamos que você conceda esse perfil somente aos usuários que executam tarefas de superusuário. Em outras palavras, você pode conceder esse perfil a administradores de banco de dados (DBAs) ou administradores de sistema.

  • Conceda (e revogue) o perfil rds_replication a usuários de banco de dados que não têm o perfil rds_superuser.

  • Conceda (e revogue) o perfil rds_password a usuários de banco de dados que não têm o perfil rds_superuser.

  • Obtenha informações de status sobre todas as conexões de banco de dados usando a visualização pg_stat_activity. Quando necessário, rds_superuser pode interromper qualquer conexão usando pg_terminate_backend ou pg_cancel_backend.

Na instrução CREATE ROLE postgres..., é possível ver que o perfil do usuário postgres não autoriza especificamente as permissões de superuser do PostgreSQL. O Aurora PostgreSQL é um serviço gerenciado, portanto, você não pode acessar o sistema operacional host nem se conectar usando a conta superuser do PostgreSQL. Muitas das tarefas que exigem o acesso de superuser em um PostgreSQL autônomo são gerenciadas automaticamente pelo Aurora.

Para obter mais informações sobre como conceder privilégios, consulte GRANT na documentação do PostgreSQL.

O perfil rds_superuser é um dos vários perfis predefinidos em um cluster de banco de dados do Aurora PostgreSQL.

nota

No PostgreSQL 13 e em versões anteriores, os perfis predefinidos são conhecidos como perfis padrão.

Na lista a seguir, você encontra alguns dos outros perfis predefinidos que são criados automaticamente para um novo cluster de banco de dados do Aurora PostgreSQL. Os perfis predefinidos e seus privilégios não podem ser alterados. Não é possível descartar, renomear ou modificar os privilégios desses perfis predefinidos. Qualquer tentativa de fazer isso gerará um erro.

  • rds_password: um perfil que pode alterar senhas e configurar restrições de senha para usuários de bancos de dados. O perfil rds_superuser recebe esse perfil por padrão e pode concedê-lo aos usuários do banco de dados. Para ter mais informações, consulte Controlar o acesso de usuários ao banco de dados PostgreSQL.

    • Para versões do RDS para PostgreSQL anteriores à 14, o perfil rds_password pode alterar senhas e configurar restrições de senha para usuários de bancos de dados e usuários com o perfil rds_superuser. Para versões do RDS para PostgreSQL 14 e posteriores, o perfil rds_password pode alterar senhas e configurar restrições de senha somente para usuários de banco de dados. Somente usuários com o perfil rds_superuser podem realizar essas ações em outros usuários com o perfil rds_superuser.

  • rdsadmin: um perfil criado para lidar com muitas das tarefas de gerenciamento que o administrador com privilégios de superuser executaria em um banco de dados PostgreSQL autônomo. Esse perfil é usado internamente pelo Aurora PostgreSQL para várias tarefas de gerenciamento.

Para ver todos os perfis predefinidos, conecte-se à instância do cluster de banco de dados primário do Aurora PostgreSQL e use o metacomando psql \du. A saída é semelhante à seguinte:

List of roles Role name | Attributes | Member of --------------+-----------------------------------+------------------------------------ postgres | Create role, Create DB +| {rds_superuser} | Password valid until infinity | rds_superuser | Cannot login | {pg_monitor,pg_signal_backend, | +| rds_replication,rds_password} ...

Na saída, é possível ver que rds_superuser não é um perfil de usuário de banco de dados (não pode fazer login), mas tem os privilégios de muitos outros perfis. Também é possível ver que esse usuário do banco de dados postgres é membro do perfil rds_superuser. Como mencionado anteriormente, postgres é o valor padrão na página Create database (Criar banco de dados) do console do Amazon RDS. Se você escolheu outro nome, esse nome será mostrado na lista de perfis.

nota

O Aurora PostgreSQL versões 15.2 e 14.7 introduziram um comportamento restritivo do perfil de rds_superuser. Um usuário do Aurora PostgreSQL precisa receber o privilégio CONNECT no banco de dados correspondente para se conectar, mesmo que ele receba o perfil de rds_superuser. Antes das versões 14.7 e 15.2 do Aurora PostgreSQL, um usuário podia se conectar a qualquer banco de dados e tabela do sistema se recebesse o perfil de rds_superuser. Esse comportamento restritivo alinha-se com a AWS e os compromissos do Amazon Aurora com a melhoria contínua da segurança.

Atualize a respectiva lógica nas aplicações se o aprimoramento acima tiver algum impacto.

Controlar o acesso de usuários ao banco de dados PostgreSQL

Os novos bancos de dados no PostgreSQL são sempre criados com um conjunto padrão de privilégios no esquema public do banco de dados que permite que todos os usuários e perfis do banco de dados criem objetos. Esses privilégios permitem que os usuários do banco de dados se conectem ao banco de dados, por exemplo, e criem tabelas temporárias durante a conexão.

Para controlar melhor o acesso dos usuários às instâncias de bancos de dados que você cria no nó primário do cluster de banco de dados do Aurora PostgreSQL , recomendamos que você revogue esses privilégios de public padrão. Depois disso, conceda privilégios específicos aos usuários do banco de dados de forma mais granular, conforme mostrado no procedimento a seguir.

Como configurar perfis e privilégios para uma nova instância de banco de dados

Suponha que você esteja configurando um banco de dados em um cluster de banco de dados do Aurora PostgreSQL recém-criado para uso por vários pesquisadores que precisam de acesso de leitura-gravação ao banco de dados.

  1. Use o psql (ou o pgAdmin) para se conectar à instância do banco de dados primário no cluster de banco de dados do Aurora PostgreSQL:

    psql --host=your-cluster-instance-1.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password

    Insira sua senha quando for solicitado. O cliente psql conecta-se e exibe o banco de dados de conexão administrativa padrão, postgres=>, como o prompt.

  2. Para evitar que os usuários do banco de dados criem objetos no esquema public, faça o seguinte:

    postgres=> REVOKE CREATE ON SCHEMA public FROM PUBLIC; REVOKE
  3. Em seguida, crie uma nova instância de banco de dados:

    postgres=> CREATE DATABASE lab_db; CREATE DATABASE
  4. Revogue todos os privilégios do esquema PUBLIC nesse novo banco de dados.

    postgres=> REVOKE ALL ON DATABASE lab_db FROM public; REVOKE
  5. Crie um perfil para os usuários do banco de dados.

    postgres=> CREATE ROLE lab_tech; CREATE ROLE
  6. Permita que os usuários do banco de dados que têm esse perfil conectem-se ao banco de dados.

    postgres=> GRANT CONNECT ON DATABASE lab_db TO lab_tech; GRANT
  7. Conceda a todos os usuários com o perfil lab_tech todos os privilégios nesse banco de dados.

    postgres=> GRANT ALL PRIVILEGES ON DATABASE lab_db TO lab_tech; GRANT
  8. Crie os usuários do banco de dados, da seguinte forma:

    postgres=> CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me'; CREATE ROLE postgres=> CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me'; CREATE ROLE
  9. Conceda a esses dois usuários os privilégios associados ao perfil lab_tech:

    postgres=> GRANT lab_tech TO lab_user1; GRANT ROLE postgres=> GRANT lab_tech TO lab_user2; GRANT ROLE

Neste ponto, o lab_user1 e o lab_user2 podem conectar-se ao banco de dados lab_db. Este exemplo não segue as práticas recomendadas para uso corporativo, o que pode incluir a criação de várias instâncias de banco de dados, esquemas diferentes e concessão de permissões limitadas. Para obter informações mais completas e cenários adicionais, consulte Managing PostgreSQL Users and Roles (Gerenciar usuários e perfis do PostgreSQL).

Para obter mais informações sobre privilégios nos bancos de dados PostgreSQL, consulte o comando GRANT na documentação do PostgreSQL.

Delegar e controlar o gerenciamento de senhas de usuários

Como DBA, talvez você queira delegar o gerenciamento de senhas de usuários. Ou talvez você queira impedir que os usuários do banco de dados alterem senhas ou reconfigurem restrições de senha, como o tempo de vida da senha. Para garantir que somente os usuários do banco de dados escolhidos possam alterar as configurações de senha, é possível ativar o recurso de gerenciamento restrito de senhas. Quando você ativa esse recurso, somente os usuários do banco de dados que receberam o perfil rds_password podem gerenciar senhas.

nota

Para usar o gerenciamento restrito de senhas, o cluster de banco de dados do Aurora PostgreSQL deve estar executando o Amazon Aurora PostgreSQL 10.6 ou superior.

Por padrão, esse recurso está off, conforme mostrado a seguir:

postgres=> SHOW rds.restrict_password_commands; rds.restrict_password_commands -------------------------------- off (1 row)

Para ativar esse recurso, use um grupo de parâmetros personalizado e altere a configuração de rds.restrict_password_commands para 1. Reinicialize a instância do banco de dados primário do Aurora PostgreSQL para que a configuração entre em vigor.

Com esse recurso ativo, os privilégios de rds_password são necessários para os seguintes comandos SQL:

CREATE ROLE myrole WITH PASSWORD 'mypassword'; CREATE ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2023-01-01'; ALTER ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2023-01-01'; ALTER ROLE myrole WITH PASSWORD 'mypassword'; ALTER ROLE myrole VALID UNTIL '2023-01-01'; ALTER ROLE myrole RENAME TO myrole2;

A renomeação de um perfil (ALTER ROLE myrole RENAME TO newname) também será restrita se a senha usar o algoritmo de hash MD5.

Com esse recurso ativo, qualquer tentativa de executar um desses comandos SQL sem as permissões do perfil rds_password gerará o seguinte erro:

ERROR: must be a member of rds_password to alter passwords

Recomendamos conceder a rds_password a apenas alguns perfis usados exclusivamente para o gerenciamento de senhas. Se você conceder privilégios de rds_password a usuários de banco de dados que não têm privilégios de rds_superuser, também precisará conceder o atributo CREATEROLE a eles.

Verifique os requisitos de senha, como expiração e complexidade necessária, no lado do cliente. Se você usar seu próprio utilitário do lado do cliente para alterações relacionadas a senhas, o utilitário precisará ser membro de rds_password e ter privilégios de CREATE ROLE.

Usar criptografia de senha SCRAM para PostgreSQL

O Salted Challenge Response Authentication Mechanism (SCRAM) é uma alternativa ao algoritmo de resumo de mensagens padrão (MD5) do PostgreSQL para senhas de criptografia. O mecanismo de autenticação SCRAM é considerado mais seguro que o MD5. Para saber mais sobre essas duas abordagens diferentes para proteger senhas, consulte Autorização com senha na documentação do PostgreSQL.

Recomendamos que você use o SCRAM em vez de o MD5 como o esquema de criptografia de senha para seu cluster de banco de dados do Aurora PostgreSQL. A partir da versão 14 do Aurora PostgreSQL, o SCRAM é compatível com todas as versões disponíveis do Aurora PostgreSQL, por exemplo, as versões 10, 11, 12, 13 e 14. É um mecanismo criptográfico de resposta a desafios que usa o algoritmo scram-sha-256 para autenticação e criptografia de senha.

Convém atualizar as bibliotecas das aplicações cliente para oferecer compatibilidade com o SCRAM. Por exemplo, versões do JDBC anteriores à 42.2.0 não são compatíveis com o SCRAM. Para obter mais informações, consulte Driver JDBC do PostgreSQL na documentação do driver JDBC do PostgreSQL. Para obter uma lista de outros drivers do PostgreSQL e compatibilidade com o SCRAM, consulte Lista de drivers na documentação do PostgreSQL.

nota

A versão 14 do Aurora PostgreSQL e versões posteriores são compatíveis com scram-sha-256 para criptografia de senha por padrão para novos clusters de banco de dados. Ou seja, o grupo de parâmetros de cluster de banco de dados padrão (default.aurora-postgresql14) tem seu valor password_encryption definido como scram-sha-256.

Configurar o cluster de banco de dados do Aurora PostgreSQL para exigir o SCRAM

Para o Aurora PostgreSQL 14.3 e versões superiores, você pode exigir que o cluster de banco de dados do Aurora PostgreSQL aceite apenas senhas que usem o algoritmo scram-sha-256.

Importante

Para proxies RDS existentes com bancos de dados PostgreSQL, se você modificar a autenticação do banco de dados para usar somente SCRAM, o proxy ficará indisponível por até 60 segundos. Para evitar o problema, faça o seguinte:

  • O banco de dados deve permitir tanto a autenticação SCRAM quanto a MD5.

  • Para usar somente a autenticação SCRAM, crie um proxy, migre o tráfego da aplicação para o novo proxy e exclua o proxy anteriormente associado ao banco de dados.

Antes de fazer alterações em seu sistema, entenda o processo completo da seguinte forma:

  • Obtenha informações sobre todos os perfis e criptografia de senha para todos os usuários do banco de dados.

  • Confira novamente as configurações dos parâmetros do cluster de banco de dados do Aurora PostgreSQL para verificar os parâmetros que controlam a criptografia de senha.

  • Se seu cluster de banco de dados do Aurora PostgreSQL usa um grupo de parâmetros padrão, você precisará criar um grupo de parâmetros de cluster de banco de dados personalizado e aplicá-lo ao seu cluster de banco de dados do Aurora PostgreSQL para que você possa modificar parâmetros quando necessário. Se seu cluster de banco de dados do Aurora PostgreSQL usa um grupo de parâmetros personalizado, você poderá modificar os parâmetros necessários posteriormente no processo, conforme necessário.

  • Altere o parâmetro password_encryption para scram-sha-256.

  • Avise a todos os usuários do banco de dados que eles precisam atualizar as senhas. Faça o mesmo para a conta postgres. As novas senhas são criptografadas e armazenadas usando o algoritmo scram-sha-256.

  • Verifique se todas as senhas são criptografadas usando o tipo de criptografia.

  • Se todas as senhas utilizarem scram-sha-256, você poderá alterar o parâmetro de rds.accepted_password_auth_method para md5+scram.

Atenção

Depois de alterar rds.accepted_password_auth_method para scram-sha-256, os usuários (perfis) com senhas criptografadas com md5 não conseguirão se conectar.

Preparar-se para exigir o SCRAM para seu cluster de banco de dados do Aurora PostgreSQL

Antes de fazer qualquer alteração em seu cluster de banco de dados do Aurora PostgreSQL, confira todas as contas de usuário do banco de dados existentes. Além disso, verifique o tipo de criptografia usada para senhas. Você pode realizar essas tarefas usando a extensão rds_tools. Essa extensão é compatível com o Aurora PostgreSQL 13.1 e versões superiores.

Como obter uma lista de usuários (perfis) de banco de dados e métodos de criptografia de senha
  1. Use o psql para conectar-se à instância primária de seu cluster de banco de dados do Aurora PostgreSQL conforme mostrado a seguir.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Instale a extensão rds_tools.

    postgres=> CREATE EXTENSION rds_tools; CREATE EXTENSION
  3. Obtenha uma lista de perfis e criptografias.

    postgres=> SELECT * FROM rds_tools.role_password_encryption_type();

    Você verá uma saída semelhante à seguinte.

    rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | md5 user_465 | md5 postgres | md5 (8 rows)

Criar um grupo de parâmetros de cluster de banco de dados personalizado

nota

Se seu cluster de banco de dados do Aurora PostgreSQL já usa um grupo de parâmetros personalizado, não é necessário criar outro.

Para obter uma visão geral dos grupos de parâmetros do Aurora, consulte Criar um grupo de parâmetros de cluster de banco de dados.

O tipo de criptografia de senha usada para senhas é definido em um parâmetro, password_encryption. A criptografia permitida pelo cluster de banco de dados do Aurora PostgreSQL é definida em outro parâmetro, rds.accepted_password_auth_method. Alterar qualquer um desses valores padrão exige que você crie um grupo de parâmetros de cluster de banco de dados personalizado e aplique-o ao seu cluster.

Você também pode usar o AWS Management Console ou a API do RDS para criar um grupo de parâmetros de cluster de banco de dados personalizado. Consulte mais informações em Criar um grupo de parâmetros de cluster de banco de dados.

Associe o grupo de parâmetros personalizado à sua instância de banco de dados.

Como criar um grupo de parâmetros de cluster de banco de dados personalizado
  1. Use o comando create-db-cluster-parameter-group da CLI para criar o grupo de parâmetros personalizado para o cluster. O exemplo a seguir usa aurora-postgresql13 como a origem desse grupo de parâmetros personalizado.

    Para Linux, macOS ou Unix:

    aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --db-parameter-group-family aurora-postgresql13 --description 'Custom DB cluster parameter group for SCRAM'

    Para Windows:

    aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --db-parameter-group-family aurora-postgresql13 --description "Custom DB cluster parameter group for SCRAM"

    Depois, associe o grupo de parâmetros personalizado ao seu cluster.

  2. Use o comando modify-db-cluster da CLI para aplicar esse grupo de parâmetros personalizado ao cluster de banco de dados do Aurora PostgreSQL.

    Para Linux, macOS ou Unix:

    aws rds modify-db-cluster --db-cluster-identifier 'your-instance-name' \ --db-cluster-parameter-group-name "docs-lab-scram-passwords

    Para Windows:

    aws rds modify-db-cluster --db-cluster-identifier "your-instance-name" ^ --db-cluster-parameter-group-name "docs-lab-scram-passwords

    Para sincronizar novamente seu cluster de banco de dados do Aurora PostgreSQL com seu grupo de parâmetros de cluster de banco de dados personalizado, reinicie a instância primária e todas as outras instâncias do cluster.

Configurar a criptografia de senha para usar o SCRAM

O mecanismo de criptografia de senha usado por um cluster de banco de dados do Aurora PostgreSQL é definido no grupo de parâmetros de cluster de banco de dados no parâmetro password_encryption. Os valores permitidos não estão definidos, md5 ou scram-sha-256. O valor padrão depende da versão do Aurora PostgreSQL da seguinte forma:

  • Aurora PostgreSQL 14: o padrão é scram-sha-256

  • Aurora PostgreSQL 13: o padrão é md5

Com um grupo de parâmetros de cluster de banco de dados personalizado anexado ao seu cluster de banco de dados do Aurora PostgreSQL, você pode modificar valores para o parâmetro de criptografia de senha.

A seguir, o console do RDS mostra os valores padrão para os parâmetros password_encryption do Aurora PostgreSQL.
Como alterar a configuração de criptografia de senha para scram-sha-256
  • Altere o valor da criptografia de senha para scram-sha-256, conforme mostrado a seguir. A alteração pode ser aplicada imediatamente porque o parâmetro é dinâmico, portanto, não é necessário reiniciar para que a alteração seja implementada.

    Para Linux, macOS ou Unix:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name \ 'docs-lab-scram-passwords' --parameters 'ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate'

    Para Windows:

    aws rds modify-db-parameter-group --db-parameter-group-name ^ "docs-lab-scram-passwords" --parameters "ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate"

Migrar senhas para funções de usuário para o SCRAM

Você pode migrar senhas de perfis de usuário para o SCRAM conforme descrito a seguir.

Como migrar senhas de usuário (função) do banco de dados do MD5 para o SCRAM
  1. Faça login como usuário administrador (nome de usuário padrão, postgres) conforme mostrado a seguir.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Confira a configuração do parâmetro password_encryption em sua instância de banco de dados do RDS para PostgreSQL usando o comando a seguir.

    postgres=> SHOW password_encryption; password_encryption --------------------- md5 (1 row)
  3. Altere o valor desse parâmetro para scram-sha-256. Esse é um parâmetro dinâmico, portanto, você não precisa reinicializar a instância depois de fazer essa alteração. Confira o valor novamente para garantir que agora ele esteja definido como scram-sha-256 da seguinte forma.

    postgres=> SHOW password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
  4. Avise a todos os usuários do banco de dados para alterar senhas. Altere também sua própria senha para a conta postgres (o usuário do banco de dados com privilégios de rds_superuser).

    labdb=> ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me'; ALTER ROLE
  5. Repita o processo para todos os bancos de dados no cluster de banco de dados do Aurora PostgreSQL.

Alterar o parâmetro para exigir o SCRAM

Esta é a etapa final do processo. Depois de fazer a alteração no procedimento a seguir, as contas de usuário (perfis) que ainda usam a criptografia md5 para senhas não poderão fazer login no cluster de banco de dados do Aurora PostgreSQL.

O rds.accepted_password_auth_method especifica o método de criptografia que o cluster de banco de dados do Aurora PostgreSQL aceita para uma senha de usuário durante o processo de login. O valor padrão é md5+scram, o que significa que qualquer método é aceito. Na imagem a seguir, você pode encontrar a configuração padrão para esse parâmetro.

O console do RDS mostrando os valores padrão e permitidos para os parâmetros rds.accepted_password_auth_method.

Os valores permitidos para esse parâmetro são md5+scram ou scram. Alterar esse valor de parâmetro para scram torna isso um requisito.

Como alterar o valor do parâmetro para exigir autenticação SCRAM para senhas
  1. Verifique se todas as senhas de usuários para todos os bancos de dados no cluster de banco de dados do Aurora PostgreSQL usam scram-sha-256 para criptografia de senha. Para fazer isso, consulte rds_tools para obter o perfil (usuário) e o tipo de criptografia, da seguinte forma.

    postgres=> SELECT * FROM rds_tools.role_password_encryption_type(); rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | scram-sha-256 user_465 | scram-sha-256 postgres | scram-sha-256 ( rows)
  2. Repita a consulta para todas as instâncias de banco de dados em seu cluster de banco de dados do Aurora PostgreSQL.

    Se todas as senhas usam scram-sha-256, você pode prosseguir.

  3. Altere o valor da autenticação de senha aceita para scram-sha-256 da seguinte forma.

    Para Linux, macOS ou Unix:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'

    Para Windows:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"