Wie erlaube ich nur bestimmten IP-Adressen den Zugriff auf meine API Gateway-REST-API?
Ich möchte nur bestimmten IP-Adressen Zugriff auf meine Amazon API Gateway-REST-API gewähren. Wie beschränke ich den Zugriff auf meine API-Gateway-REST-API?
Kurzbeschreibung
Erstellen Sie eine Ressourcenrichtlinie für Ihre REST-API, die den Zugriff auf IP-Adressen verweigert, die nicht ausdrücklich zugelassen sind.
Nachdem die Ressourcenrichtlinie an Ihre REST-API angehängt wurde, können Benutzer, die die API von bestimmten IP-Adressen aus aufrufen (zulässige Benutzer), auf die API zugreifen. Aufrufen von anderen IP-Adressen wird der Zugriff verweigert und es wird der Fehler HTTP 403 Forbidden angezeigt.
Um bestimmte IP-Adressen zu blockieren und allen anderen den Zugriff zu ermöglichen, siehe Beispiel: Verweigern Sie den API-Verkehr auf der Grundlage der Quell-IP-Adresse oder des Bereichs.
Hinweis: API Gateway HTTP-APIs unterstützen derzeit keine Ressourcenrichtlinien.
Lösung
Hinweis: Für das folgende Verfahren können Sie entweder Ihre bestehende API Gateway-REST-API verwenden oder eine Beispiel-REST-API zu Testzwecken erstellen. Wenn Sie die Beispiel-API (PetStore) verwenden, fahren Sie mit dem zweiten Abschnitt fort: Erstellen Sie eine Ressourcenrichtlinie, die nur bestimmten IP-Adressen den Zugriff auf Ihre API Gateway-REST-API ermöglicht, und fügen Sie sie an.
Richten Sie eine API-Methode ein
1.Öffnen Sie die API Gateway-Konsole.
2.Wählen Sie Ihre REST-API aus.
3.Wählen Sie im Bereich Ressourcen die Option Aktionen aus. Wählen Sie dann Methode erstellen aus.
4.Wählen Sie in der Dropdown-Liste unter dem Knoten / resource die Option ANY aus. Wählen Sie dann das Häkchensymbol aus.
5.Wählen Sie im Bereich / - ANY - Setup als Integrationstyp die Option Mock aus.
6.Wählen Sie Speichern aus.
Hinweis: Eine Scheinintegration reagiert auf jede Anfrage, die sie erreicht, was später beim Testen hilft.
Erstellen Sie eine Ressourcenrichtlinie, die nur bestimmten IP-Adressen den Zugriff auf Ihre API Gateway-REST-API ermöglicht, und fügen Sie sie hinzu
1.Öffnen Sie die API Gateway-Konsole.
2.Wählen Sie im linken Navigationsbereich Ressourcenrichtlinie aus.
3.Fügen Sie in das Textfeld Ressourcenrichtlinie das folgende Beispiel für eine Ressourcenrichtlinie ein:
Beispiel für eine Ressourcenrichtlinie
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*/*/*" }, { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*/*/*", "Condition": { "NotIpAddress": { "aws:SourceIp": ["sourceIpOrCIDRBlock", "sourceIpOrCIDRBlock"] } } } ] }
3.Ersetzen Sie für aws:SourceIp den Wert sourceIpOrCIDRBlock durch die spezifischen IP-Adressen, denen Sie Zugriff gewähren möchten. Sie können auch einen Bereich von IP-Adressen mithilfe der CIDR-Notation angeben.
Beispiel für eine öffentliche IP-Adresszeichenfolge, die in der CIDR-Notation aufgeführt ist
["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]
Wichtig: Der Bedingungswert aws:SourceIp funktioniert nur für öffentliche IP-Adressbereiche. Um den Zugriff auf private IP-Adressbereiche zu ermöglichen, verwenden Sie stattdessen den Bedingungswert aws:VpcSourceIp. Geben Sie im Anschluss für den Wert aws:VpcSourceIp die private IP-Adresse Ihres HTTP-Clients ein, der Ihren privaten API-Endpunkt über den Schnittstellen-VPC-Endpunkt aufruft. Beachten Sie, dass Sie private API-Endpunkte im API Gateway nur über einen Schnittstellen-VPC-Endpunkt aufrufen können. Weitere Informationen finden Sie unter aws:VpcSourceIp.
4.Wählen Sie Speichern aus.
Hinweis: Die Variable $context.identity.sourceIp in Ihren Amazon CloudWatch Logs listet alle privaten IP-Adressen auf, die Ihre REST-API aufrufen. Weitere Informationen finden Sie unter $Kontextvariablen für Datenmodelle, Autorisierer, Zuordnungsvorlagen und CloudWatch-Zugriffsprotokollierung.
Stellen Sie Ihre API bereit
1.Wählen Sie im Bereich Ressourcen Ihrer REST-API die Option Aktionen aus.
2.Wählen Sie API bereitstellen aus.
3.Wählen Sie für die Bereitstellungsphase die Option [Neue Phase] aus.
4.Geben Sie für den Phasennamen einen Namen ein. Zum Beispiel: v1 oder Demo.
5.Wählen Sie Bereitstellen aus.
Wichtig: Sie müssen Ihre REST-API jedes Mal erneut bereitstellen, wenn Sie Änderungen an der Ressourcenrichtlinie vornehmen.
Testen Sie die Ressourcenrichtlinie
Stellen Sie sicher, dass Ihre REST-API eine HTTP 200 OK-Antwort an zulässige IP-Adressen zurückgibt, indem Sie die Aufruf-URL Ihrer API mit curl oder der Postman app testen. Führen Sie anschließend einen weiteren Test in einer Umgebung ohne zulässige IP-Adresse aus, um zu bestätigen, dass Ihre REST-API den Fehler HTTP 403 Forbidden zurückgibt.
Hinweis: Wenn Sie zum Testen keinen Zugriff auf mehrere Umgebungen haben, können Sie eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance einrichten. Wenn Sie eine Amazon EC2-Instance zum Testen verwenden, stellen Sie sicher, dass Sie zuerst die IP-Adresse der Instance zur Ressourcenrichtlinie Ihrer API hinzufügen. Stellen Sie dann Ihre API erneut bereit.
Test Ihrer REST-API mit curl auf eine HTTP 200 OK-Antwort oder einen HTTP 403-Fehler
Führen Sie je nach Betriebssystem einen der folgenden Befehle aus.
Wichtig: Ersetzen Sie https://yourInvokeUrl/ durch die Aufruf-URL Ihrer REST-API.
Führen Sie für Linux-, Unix- und macOS-Umgebungen den folgenden Befehl aus:
curl -IX GET https://yourInvokeUrl/
Führen Sie für Windows PowerShell den folgenden Befehl aus:
curl https://yourInvokeUrl/
Wenn die Ressourcenrichtlinie korrekt konfiguriert ist, erhält die zulässige Umgebung eine HTTP 200 OK-Antwort. Die abgelehnte Umgebung erhält den Fehler HTTP 403 Forbidden.
Ähnliche Informationen
Erstellen Sie eine API Gateway-Ressourcenrichtlinie und hängen Sie sie an eine API an
Beispiele für API Gateway-Ressourcenrichtlinien
Übersicht über die Sprache der Zugriffsrichtlinie für Amazon API Gateway
Steuerung und Verwaltung des Zugriffs auf eine REST-API in API Gateway
Ähnliche Videos
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 10 Monaten
- Wie erlaube ich einem Domainbenutzer den Zugriff auf die SQL-Server-Instance auf einer EC2-Instance?AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Monaten