In diesem Tutorial gehen wir durch die Einrichtung einer Amazon RDS-Instance in einem privaten VPC-Subnetz und die Verbindung mit ihr über einen SSH-Tunnel.
Ein umgekehrter SSH-Tunnel stellt eine ausgehende verschlüsselte Verbindung von innerhalb Ihrer VPC zu den Servern von Chartio her. Dadurch können Sie Chartio mit einer Datenbank in Ihrem privaten VPC-Subnetz verbinden, ohne die Routing-Tabelle oder Sicherheitsgruppen zu ändern.
Übersicht
Das folgende Diagramm zeigt, wie unsere endgültige Architektur aussehen wird. Wir erstellen eine VPC mit 2 Subnetzen in der Region us-west-1; 1 öffentliches Subnetz in der Verfügbarkeitszone „us-west-1a“ und 1 privates Subnetz in der Verfügbarkeitszone „us-west-1b“. An die VPC ist ein Internet-Gateway angeschlossen, die Hauptroutentabelle enthält jedoch nur eine einzige lokale Route, die die Kommunikation innerhalb der VPC ermöglicht. Das öffentliche Subnetz verfügt über eine benutzerdefinierte Routing-Tabelle, die die lokale Route sowie eine Route enthält, die den gesamten anderen Datenverkehr über das Internet-Gateway leitet. Eine Postgres-RDS-Instance wird im privaten Subnetz mit einer angehängten Sicherheitsgruppe bereitgestellt, die nur eingehenden Datenverkehr auf Port 5432 aus dem öffentlichen Subnetz zulässt. Eine EC2-Instance wird im öffentlichen Subnetz mit einer angehängten Sicherheitsgruppe bereitgestellt, die nur eingehenden SSH-Datenverkehr von Ihrer lokalen IP und den gesamten ausgehenden Datenverkehr zulässt. Schließlich werden wir uns per SSH in die EC2-Instanz einloggen und den Postgres-Client psql
installieren , erstellen Sie eine Tabelle auf der RDS-Instanz und installieren und richten Sie einen SSH-Tunnel ein.
Erstellen Sie eine VPC
Navigieren Sie zum VPC-Dashboard in der AWS Management Console und erstellen Sie eine neue VPC.
Erstellen und verbinden Sie ein Internet-Gateway
Erstellen Sie auf der Registerkarte Internet-Gateways des VPC-Dashboards ein neues Internet-Gateway.
Hängen Sie das Gateway an die neu erstellte VPC an.
Erstellen Sie eine benutzerdefinierte Routing-Tabelle
Erstellen Sie auf der Registerkarte Routing-Tabellen des VPC-Dashboards eine neue Routing-Tabelle.
Fügen Sie der Routing-Tabelle für das Internet-Gateway eine Route hinzu.
Öffentliche und private Subnetze erstellen
Erstellen Sie ein Subnetz in der Verfügbarkeitszone us-west-1a.
Ändern Sie die Routing-Tabelle für das zuvor erstellte Subnetz von der Haupt-Routing-Tabelle in die benutzerdefinierte Routing-Tabelle.
Erstellen Sie ein Subnetz in der Verfügbarkeitszone us-west-1b.
Sicherheitsgruppen erstellen
Erstellen Sie eine Sicherheitsgruppe für die EC2-Instanz, die im öffentlichen Subnetz us-west-1a bereitgestellt werden soll.
Autorisieren Sie eingehenden SSH-Datenverkehr von Ihrer lokalen IP-Adresse. Die standardmäßigen ausgehenden Regeln sollten in Ordnung sein.
Erstellen Sie eine Sicherheitsgruppe für die Postgres-RDS-Instanz, die im privaten Subnetz us-west-1b bereitgestellt werden soll.
Autorisieren Sie eingehenden Datenverkehr aus dem öffentlichen Subnetz über Port 5432.
Entfernen Sie alle ausgehenden Regeln für die RDS-Sicherheitsgruppe.
Stellen Sie eine EC2-Instanz bereit
Stellen Sie eine EC2-Instance im öffentlichen Subnetz us-west-1a bereit. Stellen Sie sicher, dass eine öffentliche IP zugewiesen ist.
Weisen Sie die zuvor erstellte Sicherheitsgruppe zu.
Stellen Sie eine Postgres-RDS-Instanz bereit
Stellen Sie eine Postgres-RDS-Instance im privaten Subnetz „us-west-1b“ bereit. Stellen Sie sicher, dass KEINE öffentliche IP zugewiesen wird.
Installieren und richten Sie einen SSH-Tunnel ein
Stellen Sie eine SSH-Verbindung zur EC2-Instance her und führen Sie die folgenden Befehle aus.
# 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);"
Installieren Sie autossh (oder einen SSH-Tunnelmanager Ihrer Wahl) und richten Sie eine Tunnelverbindung gemäß den Anweisungen ein.
Überprüfen Sie den Schema-Editor von Chartio, um sicherzustellen, dass das Schema der RDS-Instanz wiedergegeben wurde. Wenn dies nicht der Fall ist, klicken Sie auf die Schaltfläche "Schema aktualisieren".