Ao usar o AWS re:Post, você concorda com os AWS re:Post Termos de uso

Como faço para usar a autenticação do IAM para me conectar ao Amazon RDS para PostgreSQL ou Amazon Aurora PostgreSQL?

5 minuto de leitura
0

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:

  1. Ative a autenticação do banco de dados do IAM na instância de banco de dados do RDS.
  2. 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.
  3. Em seguida, anexe esse perfil do IAM à instância do Amazon Elastic Compute Cloud (Amazon EC2).
  4. Para identificar o perfil do IAM, gere um token de autenticação da AWS.
  5. Baixe o arquivo do certificado raiz SSL ou o arquivo do pacote de certificados.
  6. 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:

  1. Ative a autenticação do IAM em sua instância de banco de dados do RDS ou em seu cluster Aurora.

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

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

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

  4. 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;
  5. 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 ~]$
  6. 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.

  7. (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
  8. 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

Alternar seu certificado SSL/TLS.