Como faço para usar a autenticação do IAM para me conectar ao Amazon RDS para PostgreSQL ou Amazon Aurora PostgreSQL?
Tenho uma instância de banco de dados Amazon Relational Database Service (Amazon RDS) para PostgreSQL ou compatível com Amazon Aurora PostgreSQL. Quero usar a autenticação do AWS Identity and Access Management (AWS IAM) para me conectar à minha instância.
Breve descrição
A autenticação do banco de dados do IAM é mais segura do que os métodos de autenticação nativos. Para obter mais informações, consulte Autenticação de banco de dados do IAM para MariaDB, MySQL e PostgreSQL.
Para usar os perfis do IAM para configurar a autenticação de banco de dados do IAM, conclua as seguintes etapas:
- Ative a autenticação do banco de dados do IAM na instância de banco de dados do RDS.
- Crie um usuário do IAM e anexe uma política do IAM que mapeie o usuário do banco de dados ao perfil do IAM.
- Em seguida, anexe esse perfil do IAM à instância do Amazon Elastic Compute Cloud (Amazon EC2).
- Para identificar o perfil do IAM, gere um token de autenticação da AWS.
- Baixe o arquivo do certificado raiz SSL ou o arquivo do pacote de certificados.
- Para se conectar à instância de banco de dados do RDS, use suas credenciais de perfil do IAM e o token de autenticação ou um certificado SSL.
Se você executa o MySQL, consulte Como permitir que os usuários se autentiquem em uma instância de banco de dados do Amazon RDS para MySQL usando suas credenciais do IAM?
Solução
Pré-requisitos
Preencha os seguintes pré-requisitos:
- Inicie uma instância de banco de dados do Amazon RDS para PostgreSQL ou um cluster compatível com o Aurora PostgreSQL que ofereça suporte à autenticação de banco de dados do IAM
- Inicie uma instância do EC2 para se conectar ao banco de dados
Para mais informações, consulte Autenticação de banco de dados do IAM para Aurora e autenticação de banco de dados do IAM para Amazon RDS.
Para verificar a configuração necessária para a autenticação do IAM com uma instância do Amazon RDS ou um cluster do Aurora ou solucionar problemas de autenticação do IAM, use o runbook AWSSupport-TroubleshootRDSIAMAuthentication. Para obter mais informações, consulte AWSSupport-TroubleshootRDSIAMAuthentication.
Usar autenticação de banco de dados do IAM
Para se conectar a uma instância de banco de dados do RDS ou a um cluster de banco de dados compatível com o Aurora PostgreSQL, use a autenticação de banco de dados do IAM para PostgreSQL:
-
Ative a autenticação do IAM em sua instância de banco de dados do RDS ou em seu cluster Aurora.
-
Crie um usuário do IAM e, em seguida, anexe a seguinte política:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:REGION:ACCOUNT:dbuser:RESOURCE_ID/iamuser" ] } ] }
Observação: Substitua iamuser pelas informações do usuário do IAM.
-
Faça login na sua instância de banco de dados do Amazon RDS para PostgreSQL ou no cluster compatível com o Aurora PostgreSQL como usuário principal:
psqlpsql -h {database or cluster endpoint} -U {Master username} -d {database name}
pgAdmin
Escolha Servidores no painel de navegação pgAdmin. Em seguida, escolha o nome do servidor e insira a senha do usuário principal.
-
Crie um usuário filho que tenha o mesmo nome do usuário do IAM:
CREATE USER iamuser WITH LOGIN; GRANT rds_iam TO iamuser;
-
Execute generate-db-auth-token com o nome de usuário que você criou. Esta ação cria uma senha temporária que você usa em uma etapa posterior:
[ec2-user@ip-172-31-24-237 ~]$ export RDSHOST="aurorapg-ssl.cluster-XXXXXXXXXXX.us-west-2.rds.amazonaws.com"[ec2-user@ip-172-31-24-237 ~]$ export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username iamuser)" [ec2-user@ip-172-31-24-237 ~]$ echo $PGPASSWORD aurorapg-ssl.cluster-XXXXXXX.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=iamuser&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Credential=AKIA2O5GXNVDTAMABZFE%2F20190909%2Fus-west-2%2Frds-db%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Date=20190909T171907Z&X-Amz-Signature=ead28003477c3082e5a17529ac8316db4f4bdf2fa8f79d3aaea806e9bafa2673 [ec2-user@ip-172-31-24-237 ~]$
-
Para criar uma nova conexão de servidor no pgAdmin, escolha a guia Geral e, em seguida, desmarque a caixa Conectar agora. Na guia Conexão, digite o nome do host, a porta e o nome de usuário, mas não digite a senha ainda. Na guia SSL, defina o modo SSL como Exigir e, em seguida, salve a conexão do servidor.
-
(Opcional) Você pode alterar o modo SSL para verificação completa na guia SSL. Para o modo SSL selecionado, insira o caminho do certificado. Para baixar o caminho, execute o seguinte comando:
wget https://s3.amazonaws.com/rds-downloads/rds-ca-2019-root.pem
Se sua aplicação não aceitar cadeias de certificados, baixe o pacote de certificados que inclui os certificados raiz antigos e novos:
$ wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
-
Conecte-se ao servidor. Quando solicitado, insira o token temporário que generate-db-auth-token gerou para o usuário iamuser.
Para psql, execute o comando a seguir para se conectar. Este exemplo usa a variável de ambiente $PGPASSWORD que você definiu ao gerar o token. Essa variável inicia a conexão:
psql -h aurorapg-ssl.cfkx5hi8csxj.us-west-2.rds.amazonaws.com -p 5432 "sslmode=verify-full sslrootcert=rds-ca-2019-root.pem dbname=aurora_pg_ssl user=iamuser"
**Observação:**Cada token expira 15 minutos após sua geração. Se você tentar restabelecer a conexão com o mesmo token, a conexão falhará. Você deve gerar um novo token.
Se você ainda receber um erro semelhante a falha na autenticação do PAM para seu usuário, verifique se a conta da AWS faz parte de uma organização do AWS Organizations. Se a conta fizer parte de uma organização, adicione rds-db:* à política de controle de serviços (SCP) da organização à qual a conta pertence. Além disso, verifique se há uma hierarquia de usuário ou perfil do IAM que não tem a permissão rds-db.
Para mais informações, consulte Como usar políticas de controle de serviço para definir barreiras de proteção em todas as contas em sua organização da AWS.
Informações relacionadas
Como usar a autenticação do IAM com edição compatível com Aurora PostgreSQL
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos