Direkt zum Inhalt

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: Du kannst Ressourcenrichtlinien für API-Gateway-HTTP APIs verwenden.

Lösung

API-Methode einrichten

Um den Zugriff zu testen, verwende deine vorhandene API Gateway-REST-API oder erstelle eine Beispiel-REST-API. Wenn du die PetStore-Beispiel-API verwendest, fahre mit Eine Ressourcenrichtlinie erstellen und anhängen fort.

Gehe wie folgt vor, um eine Pseudo-Integration für deine bestehende REST-API zu erstellen:

  1. Öffne die API Gateway-Konsole.
  2. Wähle deine REST-API aus.
  3. Wähle im Bereich Ressourcen unter Methoden die Option Methode erstellen aus.
  4. Wähle als Methodentyp die Option BELIEBIG aus.
  5. Wähle als Integrationstyp Mock aus.
    Hinweis: Die Pseudo-Integration reagiert auf jede Anforderung, die sie erreicht.
  6. Wähle Methode erstellen.

Ressourcenrichtlinie erstellen und anhängen

Führe die folgenden Schritte aus:

  1. Öffne die API Gateway-Konsole.
  2. Wähle deine REST-API aus.
  3. Wähle im Navigationsbereich Ressourcenrichtlinie aus.
  4. Wähle Richtlinie erstellen.
  5. Gib für Ressourcenrichtlinie die folgende 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 sourceIpOrCIDRBlock durch die IP-Adressen, auf die du Zugriff gewähren möchtest. Verwende eine CIDR-Notation, um einen Bereich von IP-Adressen anzugeben, z. B. ["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]. 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 des 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.
  6. Wähle Änderungen speichern aus.

Die privaten IP-Adressen, die deine REST-API aufrufen, findest du in den Amazon CloudWatch Logs. Weitere Informationen findest du unter Tutorial: CloudWatch-Protokolle anzeigen.

Deine API bereitstellen

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 deiner REST-API die Option API bereitstellen aus.
  4. Wähle für Bereitstellungsphase die Option [New Stage] aus .
  5. Gib unter Phasenname einen Namen ein. Gib beispielsweise v1 oder demo ein.
  6. Wähle Bereitstellen.

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

Ressourcenrichtlinie testen

Führe je nach Betriebssystem (OS) einen der folgenden Befehle aus, um eine Umgebung mit einer zulässigen IP-Adresse zu testen.

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“. Führe denselben Befehl erneut in einer Umgebung ohne zulässige IP-Adresse aus. In einer abgelehnten Umgebung muss der Fehler „HTTP 403 Forbidden“ angezeigt werden.

Um deine Ressourcenrichtlinie zu testen, kannst du auch die Postman-App auf der Postman-Website verwenden.

Hinweis: Wenn du keinen Zugriff auf mehrere Umgebungen hast, kannst du eine Amazon-Elastic-Compute-Cloud (Amazon EC2)-Instance starten. Füge dann die IP-Adresse der Instance zur Ressourcenrichtlinie deiner API hinzu und stelle deine API erneut bereit.

Ä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