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.

Kurzbeschreibung

Um nur bestimmten IP-Adressen den Zugriff auf deine REST-API zu ermöglichen, erstelle eine Ressourcenrichtlinie, die den Zugriff auf alle anderen IP-Adressen verweigert.

Nachdem du die Ressourcenrichtlinie an deine REST-API angehängt hast, können Benutzer mit Berechtigungen die API von bestimmten IP-Adressen aus aufrufen. Deine API lehnt Aufrufe von anderen IP-Adressen ab und zeigt den Fehler HTTP 403 Forbidden an.

Um bestimmte IP-Adressen zu blockieren und allen anderen den Zugriff zu ermöglichen, siehe Beispiel: Verweigere 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: Verwende entweder deine vorhandene API-Gateway-REST-API oder erstelle eine Beispiel-REST-API zum Testen. Wenn du die PetStore-Beispiel-API verwendest, fahre mit dem Abschnitt Eine Ressourcenrichtlinie erstellen und anhängen fort.

API-Methode einrichten

Führe die folgenden Schritte aus:

  1. Öffne die API Gateway-Konsole.
  2. Wähle deine REST-API aus.
  3. Wähle im Bereich Ressourcen im Abschnitt Methoden die Option Methode erstellen aus.
  4. Wähle in der Dropdownliste unter Methodentyp die Option BELIEBIG aus.
  5. Wähle als Integrationstyp Mock aus.
  6. Wähle Methode erstellen.
    Hinweis: Um dir beim Testen des Setups zu helfen, reagiert eine Scheinintegration auf jede Anfrage, die sie erreicht.

Ressourcenrichtlinie erstellen und anhängen

Führe die folgenden Schritte aus:

  1. Öffne die API Gateway-Konsole.

  2. Wähle im Navigationsbereich Ressourcenrichtlinie aus.

  3. Wähle Richtlinie erstellen.

  4. Gib in das Textfeld Ressourcenrichtlinie das folgende Beispiel für eine Ressourcenrichtlinie ein:

    {
      "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"]
            }
          }
        }
      ]
    }

    Hinweis: Ersetze für aws:SourceIp sourceIpOrCIDRBlock durch die IP-Adressen, für die du Zugriff gewähren möchtest. Verwende eine CIDR-Notation, um einen Bereich von IP-Adressen anzugeben. Ein Beispiel für eine öffentliche IP-Adresszeichenfolge, die in CIDR-Notation aufgeführt ist, ist ["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"].

    Wichtig: Die Bedingung aws:SourceIp funktioniert nur für öffentliche IP-Adressbereiche. Um den Zugriff auf private IP-Adressbereiche zu ermöglichen, verwende stattdessen die Bedingung aws:VpcSourceIp. Gib für aws:VpcSourceIp die private IP-Adresse deines HTTP-Clients ein, der deinen privaten API-Endpunkt über den Virtual-Private-Cloud (VPC)-Endpunkt der Schnittstelle aufruft. Du kannst private API-Endpunkte im API Gateway nur über einen Schnittstellen-VPC-Endpunkt aufrufen.

  5. Wähle Änderungen speichern aus.

Hinweis: Die Variable $context.identity.sourceIp in deinen Amazon CloudWatch Logs listet private IP-Adressen auf, die deine REST-API aufrufen. Weitere Informationen findest du unter Kontextvariablen für Datentransformationen.

Deine API bereitstellen

Führe die folgenden Schritte aus:

  1. Wähle im Bereich Ressourcen deiner REST-API die Option API bereitstellen aus.
  2. Wähle für Bereitstellungsphase die Option [New Stage] aus .
  3. Gib unter Phasenname einen Namen ein. Gib beispielsweise „v1“ oder „demo“ ein.
  4. Wähle Bereitstellen aus.

Wichtig: Du musst deine REST-API jedes Mal erneut bereitstellen, wenn du Änderungen an der Ressourcenrichtlinie vornimmst.

Ressourcenrichtlinie testen

Um zu bestätigen, dass deine REST-API eine HTTP 200 OK-Antwort auf zulässige IP-Adressen zurückgibt, verwende „curl“, um die Aufruf-URL deiner API zu testen. Oder verwende die Postman-App auf der Postman-Website. Führe anschließend einen weiteren Test in einer Umgebung ohne zulässige IP-Adresse aus, um zu überprüfen, ob deine REST-API den Fehler HTTP 403 Forbidden zurückgibt.

Hinweis: Wenn du keinen Zugriff auf mehrere Umgebungen hast, kannst du eine Amazon-Elastic-Compute-Cloud (Amazon EC2)-Instance einrichten. Wenn du eine Amazon-EC2-Instance verwendest, stelle sicher, dass du die IP-Adresse der Instance zur Ressourcenrichtlinie deiner API hinzufügst. Stelle dann deine API erneut bereit.

„curl“ verwenden, um deine REST-API auf eine HTTP 200 OK-Antwort oder einen HTTP 403-Fehler zu testen

Führe je nach Betriebssystem (OS) einen der folgenden Befehle aus.

Linux-, Unix- und macOS-Umgebungen:

curl -IX GET https://yourInvokeUrl/

Windows PowerShell:

curl https://yourInvokeUrl/

Hinweis: Ersetze https://yourInvokeUrl/ durch die Aufruf-URL deiner REST-API.

Wenn die Ressourcenrichtlinie korrekt konfiguriert ist, erhält die zulässige Umgebung die Antwort HTTP 200 OK. Eine 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

Zugriff auf REST-APIs in API Gateway steuern und verwalten