Ich habe meiner VPC mithilfe von CloudFormation einen VPC-Endpunkt hinzugefügt und die Verwendung von s3 zugelassen. Die Routen werden in der AWS-Konsole angezeigt, jedoch nicht in den lokalen Routing-Tabellen der EC2-Instanzen:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.29.4.129 0.0.0.0 UG 0 0 0 eth0
169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
172.29.4.128 0.0.0.0 255.255.255.128 U 0 0 0 eth0
Wie überprüfe ich, ob die EC2-Instanzen in der VPC tatsächlich den VPC-Endpunkt für S3 verwenden und nicht die verfügbare Internetverbindung?
Antworten:
Sie können die S3-Protokollierung aktivieren und prüfen, ob auf die Dateien nicht über öffentliche, sondern über Ihre private IP zugegriffen wird. Wenn Ihre Protokollierung anzeigt, dass private IP-Adressen auf die Buckets zugreifen, haben Sie sie korrekt konfiguriert. Viel Glück!
quelle
Ich habe eine Methode gefunden, um die Verwendung des VPC-Endpunkts zu überprüfen.
aws ec2 describe-prefix-lists
; für Windows PowerShell ,Get-EC2PrefixList
Das Ergebnis sollte die Präfixlisten-ID der VPC-Endpunkte im Attribut enthalten
PrefixListId
.Zur zusätzlichen Überprüfung können Sie die folgende Richtlinie auf einen S3-Bucket anwenden:
mit Ihrer vpc ID anstelle von vpc-121212. Sie sollten dann nur von der angegebenen VPC aus auf den S3-Bucket zugreifen können
quelle
Ich würde empfehlen, die ec2-Instanz (mit der IAM-Rolle zum Auflisten von s3-Buckets) im Subnetz ohne Internetzugang zu starten.
Grundsätzlich nur 2 aktive Regeln in der Routentabelle (Ihr VPC-Subnetzbereich und s3-Endpunkt).
Stellen Sie eine Verbindung zur Instanz her und führen Sie den folgenden Befehl aus:
Es sollte mit Timeout fehlschlagen, da Boto standardmäßig eine Anforderung an die globale s3-URL (s3.amazonaws.com) erstellt.
sollte Ihre Buckets in der Region us-east-1 auflisten (vpc router leitet Ihre Anfrage an s3.us-east-1.amazonaws.com weiter).
quelle
Ich denke, der direkte Weg besteht darin, diese Routen tatsächlich zu untersuchen.
Sie können auf s3 zurückverfolgen und prüfen, ob sich die interne IP des NAT-Gateways an einer beliebigen Stelle in der Ausgabe befindet (z. B. im ersten Hop).
Überprüfen Sie zunächst die internen IP-Adressen des NAT-Gateways in der Konsole .
Beispielausgabe mit gesetztem Endpunkt - keine Gateway-IP angezeigt. Das möchten Sie sehen.
Beispielausgabe eines anderen Ziels über NAT (siehe erster Hop)
quelle
Ihre Instanz leitet Pakete, die für S3 bestimmt sind, an das lokale Gateway weiter, und von dort leitet der VPC-Router sie an den S3-Endpunkt weiter. Es sind keine Client-Konfigurationen oder Kenntnisse erforderlich.
Sie können den S3-Endpunkt mit einem sehr restriktiven Satz von ACLs so konfigurieren, dass alle Anforderungen abgelehnt werden und Ihr Client den Fehler ebenfalls empfängt.
quelle
@ m-glatkis Antwort (die aus irgendeinem Grund die akzeptierte ist) ist sachlich falsch.
Zunächst müssen Sie explizit eine ec2-VPC-Schnittstelle aktivieren, um den
aws ec2 describe-prefix-lists
Anruf überhaupt ausführen zu können , da sonst eine Zeitüberschreitung auftritt .Zweitens, selbst wenn Sie diese API aufrufen können, wird Ihnen nicht mitgeteilt, ob Sie Ihren Datenverkehr über diesen Endpunkt leiten. Es enthält lediglich Details zu einer bestimmten Präfixliste (PL) in der aktuellen Region.
Sie müssen der Routentabelle des Subnetzes einen S3-VPC-Endpunkt zuordnen und sicherstellen, dass die Sicherheitsgruppe Ihrer EC2-Instanz oder des Dienstes die Ausgangsverbindung über diesen Endpunkt zulässt (Sie sollten mit der Standardausgangsregel "Alle zulassen" einverstanden sein). Dadurch wird der S3-Verkehr über den Endpunkt weitergeleitet, auch wenn ein NAT-Gateway daran angeschlossen ist.
Sie können überprüfen, ob Ihr Datenverkehr nicht über das NAT geleitet wird, indem Sie die zugehörigen Cloudwatch-Protokolle überprüfen (siehe Metriken BytesOutToDestination , BytesOutToSource , BytesInFromDestination und BytesInFromSource ).
Überprüfen Sie auch die S3-Bucket-Protokolle, wie @michael richtig hervorgehoben hat.
quelle