AWS VPC Endpoint SecurityGroupEgress-Regel

AWS VPC Endpoint SecurityGroupEgress-Regel

Ich versuche erfolglos, über einen AWS VPC-Endpunkt auf eine S3-Ressource zuzugreifen. Können Sie mir helfen?

Einzelheiten:

Ich habe eine EC2-Instanz innerhalb einer Sicherheitsgruppe. Diese befindet sich innerhalb eines VPC und Subnetzes mit einem Internetendpunkt und einem Routingtabelleneintrag für 0.0.0.0/0. Ich möchte jedoch nicht, dass diese spezielle EC2-Instanz mit dem Internet kommunizieren kann, sondern mit einem S3-Bucket unterhttps://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.sh.

Als Reaktion darauf habe ich die standardmäßige Regel zum Zulassen von ausgehendem Verkehr in der Sicherheitsgruppe überlastet, sodass ausgehende Verbindungen verweigert werden, indem ich eine Regel zum ausgehenden Verkehr zu Port 22 hinzugefügt habe. Aus der Amazon-Dokumentation geht hervor, dass lokale (private) AWS-Adressen weiterhin zugelassen werden. Vor diesem Hintergrund habe ich einen VPC-Endpunkt in meine VPC eingefügt und meine Routing-Tabelle mit pl-6da54004 (com.amazonaws.eu-west-1.s3) :: vpce-9f47a1f6 aktualisiert.

Wenn dies erledigt ist, kann ich nicht mehr von meiner EC2-Instanz aus auf meine S3-Ressource zugreifen. Ich versuche es mit wgethttps://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.shohne Erfolg.

Haben Sie eine Idee, was los ist? Ich denke:

  • Meine EC2-Instanz scheint die S3-Domäne auf 54.231.130.244 aufzulösen, aber das ist nicht bei jeder Instanz gleich. Muss ich eine SecurityGroupEgress-Regel oder eine Route für einen S3-IP-Bereich hinzufügen? Wenn ja, wie groß ist der Bereich?
  • Vielleicht sollte ich auf meine S3-Ressourcen über einen anderen Domänennamen zugreifen, der stattdessen in eine interne IP-Adresse aufgelöst wird?

Vielen Dank, Toby

Antwort1

Zunächst ein wenig Hintergrund. Der DNS-Resolver für VPC-Instanzen ist eine virtuelle Komponente, die in die Infrastruktur integriert ist. Er ist immun gegen die Regeln der ausgehenden Sicherheitsgruppe ... aber die Auflösung der Hostnamen für S3-Endpunkte ändert sich nicht, wenn Sie einen S3-Endpunkt für Ihre VPC bereitstellen.

Ein VPC-Endpunkt für S3 hat verschiedene Aufgaben. Wenn Sie wissen, was das ist, wissen Sie, ob er das tut, was Sie brauchen. tl;dr: In diesem Fall tut er das.

Zunächst fällt auf, dass sie in den Routentabellen als „Präfixlisten“ konfiguriert sind. Ein VPC-Endpunkt verwendet eine Reihe vordefinierter IPv4-Netzwerkpräfixe und kapert die Routen zu diesen Präfixen für jede Routentabelle, die die jeweilige Präfixliste enthält, sodass Ihr Datenverkehr zu einem dieser Netzwerke den VPC-Endpunkt durchläuft und nicht das Internet-Gateway und eine dazwischenliegende NAT-Instanz.

Im Wesentlichen wird dadurch ein neuer Pfad von Ihrem VPC zu den IP-Adressbereichen des AWS-Dienstes geöffnet. Allerdings ist der Ort, an den Sie diese IP-Adressen führen, zunächst nicht derselbe, an den sie Sie ohne den vorhandenen VPC-Endpunkt führen würden.

Der erste Ort, den Sie treffensieht aus wie S3Es ist jedoch nicht identisch mit dem internetbasierten S3, da es die Richtlinien Ihres VPC-Endpunkts kennt, sodass Sie steuern können, auf welche Buckets und Aktionen zugegriffen werden kann. Diese überschreiben die anderen Richtlinien nicht, sondern ergänzen sie.

Eine Endpunktrichtlinie überschreibt oder ersetzt keine IAM-Benutzerrichtlinien oder S3-Bucket-Richtlinien. Es handelt sich um eine separate Richtlinie zur Steuerung des Zugriffs vom Endpunkt auf den angegebenen Dienst. Allerdings müssen alle Arten von Richtlinien – IAM-Benutzerrichtlinien, Endpunktrichtlinien, S3-Richtlinien und Amazon S3 ACL-Richtlinien (sofern vorhanden) – die erforderlichen Berechtigungen erteilen, damit der Zugriff auf Amazon S3 erfolgreich ist.

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-access

Beachten Sie: Wenn Sie den Bucket-Zugriff nicht mit einer entsprechenden Richtlinie einschränken, sondern stattdessen den Vollzugriff aktivieren, können die Instanzen auf jeden Bucket in der S3-Region zugreifen, sofern die Richtlinien des Buckets dies zulassen (einschließlich öffentlicher Buckets).

Jetzt kommt der schwierige Teil. Wenn die Sicherheitsgruppe Ihrer Instanz keinen ausgehenden Zugriff auf S3 zulässt, weil die standardmäßige „Zulassen“-Regel entfernt wurde, können Sie der Instanz mit einer speziell gestalteten Sicherheitsgruppenregel den Zugriff auf S3 über den VPC-Endpunkt erlauben:

Fügen Sie der Sicherheitsgruppe eine neue Ausgangsregel hinzu. Wählen Sie als „Typ“ HTTPS. Wählen Sie als Ziel „Benutzerdefinierte IP“.

Die Dokumentation stimmt nicht mit dem überein, was ich in der Konsole sehe:

In der Zielliste werden die Präfixlisten-IDs und Namen für die verfügbaren AWS-Dienste angezeigt.

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-security

Nun ja... nein, das tut es nicht. Zumindest nicht für mich, zumindest nicht zum Zeitpunkt dieses Schreibens.

Die Lösung besteht darin, „Benutzerdefinierte IP“ auszuwählen und dann anstelle eines IP-Adressblocks oder einer Sicherheitsgruppen-ID die Präfixlisten-ID für Ihren VPC-Endpunkt in der Form pl-xxxxxxxxin das Feld für die IP-Adresse einzugeben. Sie finden dies in der VPC-Konsole, indem Sie sich die Ziele in einem der mit dem VPC-Endpunkt verknüpften Subnetze ansehen.

verwandte Informationen