Comment puis-je me connecter à une instance de base de données Amazon RDS privée à partir d'un ordinateur local à l'aide d'une instance Amazon EC2 utilisée en tant qu'hôte bastion ?

Lecture de 8 minute(s)
0

Je souhaite utiliser une instance Amazon Elastic Compute Cloud (Amazon EC2) comme hôte bastion (rebond). Ensuite, je veux utiliser l'instance pour me connecter à une instance de base de données Amazon Relational Database Service (Amazon RDS) privée à partir d'un ordinateur local.

Brève description

Pour utiliser une instance Amazon EC2 utilisée comme serveur de rebond pour vous connecter à une instance de base de données Amazon RDS privée à partir d'un ordinateur local, procédez comme suit :

1.    Lancez et configurez l'instance EC2, puis configurez le paramètre réseau de l'instance.

2.    Configurez les groupes de sécurité de l'instance de base de données RDS.

3.    Connectez-vous à l'instance de base de données RDS à partir de votre ordinateur local.

Important : afin de vous connecter à une instance de base de données privée Amazon RDS ou Amazon Aurora, il est recommandé d'utiliser un VPN ou AWS Direct Connect. Si vous ne pouvez pas utiliser ces options, utilisez un hôte bastion. L'exemple de configuration suivant utilise des groupes de sécurité pour restreindre l'accès. Cependant, vous pouvez restreindre la liste de contrôle d'accès au réseau (ACL réseau) des sous-réseaux afin de sécuriser la connexion. Vous pouvez également restreindre la portée du routage de votre passerelle Internet afin d'utiliser une plage plus petite au lieu de 0.0.0.0/0. Par exemple, lorsque vous ajoutez la passerelle Internet, ajoutez uniquement la plage d'adresses CIDR requise dans la table de routage pour la destination . Pour plus d’informations, consultez les Exemples d'options de routage.

Résolution

L'exemple de configuration suivant concerne une instance Amazon RDS for MySQL qui se trouve dans un Amazon Virtual Private Cloud (Amazon VPC). L'instance possède des groupes de sécurité configurés pour une instance EC2.

Lancement et configuration de l'instance EC2

1.    Ouvrez la console Amazon EC2, puis sélectionnez Launch instance (Lancer une instance).

2.    Sélectionnez une Amazon Machine Image (AMI).

3.    Choisissez un type d'instance, puis Next: Configure Instance Details (Étape suivante : configurer les détails de l'instance).

4.    Pour Network (Réseau), choisissez le VPC utilisé par l'instance de base de données RDS.

5.    Pour Subnet (Sous-réseau), sélectionnez le sous-réseau qui comporte une passerelle Internet dans sa table de routage. Si vous n'avez pas encore de passerelle Internet, vous pouvez l'ajouter au sous-réseau une fois l'instance EC2 créée.

6.    Pour Auto-assign public IP (Attribuer automatiquement l'adresse IP publique), assurez-vous que l'option Enable (Activer) est sélectionnée.

7.    Choisissez Next: Add Storage (Étape suivante : ajouter le stockage), puis modifiez le stockage si nécessaire.

8.    Choisissez Next: Add Tags (Étape suivante : ajouter des identifications), puis ajoutez des identifications si nécessaire.

9.    Sélectionnez Next: Configure Security Group (Étape suivante : configurer le groupe de sécurité), choisissez Add Rule (Ajouter une règle), puis saisissez les valeurs suivantes : Type : saisissez Custom TCP Rule (Règle TCP personnalisée). Protocol (Protocole) : saisissez TCP. Port Range (Plage de ports) : saisissez 22. Source : saisissez l'adresse IP de votre ordinateur local. Par défaut, l'adresse IP source est ouverte à tous, mais vous pouvez restreindre l'accès à votre adresse IP publique locale.

10.    Sélectionnez Review and Launch (Vérifier et lancer).

11.    Choisissez Launch (Lancer).

Configuration des groupes de sécurité de l'instance de base de données RDS

Remarque : pour connecter automatiquement une ou plusieurs instances EC2 à une base de données RDS, consultez Connexion automatique d'une instance EC2 à une base de données RDS.

1.    Ouvrez la console Amazon RDS, puis sélectionnez Databases (Bases de données) dans le panneau de navigation.

2.    Sélectionnez le nom de l'instance de base de données RDS. Vous pouvez également créer une instance de base de données RDS si vous n'en avez pas déjà une.

3.    Sélectionnez l'onglet Connectivity & security (Connectivité et sécurité).

4.    Dans la section Security (Sécurité), choisissez le lien sous VPC security groups (Groupes de sécurité VPC).

5.    Sélectionnez le groupe de sécurité, choisissez Actions, puis Edit inbound rules (Modifier les règles entrantes).

6.    Sélectionnez Add rule (Ajouter une règle), puis saisissez les valeurs suivantes : Type : saisissez Custom TCP Rule (Règle TCP personnalisée). Protocol (Protocole) : saisissez TCP. Port Range (Plage de ports) : saisissez le port de votre instance de base de données RDS. Source : saisissez l'adresse IP privée de votre instance EC2.

7.    Choisissez Save (Enregistrer).

Cette configuration pour le groupe de sécurité autorise le trafic à partir de l'adresse IP privée de l'instance EC2. Si l'instance EC2 et l'instance de base de données RDS utilisent le même VPC, vous n'avez pas besoin de modifier la table de routage de l'instance de base de données RDS. Si le VPC est différent, créez une connexion d'appairage de VPC afin d'autoriser les connexions entre ces VPC.

Remarque : faites attention si vous utilisez une solution plus évolutive. Par exemple, si vous utilisez l'ID du groupe de sécurité dans une règle de groupe de sécurité, assurez-vous qu'elle ne limite pas l'accès à une seule instance. Configurez plutôt la règle pour restreindre l'accès à toute ressource utilisant l'ID de groupe de sécurité spécifique.

Connexion à l'instance de base de données RDS depuis un ordinateur local

Les étapes de connexion à l'instance de base de données RDS peuvent varier en fonction du client utilisé. Pour plus d'informations, consultez Connexion à une instance de base de données Amazon RDS. Si vous utilisez MySQL, une bonne pratique consiste à utiliser SSL pour chiffrer la connexion entre l'application client et Amazon RDS.

L'exemple suivant utilise le client MySQL Workbench pour se connecter à l'hôte bastion :

1.    Démarrez une nouvelle connexion et sélectionnez Standard TCP/IP over SSH (TCP/IP standard via SSH) pour Connection Method (Méthode de connexion).

2.    Pour les paramètres SSH, saisissez les valeurs suivantes concernant l'instance EC2 : Auto-assign Public IP : (Attribuer automatiquement une adresse IP publique) : assurez-vous que l'option Enable (Activer) est sélectionnée pour l'option DNS Hostnames (Noms d'hôtes DNS). SSH Hostname (Nom d'hôte SSH) : saisissez le nom DNS public de l'instance EC2 ou son adresse IP publique. SSH Username (Nom d'utilisateur SSH) : saisissez le nom d'utilisateur pour votre instance EC2. Par exemple, ec2-user est le nom d'utilisateur pour les ordinateurs Linux EC2. SSH Key File (Fichier de clé SSH) : sélectionnez la clé privée que vous avez utilisée lors de la création de l'instance EC2. Remarque : une instance EC2 lancée avec une adresse IP publique possède un DNS public si l'option DNS Hostnames (Noms d'hôtes DNS) est activée sur le VPC où elle a été créée.

3.    Saisissez les détails suivants pour les paramètres de l'instance MySQL : MySQL Hostname (Nom d'hôte MySQL) : saisissez le point de terminaison de l'instance de base de données RDS. MySQL Server port (Port du serveur MySQL) : saisissez 3306. Ou, si vous utilisez un port personnalisé, saisissez le numéro du port personnalisé. Username (Nom d'utilisateur) : saisissez le nom d'utilisateur de l'instance de base de données RDS. Password (Mot de passe) : saisissez le mot de passe de l'instance de base de données RDS.

4.    Sélectionnez Test Connection (Tester la connexion).

5.    Une fois la connexion établie, saisissez un nom de connexion et enregistrez la connexion.

Pour vous connecter à une instance RDS privée à partir de votre client MySQL local à l'aide d'un tunnel SSH, consultez les commandes suivantes.

Linux ou macOS :

1.    Exécutez la commande suivante pour configurer un tunnel SSH :

ssh -i "YOUR_EC2_KEY" -L LOCAL_PORT:RDS_ENDPOINT:REMOTE_PORT EC2_USER@EC2_HOST -N -f

Remarque : Remplacez YOUR_EC2_KEY, LOCAL_PORT, RDS_ENDPOINT, REMOTE_PORT, EC2_USER et EC2_HOST par les informations pertinentes.

Une fois les champs personnalisés remplis dans la commande précédente, celle-ci ressemble à ce qui suit :

ssh -i "ec2Key.pem" -L 3336:rdsinstance.xxx.xxx.rds.amazonaws.com:3306 ec2-user@ec2-34-244-136-223.xxxcompute.amazonaws.com -N -f

2.    Exécutez les commandes suivantes pour tester et confirmer que le tunnel écoute sur le port local :

lsof -i4 -P | grep -i "listen" | grep LOCAL_PORT
nc -zv 127.0.0.1 LOCAL_PORT

Remarque : veillez à remplacer LOCAL_PORT par le numéro de votre port local.

3.    Si votre tunnel écoute correctement sur votre port local, vous devriez obtenir une sortie semblable à la suivante :

lsof -i4 -P | grep -i "listen" | grep 3336
ssh       17692 user    8u  IPv4 0x3bc46bcfeffce12f      0t0  TCP localhost:3336 (LISTEN)

nc -zv 127.0.0.1 3336
Connection to 127.0.0.1 port 3336 [tcp/directv-tick] succeeded!

4.    Exécutez la commande suivante pour vous connecter à votre instance RDS depuis votre ordinateur local en utilisant votre instance EC2 en tant qu'hôte bastion :

mysql -h 127.0.0.1 -P LOCAL_PORT -u RDS_USER -p

Remarque : RemplacezLOCAL_PORT par le numéro de votre port local et DB_USER par votre nom d'utilisateur de base de données RDS.


Informations connexes

Comment résoudre les problèmes de connexion à une instance de base de données Amazon RDS ?