Por que não consigo me conectar a uma instância de banco de dados do Amazon Aurora ou Amazon RDS usando o RDS Proxy?

7 minuto de leitura
0

Não consigo me conectar a uma instância de banco de dados do Amazon Aurora ou Amazon Relational Database Service (Amazon RDS) por meio do Amazon RDS Proxy.

Breve descrição

Você pode ter falhas de conexão com o RDS Proxy por vários motivos. Os seguintes problemas são causas comuns de falhas na conexão do RDS Proxy, mesmo quando o RDS Proxy está no estado Disponível:

  • As regras do grupo de segurança, na instância de banco de dados ou no proxy do RDS, impedem a conexão.
  • O RDS Proxy funciona somente em uma nuvem privada virtual (VPC), portanto, as conexões de fora da rede privada falham.
  • A instância de banco de dados não aceita a conexão devido a uma modificação ou porque ela está em um estado indisponível.
  • Para o modo de nome de usuário e senha nativos: você usou credenciais de autenticação incorretas.
  • Para autenticação de banco de dados do AWS Identity and Access Management (IAM): o usuário ou perfil do IAM associado ao cliente não está autorizado a se conectar ao RDS Proxy.

Resolução

Observação: se você usar o RDS Proxy com uma instância de banco de dados do RDS ou um cluster de banco de dados do Aurora que usa a autenticação do IAM, todos os usuários devem autenticar suas conexões. Certifique-se de que todos os usuários que se conectam por meio de um proxy autentiquem suas conexões com nomes de usuário e senhas. Consulte Configuração de políticas do AWS Identity and Access Management (IAM) para obter mais informações sobre o suporte do IAM no RDS Proxy.

Verifique se o cliente pode acessar o RDS Proxy na rede privada de uma VPC

O RDS Proxy só pode ser usado em uma VPC e não pode ser acessível publicamente (embora a instância de banco de dados possa). Se você se conectar de fora de uma rede privada, sua conexão expira. Observe os seguintes atributos para conexão em uma VPC:

  • Se o cliente for da mesma VPC, verifique se o seu grupo de segurança do RDS Proxy permite conexões do cliente na porta padrão. As portas padrão são 3306 para MySQL e 5432 para PostgreSQL. Adicione regras ao grupo de segurança associado à VPC para permitir o tráfego necessário.
  • Se o cliente for de outra VPC, use o emparelhamento de VPC. Para gerenciar o tráfego da outra VPC, examine o grupo de segurança e as tabelas de rotas.
  • Se seu cliente for de uma rede corporativa, use o AWS Direct Connect ou o AWS Site-to-Site VPN para se conectar diretamente à VPC.
  • Se seu cliente precisar se conectar pela Internet pública, use o tunelamento SSH como um host intermediário. Isso permite a conexão ao RDS Proxy na mesma VPC.

Verifique se o RDS Proxy pode se conectar à instância de banco de dados

Para gerenciar o pool de conexões, o RDS Proxy deve estabelecer uma conexão com sua instância de banco de dados. Essa conexão usa o nome de usuário e a senha armazenados no AWS Secrets Manager. Use as melhores práticas a seguir para garantir que o RDS Proxy possa se conectar à sua instância de banco de dados:

  • Verifique se as credenciais no Secrets Manager são válidas e podem se conectar à instância de banco de dados.
  • Certifique-se de que o grupo de segurança da sua instância de banco de dados permita o tráfego do RDS Proxy. Para fazer isso, primeiro determine o grupo de segurança da instância de banco de dados e do RDS Proxy.

Se o RDS Proxy e a instância de banco de dados usarem o mesmo grupo de segurança, verifique se a regra de herança do grupo de segurança está nas regras de entrada:

Inbound rules for the RDS instance in order to allow connections from RDS proxy:
Protocol : TCP
Port Range : Port on which the DB engine is running on the RDS instance
Source : Common security group (for self referencing the security group)

Se eles usarem grupos de segurança diferentes, mencione o grupo de segurança do RDS Proxy na regra de entrada do grupo de segurança da instância de banco de dados:

Inbound rules for the RDS instance in order to allow connections from RDS proxy:
Protocol : TCP
Port range : Port on which the DB engine is running on the DB instance
Source : Security group of RDS Proxy

O RDS Proxy inicia a conexão para gerenciar o pool. Portanto, você deve permitir que o tráfego de saída alcance a instância de banco de dados. Para fazer isso, o grupo de segurança do RDS Proxy deve permitir o tráfego necessário em sua regra de saída:

Protocol : TCP
Port range : Port on which the DB engine is running on the RDS instance
Destination : Security group of DB instance

Note: If you already have the following outbound rules attached to the security group of the RDS Proxy, then there is no need to explicitly add the security group.
Outbound rules: ALL --- 0.0.0.0/0

O perfil do IAM deve ter a política de confiança de rds.amazonaws.com.

A política do IAM deve ter acesso para chamar a ação secretsmanager:GetSecretValue no segredo.

A política do IAM deve ter acesso para chamar a ação kms:Decrypt na chave do AWS Key Management Service (AWS KMS) que criptografou o segredo. Você pode obter os detalhes da chave do KMS usada pelo Secrets Manager no console do AWS KMS. Observe que o ID da chave do KMS deve ser usado na seção Recurso. Veja a política de exemplo a seguir:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": [
        "arn:aws:secretsmanager:region:account_id:secret:secret_name"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:region:account_id:key/key_id",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "secretsmanager.region.amazonaws.com"
        }
      }
    }
  ]
}

Observação: certifique-se de substituir account_id, secret_name, region, account_id e key_id pelos valores relevantes.

  • Para obter mais informações sobre o que pode impedir que o proxy se conecte à instância de banco de dados, execute o comando describe-db-proxy-targets. Em seguida, examine a estrutura de TargetHealth na saída. Consulte os campos Estado, Motivo e Descrição para obter mais informações sobre a integridade da conexão do destino do RDS Proxy:
aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME

Para obter mais informações, consulte Verificar a conectividade para um proxy.

Verifique se a instância de banco de dados aceita conexões no momento

Analise o status atual da sua instância de banco de dados e confirme se ela está no estado DISPONÍVEL. Para obter mais informações sobre como examinar o status da sua instância de banco de dados, consulte a documentação do Amazon RDS e do Aurora sobre o status de instâncias de banco de dados.

Verifique se o usuário/perfil do IAM está associado a um cliente com as permissões necessárias

Observação: essa etapa é necessária somente se você ativou a autenticação de banco de dados do IAM no RDS Proxy.

O cliente deve gerar um token para autorizar a solicitação de conexão. Para fazer isso, o usuário do IAM e o perfil do IAM associados a esse cliente devem ter a política do IAM rds-db:connect. Além disso, certifique-se de usar o ID do RDS Proxy no ARN para o atributo Recursos na política:

"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"

Para obter mais informações, consulte Criar e usar uma política do IAM para acesso do banco de dados do IAM.

Examine os logs do RDS Proxy

Ative o recurso Registro em log aprimorado do RDS Proxy. O registro em log fornece informações detalhadas sobre as instruções do SQL. Esses logs são um recurso útil para ajudar você a entender certos problemas de autenticação. Como isso aumenta a sobrecarga de desempenho, é uma prática recomendada ativá-los somente para depuração. Para minimizar a sobrecarga, o RDS Proxy desativa automaticamente essa configuração 24 horas depois de você ativá-la.

Informações relacionadas

Usar o Amazon RDS Proxy

Set up shared database connections with Amazon RDS Proxy