
Ich möchte ein vorhandenes AWS-Setup sperren. Im Moment befindet sich alles in einem einzigen Standard-VPC (Test, Staging, Produktion) und alles in öffentlichen Subnetzen.
Mein Plan besteht darin, die drei Umgebungen in drei verschiedene VPCs aufzuteilen und dabei öffentliche und private Subnetze zu nutzen.
Wir möchten auch den Zugriff auf die Server einschränken, da sie derzeit öffentliche IPs haben und jeder darauf zugreifen kann. Idealerweise würde ich einfach IP-Whitelists verwenden, aber dies ist ein Remote-Team und sie arbeiten überall, also muss ich mit dynamischen IPs zurechtkommen.
Mein Plan ist, eine OpenVPN-Instanz zu verwenden und die Leute dazu zu bringen, sich darüber zu verbinden. Nach meinem äußerst begrenzten Verständnis (Hintergrund als Softwareentwickler, sehr begrenzte Netzwerkerfahrung) sollte das funktionieren.
Meine Frage ist, wir werden 3 VPCs haben und die VPN-Instanz muss in einem davon untergebracht sein. Wie erlaube ich am besten den Zugriff auf die anderen 2 VPCs über das VPN? Ist das der beste Ansatz (direkter Zugriff) oder sollte ich eine VPN-Verbindung pro VPC haben? Letzteres scheint übertrieben, aber ich bin mir nicht sicher.
Danke.
Bearbeiten:Oder besteht eine andere Möglichkeit darin, nur ein einziges VPC zu haben, aber Test, Staging und Produktion mithilfe von Subnetzen zu isolieren? Ich habe gelesen, dass einige Leute dies tun, obwohl dies nicht ideal ist.
Antwort1
Die beste Option ist, das VPN zu verwenden, das AWS bereits in seinem VPC-Setup integriert hat. Ich spreche davon, dass Sie das, was Sie tun möchten, bereits eingerichtet haben. Vorausgesetzt, Ihre Benutzer können eine Verbindung zu einem zentralen Standort wie einem Büro oder einem Rechenzentrum herstellen. Wenn dies nicht der Fall ist, würde eine erweiterte Version des folgenden Setups funktionieren, bei der eine weitere VPN-Instanz hinzugefügt wird, mit der sich Benutzer verbinden können.
Wenn die VPCs auch untereinander kommunizieren müssen, sollten Sie mehrere VPN-Instanzen einrichten, mindestens eine pro VPC, vorzugsweise mehr als eine aus Redundanzgründen. Dazu benötigen Sie jedoch eine weitere Instanz, um das Failover zu steuern und die Routing-Tabellen von AWS mit dem neuen Pfad zu aktualisieren.
Option 1:
Ein zentraler VPN-Server, mit dem sich Benutzer in AWS verbinden können. Darauf werden Tunnel erstellt, um den Datenverkehr an Ihre anderen VPCs weiterzuleiten. Für die Erstellung des VPN-Tunnels benötigen Sie andere Instanzen in den separaten VPCs.
Option 2:
Ein zentraler VPN-Server, mit dem sich Benutzer in AWS verbinden können. Eine oder mehrere andere VPN-Instanzen pro VPC, eingerichtet mit Tunneln für die Verbindung mit den anderen VPCs.
Option 3:
AWS-VPN-Funktionalität für eine Zentrale oder ein Rechenzentrum, in dem ein Benutzer-VPN eingerichtet ist. Eine oder mehrere VPN-Instanzen in AWS mit Tunneln, die für die Verbindung zwischen VPCs eingerichtet sind.
Leider verfügt Amazon nicht über die Möglichkeit, VPN zwischen VPCs einzurichten. In den Fällen, in denen ich einen Tunnel vorschlage, benötigen Sie natürlich mindestens einen Satz von Instanzen für jedes Tunnel-Setup.
Antwort2
Ich denke tatsächlich, dass die Antwort in dieser AWS
Dokumentation zu finden ist:Konfigurationen mit Routen zu einem gesamten CIDR-Block
Nach dieser Konfiguration konnte ich eine einzelne VPN-Instanz ausführen
Fügen Sie das Routing für die Peering-Verbindung in der Routentabelle hinzu, die dem Subnetz zugeordnet ist, in dem sich meine VPN-Box befindet, und zwar auf die gleiche Weise im Subnetz des Peering-VPC, in dem sich die Boxen befinden, auf die ich zugreifen möchte.
Ich konnte ssh
ohne Probleme in diese Kisten
Antwort3
Solange sich alle Ressourcen (EC2-Instanzen und andere Dienste wie ElasticSearch oder ähnliches) in derselben Region befinden, können Sie dies mit Transit Gateways tun. Erstellen Sie die 3 VPCs (Sie können sie in separaten Konten erstellen und ihnen über Rollen beitreten lassen) und erstellen Sie dann ein einzelnes Transit Gateway. Verbinden Sie die 3 VPCs mit einzelnen Transit Gateway-Anhängen mit dem TG und hängen Sie dann jedem TGA eine Routentabelle an. Erstellen Sie ein VPN (entweder ein Kunden-Gateway für ein einzelnes Router-Gerät, mit dem alle Ihre Benutzer verbunden sind/hinter dem sie sich bereits befinden, oder eine Reihe von Client-VPN-Endpunkten) und verwenden Sie dann einen Transit Gateway-Anhang, um dieses VPN ebenfalls mit dem TG zu verbinden. Stellen Sie dann einfach sicher, dass alle Routen in den Einträgen der TG-Routingtabelle enthalten sind, und richten Sie Sicherheitsgruppen für Ihre Firewall-Regeln ein.
Nur ein Hinweis: Wenn Sie Ressourcen in mehreren Regionen haben (z. B. us-east1 und us-west1), scheint dies nicht zu funktionieren. Ich habe hier tatsächlich eine Frage, um zu sehen, ob dies möglich ist oder nicht. Es sollte mit Peering funktionieren, scheint es aber nicht.