Accéder à une instance AWS RDS localisée à l'intérieur d'un VPC avec MySQL Workbench

publié le

Dans ce tutoriel, nous allons voir comment configurer un hôte bastion pour avoir accès à une instance d'Amazon RDS privée résidant dans un VPC sans l'aide d'une connexion VPN.

Les VPC sont des outils très puissants pour la sécurisation d'une infrastructure hébergée dans le nuage, la contre-partie de cette sécurité accrue est un accès plus difficile aux instances localisées à l'intérieur du VPC à partir de l'extérieur pour faire une sauvegarde des données ou de la maintenance. Nous allons voir la procédure pour se connecter à une instance AWS RDS à distance.

Dans cet article, nous:
- Utiliserons le VPC par défaut.
- Créerons une nouvelle instance RDS privée (non accessible publiquement) dans le VPC par défaut.
- Créerons une nouvelle instance Linux qui agira comme hôte bastion pour le VPC par défaut.

Étape 1: Créer une instance RDS dans le VPC


Sélectionnez le type de DB. Pour cet exemple, nous allons utiliser MySQL. Si vous utilisez un autre type de base de données, les étapes sont équivalentes, à l'exception du numéro de port.


Spécification de l'instance


Spécification de la BD


Faites attention de sélectionner No pour public access.
Lancez la création de la BD et allez dans la console EC2. Dans le menu de gauche, sélectionnez security groups:


Vous devriez voir une nouvelle règle de sécurité créée par l'assistant nommée ‘rds-launch-wizard’, sélectionnez-la.


Dans l'onglet inbound tab, sélectionnez la source pour MySQL TCP à anywhere (l'accès sera ouvert à toute instance présente à l'intérieur du VPC uniquement).


Note: En production, pour une sécurité accrue, il est recommandé de spécifier uniquement les adresses IP d'instances qui on besoin d'avoir accès à l'instance RDS dans le champ source.

Étape 2: Lancer et configurer un hôte bastion

Comme l'instance RDS d'Amazon n'est pas publique, nous ne pourrons pas avoir accès à l'extérieur du VPC (donc par Internet).
Il y a différentes options pour avoir accès à l'instance RDS, comme créer une connexion VPN ou ajouter un hôte bastion. Dans ce tutorial, nous retiendrons la seconde option, car elle est rapide et ne nécessite pas de client VPN.

Retournez dans la console d'AWS et sélectionnez EC2 dans la section compute:


Ensuite, sélectionnez Launch instance:


Pour l'hôte bastion, nous allons choisir une image d'Amazon Linux:


Choisissez l'option la moins coûteuse, par exemple t2.nano. Cette instance sera en effet utilisée uniquement pour avoir un accès ssh au VPC.

Sélectionnez le default VPC.

Pour garder cette démo concise, nous allons ouvrir le port 22 au monde entier. En réalité, vous devez restreindre l'accès à votre adresse IP publique uniquement (la source du groupe de sécurité pour la règle TCP 22).


Étape 3: Configurer une nouvelle connexion dans MySQL Workbench

Créez une connexion

Sélectionnez Standard TCP/IP over SSH.
SSH Hostname : Entrez l'adresse DNS publique d'hôte bastion.
SSH username: ec2-user
SSH Key : Sélectionnez la clé privée de l'hôte bastion.
MySQL Hostname: Entrez l'adresse DNS de l'instance RDS.
MySQL port : 3306
Username: Le nom d'utilisateur créé par l'assitant de création d'instance RDS lors de la création de la BD.


Cliquez sur Test connection:


Si c'est la première fois que vous accédez à l'hôte bastion depuis MySQL Workbench, un popup demandera d'ajouter l'empreinte du serveur SSH Server fingerprint, cliquez sur Continue.


Entrez le mot de passe de l'utilisateur de l'instance d'Amazon RDS.


Vous devriez maintenant avoir un message de confirmation, notifiant que MySQL Workbench est bien capable de communiquer avec l'instance d'Amazon RDS.

Vous pouvez finalement sauvegarder la configuration pour se connecter à la base MySQL et ouvrir une connection pour lister les bases de données, les tables, etc...


Conclusion

Dans cet exemple, nous avons utilisé le VPC par défaut d'AWS pour simplifier les étapes. Dans un environnement réel, l'instance RDS devrait être localisée dans un sous-réseau privé tandis que l'hôte bastion sera dans un sous-réseau public. La seule différence sera de bien configurer l'ACL pour autoriser l'accès SHH du bastion à l'instance RDS sur le port 22 (ssh).

Si vous avez des questions, n'hésitez pas à les poser dans la section Commentaires.

comments powered by Disqus