Pourquoi ne puis-je pas me connecter à mon instance de base de données Amazon RDS ou Amazon Aurora à l'aide du proxy RDS ?

Date de la dernière mise à jour : 03/12/2020

Je ne peux pas me connecter à mon instance de base de données Amazon Relational Database Service (Amazon RDS) ou Amazon Aurora via un proxy RDS. Pourquoi ne puis-je pas me connecter à ma base de données ?

Brève description

Il existe un certain nombre de raisons pour lesquelles vous pouvez rencontrer des échecs de connexion avec le proxy RDS, même si le proxy RDS est à l'état Disponible. Les échecs de connexion du proxy RDS ont les causes suivantes :

  • Les règles de groupe de sécurité, au niveau de l'instance de base de données ou du proxy RDS, empêchent la connexion
  • Le proxy RDS ne fonctionne actuellement que dans un VPC, de sorte que les connexions extérieures au réseau privé échouent
  • L'instance de base de données n'accepte pas la connexion en raison d'une modification ou parce qu'elle est dans un état non disponible
  • Informations d'identification incorrectes utilisées (lorsque le mode nom d'utilisateur/mot de passe natif est utilisé)
  • L'utilisateur ou le rôle IAM associé au client n'est pas autorisé à se connecter au proxy RDS (lorsque l'authentification de la base de données IAM est utilisée)

Suivez les étapes de dépannage de cet article pour résoudre ces problèmes.

Résolution

Vérifiez que le client peut atteindre le proxy RDS dans le réseau privé du VPC

Le proxy RDS ne peut être utilisé que dans un VPC et ne peut pas être accessible publiquement (bien que l'instance de base de données puisse l'être). Si vous vous connectez depuis l'extérieur d'un réseau privé, votre connexion expire.

  • Si le client provient du même VPC, vérifiez que le groupe de sécurité de votre proxy RDS autorise les connexions depuis le client sur le port par défaut selon le moteur de base de données (3306 pour MySQL, 5432 pour PostgreSQL). Ajoutez des règles au groupe de sécurité associé au VPC pour autoriser le trafic requis.
  • Si le client provient d'un autre VPC, vous pouvez utiliser l' appairage VPC. Examinez le groupe de sécurité et les tables de routage pour gérer le trafic provenant de l'autre VPC.
  • Si votre client provient d'un réseau d'entreprise, utilisez Direct Connect ou VPN de site à site pour vous connecter directement au VPC.
  • Si votre client a besoin de se connecter via l'Internet public, utilisez SSH Tunneling comme host intermédiaire pour se connecter au proxy RDS au sein du même VPC.

Vérifiez que le proxy RDS peut se connecter à l'instance de base de données

Le proxy RDS doit établir une connexion avec votre instance de base de données pour gérer le groupes de connexions. Il utilise le nom d'utilisateur et le mot de passe stockés dans Secret Manager, puis établit la connexion. Utilisez les bonnes pratiques ci-dessous pour vous assurer que le proxy RDS peut se connecter à votre instance de base de données :

  • Vérifiez que les informations d'identification dans Secret Manager sont valides et peuvent se connecter à l'instance de base de données.
  • Assurez-vous que le groupe de sécurité de votre instance de base de données autorise le trafic provenant du proxy RDS.
    • Si les groupes de sécurité du proxy RDS et de l'instance de base de données sont différents, vous pouvez mentionner le groupe de sécurité du proxy RDS dans la règle entrante du groupe de sécurité de votre instance de base de données.
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
    • Si le proxy RDS et l'instance de base de données utilisent le même groupe de sécurité, vérifiez que la règle d'héritage du groupe de sécurité est mentionnée dans les règles entrantes.
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)
  • Étant donné que le proxy RDS initie la connexion pour gérer le groupe, le trafic sortant doit être autorisé à atteindre l'instance de base de données. Le groupe de sécurité doit autoriser le trafic requis dans ses règles sortantes.
Outbound rules for the RDS Proxy in order to allow traffic reach the RDS instance:
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
  • Vérifiez que le rôle IAM associé au proxy RDS dispose de l'accès requis pour récupérer et utiliser les informations d'identification requises pour les connexions.
    • Assurez-vous que le rôle IAM a la stratégie de confiance pour rds.amazonaws.com.
    • Assurez-vous que la stratégie IAM a accès pour appeler l'action secretsManager:GetSecretValue sur le secret.
    • Assurez-vous que la stratégie IAM a accès pour appeler l’action kms:Decrypt sur la clé AWS Key Management Service (AWS KMS) utilisée pour chiffrer le secret. Vous pouvez obtenir les détails de la clé KMS utilisée par AWS Secrets Manager à partir de la console AWS KMS. Notez que l'ID de clé KMS doit être utilisé pour la section Ressource.
    Example Policy:
    
    {
        "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"
                    }
                }
            }
        ]
    }
  • Pour plus d'informations sur ce qui peut empêcher le proxy de se connecter à l'instance de base de données, consultez la structure TargetHealth dans la sortie de la commande describe-db-proxy-targets. Consultez les champs État, Raison et Description pour plus d'informations sur l'état de la connexion de la cible du proxy RDS.
  • aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME

    Pour plus d'informations, voir Vérification de la connectivité pour un proxy.

    Vérifiez que l'instance de base de données accepte actuellement les connexions

    Vérifiez l'état actuel de votre instance de base de données et confirmez qu'elle est à l'état DISPONIBLE. Pour plus d'informations sur l'examen de l'état de votre instance de base de données, consultez la documentation RDS et Aurora pour connaître le statut de l'instance de base de données.

    Vérifiez que l'utilisateur/le rôle IAM est associé à un client disposant des autorisations obligatoires

    Remarque : cette étape n'est obligatoire que si vous avez activé l'authentification de base de données IAM sur le proxy RDS.

    Le client doit générer un jeton pour autoriser la demande de connexion. Pour ce faire, l'utilisateur IAM et le rôle IAM associés à ce client doivent disposer de la stratégie IAM rds-db:connect. Assurez-vous également d'utiliser l'ID de proxy RDS dans l'ARN pour l'attribut Resources de la stratégie.

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

    Passez en revue les journaux du proxy RDS

    Activez la fonction de journalisation améliorée du proxy RDS. L'activation de la journalisation donne des informations détaillées sur les instructions SQL. Ces journaux sont une ressource utile pour vous aider à comprendre certains problèmes d'authentification. Ces journaux doivent être activés uniquement pour le débogage car ils ajoutent une surcharge aux performances. Pour minimiser la charge, RDS Proxy désactive automatiquement ce paramètre 24 heures après l'avoir activé.


    Cet article vous a-t-il été utile ?


    Besoin d'aide pour une question technique ou de facturation ?