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

Dernière mise à jour : 07/02/2022

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 lorsque 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
  • Utilisation d'informations d'identification d'authentification incorrectes (en cas d'utilisation du mode natif du nom d'utilisateur/mot de passe)
  • L'utilisateur ou le rôle AWS Identity and Access Management (IAM) associé au client n'est pas autorisé à se connecter au proxy RDS (lorsque l'authentification de base de données IAM est utilisée)

Solution

Remarque : si vous utilisez le proxy RDS avec une instance de base de données RDS ou un cluster de bases de données Aurora dont l'authentification IAM est activée, assurez-vous que tous les utilisateurs qui se connectent via un proxy s'authentifient à l'aide de noms d'utilisateur et de mots de passe. Pour plus d'informations sur la prise en charge de l'IAM dans le proxy RDS, consultez la section Configuration des politiques IAM.

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 du client sur le port par défaut. Les ports par défaut sont 3306 pour MySQL et 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, utilisez l'appairage de 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 Site-to-Site VPN pour vous connecter directement au VPC.
  • Si votre client doit se connecter via l'Internet public, utilisez letunnel SSH en tant qu'hôte intermédiaire. Cela vous autorise à vous 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. Cette connexion utilise le nom d'utilisateur et le mot de passe stockés dans Secret Manager, puis établit la connexion. Utilisez les bonnes pratiques suivantes 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 alors 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 alors 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 peut récupérer et utiliser les informations d'identification requises pour les connexions.
    • Assurez-vous que le rôle IAM a la politique 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'examination 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. Étant donné que l'activation de ces journaux augmente les performances, il est une bonne pratique de les activer uniquement pour le débogage. Pour minimiser la charge, le proxy RDS 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 ?