Wie erlaube ich nur bestimmten IP-Adressen den Zugriff auf meine API Gateway-REST-API?

Lesedauer: 4 Minute
0

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