Dans ce didacticiel, nous allons parcourir la configuration d'une instance Amazon RDS dans un sous-réseau VPC privé et nous y connecter à l'aide d'un tunnel SSH.
Un tunnel SSH inversé établit une connexion cryptée sortante depuis votre VPC vers les serveurs de Chartio. Cela vous permet de connecter Chartio à une base de données de votre sous-réseau VPC privé sans modifier sa table de routage ou ses groupes de sécurité.
Aperçu
Le diagramme suivant décrit à quoi ressemblera notre architecture finale. Nous allons créer un VPC avec 2 sous-réseaux dans la région us-west-1 ; 1 sous-réseau public dans la zone de disponibilité us-west-1a et 1 sous-réseau privé dans la zone de disponibilité us-west-1b. Le VPC aura une passerelle Internet attachée, mais la table de routage principale ne contiendra qu'une seule route locale qui permet la communication au sein du VPC. Le sous-réseau public aura une table de routage personnalisée qui inclut la route locale ainsi qu'une route dirigeant tout le reste du trafic via la passerelle Internet. Une instance Postgres RDS sera provisionnée dans le sous-réseau privé avec un groupe de sécurité attaché qui autorise uniquement le trafic entrant sur le port 5432 à partir du sous-réseau public. Une instance EC2 sera provisionnée dans le sous-réseau public avec un groupe de sécurité attaché qui autorise uniquement le trafic SSH entrant à partir de votre adresse IP locale et tout le trafic sortant. Enfin, nous allons SSH dans l'instance EC2, installer le client Postgres psql
, créez une table sur l'instance RDS, puis installez et configurez un tunnel SSH.
Créer un VPC
Accédez au tableau de bord VPC dans AWS Management Console et créez un nouveau VPC.
Créer et attacher une passerelle Internet
Dans l'onglet Passerelles Internet du tableau de bord VPC, créez une nouvelle passerelle Internet.
Attachez la passerelle au VPC nouvellement créé.
Créer une table de routage personnalisée
Dans l'onglet Tables de routage du tableau de bord VPC, créez une nouvelle table de routage.
Ajoutez une route à la table de routage pour la passerelle Internet.
Créer des sous-réseaux publics et privés
Créez un sous-réseau dans la zone de disponibilité us-west-1a.
Modifiez la table de routage du sous-réseau créé précédemment de la table de routage principale à la table de routage personnalisée.
Créez un sous-réseau dans la zone de disponibilité us-west-1b.
Créer des groupes de sécurité
Créez un groupe de sécurité pour l'instance EC2 à provisionner dans le sous-réseau public us-west-1a.
Autorisez le trafic SSH entrant à partir de votre adresse IP locale. Les règles sortantes par défaut devraient convenir.
Créez un groupe de sécurité pour l'instance Postgres RDS à provisionner dans le sous-réseau privé us-west-1b.
Autorisez le trafic entrant du sous-réseau public sur le port 5432.
Supprimez toutes les règles sortantes pour le groupe de sécurité RDS.
Provisionner une instance EC2
Provisionnez une instance EC2 dans le sous-réseau public us-west-1a. Assurez-vous qu'une adresse IP publique est attribuée.
Attribuez le groupe de sécurité créé précédemment.
Provisionner une instance RDS Postgres
Provisionnez une instance Postgres RDS dans le sous-réseau privé us-west-1b. Assurez-vous qu'aucune adresse IP publique n'est attribuée.
Installer et configurer un tunnel SSH
SSH dans l'instance EC2 et exécutez les commandes suivantes.
# Substitute 54.153.81.83 with your instance's public IP.
ssh [email protected]
# Create a table so Chartio has something to reflect.
# Substitute chartio.cacziwncd30i.us-west-1.rds.amazonaws.com with your instance's endpoint.
sudo apt-get update
sudo apt-get install postgresql-client
psql -h chartio.cacziwncd30i.us-west-1.rds.amazonaws.com -p 5432 -d chartio -U chartio -c "CREATE TABLE foo(id int);"
Installez autossh (ou le gestionnaire de tunnel SSH de votre choix) et configurez une connexion par tunnel en suivant les instructions.
Vérifiez l'éditeur de schéma Chartio pour vous assurer que le schéma de l'instance RDS a été reflété. Si ce n'est pas le cas, essayez de cliquer sur le bouton "Actualiser le schéma".