Sicherheits- und Kontingenterzwingung aktivieren

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Auf dieser Seite wird beschrieben, wie Sie die Standardsicherheits- und Kontingentdurchsetzungsoptionen aktivieren, die mit dem Apigee-Operator für Kubernetes verfügbar sind.

Hinweise

Bevor Sie mit dieser Aufgabe beginnen, müssen Sie die folgenden Schritte ausführen:

  • Installieren Sie den Apigee-Operator für Kubernetes. Eine Installationsanleitung finden Sie unter Apigee Operator für Kubernetes installieren.
  • Erstellen Sie eine Erweiterung für den Traffic-Dienst. Für diesen Schritt können Sie ApigeeBackendService oder APIMExtensionPolicy verwenden. Weitere Informationen zum Erstellen einer Traffic-Erweiterung mit APIMExtensionPolicy finden Sie unter APIMExtensionPolicy erstellen. Weitere Informationen zum Erstellen einer Traffic-Erweiterung mit ApigeeBackendService finden Sie unter ApigeeBackendService erstellen.

Unabhängig davon, ob Sie eine Traffic Service Extension für Ihr GKE Gateway mit der ApigeeBackendService oder der APIMExtensionPolicy erstellt haben, müssen Sie die Schritte in dieser Anleitung ausführen, um den Standard-API-Schlüssel und die Kontingentrichtlinien zu aktivieren, die dem zugrunde liegenden APIMExtensionPolicy hinzugefügt wurden.

Erforderliche Rollen

Wenn Sie Ihrem Dienstkonto die erforderlichen Rollen wie unter Apigee Operator für Kubernetes installieren beschrieben zugewiesen haben, sind für diese Aufgaben keine zusätzlichen IAM-Rollen oder -Berechtigungen erforderlich.

Sie können Aktionen für Ressourcen in Ihrem Google Kubernetes Engine-Cluster mithilfe des integrierten Mechanismus für rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) in Kubernetes autorisieren. Weitere Informationen finden Sie unter Aktionen in Clustern mit rollenbasierter Zugriffssteuerung autorisieren.

Übersicht

In den folgenden Abschnitten wird beschrieben, wie Sie die standardmäßigen Sicherheits- und Kontingentdurchsetzungsoptionen aktivieren, die mit dem Apigee Operator für Kubernetes verfügbar sind. In dieser Anleitung werden Sie:

  1. API-Produkt definieren:
  2. API-Vorgangssatz definieren
  3. Apigee-Diensterweiterung testen
  4. Apigee API Analytics in der Google Cloud Konsole ansehen.

Die erforderlichen Schritte zum Definieren des API-Produkts und des API-Vorgangssatzes variieren geringfügig, je nachdem, ob Sie eine Traffic-Erweiterung für Ihr GKE Gateway mit der ApigeeBackendService oder der APIMExtensionPolicy erstellt haben.

API-Produkt definieren

In diesem Schritt definieren Sie das API-Produkt, das zum Verwalten der API-Schlüssel- und Kontingentrichtlinien verwendet wird.

APIMExtensionPolicy verwenden

Definieren Sie das API-Produkt:

  1. Erstellen Sie eine neue Datei mit dem Namen api-product.yaml im Namespace apim.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: APIMExtensionPolicy
            group: apim.googleapis.com
            namespace: apim
        attributes:
          - name: access
            value: private
  3. Wenden Sie die Datei mit dem folgenden Befehl auf das Gateway an::
    kubectl -n apim apply -f api-product.yaml

ApigeeBackendService verwenden

Definieren Sie das API-Produkt:

  1. Erstellen Sie eine neue Datei mit dem Namen api-product.yaml im Namespace apim.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: ApigeeBackendService
            group: apim.googleapis.com
            namespace: default
        attributes:
          - name: access
            value: private
  3. Wenden Sie die Datei mit dem folgenden Befehl auf das Gateway an::
    kubectl -n default apply -f api-product.yaml

API-Vorgangssatz definieren

In diesem Schritt definieren Sie die API-Vorgangsgruppe, die zum Verwalten der Durchsetzung der REST-Vorgänge verwendet wird.

APIMExtensionPolicy verwenden

Definieren Sie die API-Vorgänge für das API-Produkt, das Sie im vorherigen Schritt erstellt haben:

  1. Erstellen Sie eine neue Datei mit dem Namen apim-policies.yaml im Namespace apim.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei. In dieser Datei werden eine Kontingentrichtlinie und die verfügbaren REST-Vorgänge für das im vorherigen Schritt definierte API-Produkt definiert:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: apim
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: apim
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Wenden Sie die Datei auf das Gateway an:
    kubectl -n apim apply -f apim-policies.yaml

ApigeeBackendService verwenden

Definieren Sie die API-Vorgänge für das API-Produkt, das Sie im vorherigen Schritt erstellt haben:

  1. Erstellen Sie eine neue Datei mit dem Namen apim-policies.yaml im Namespace default.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei. In dieser Datei werden eine Kontingentrichtlinie und die verfügbaren REST-Vorgänge für das im vorherigen Schritt definierte API-Produkt definiert:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: default
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: default
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Wenden Sie die Datei auf das Gateway an:
    kubectl -n default apply -f apim-policies.yaml

Apigee-Diensterweiterung testen

In diesem Schritt verwenden Sie die Apigee-UI in der Google Cloud -Konsole, um die Apigee-Diensterweiterung und die auf Ihr Gateway angewendete Apigee-Erweiterungsrichtlinie zu testen.

Einrichtung testen

Richten Sie die API-Ressourcen ein, die Sie zum Testen benötigen:

  1. Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:

    API-Verwaltung mit Apigee

  2. Wählen Sie die Apigee-Organisation aus, in der Sie den Apigee Operator für Kubernetes installiert haben.
  3. Entwickler erstellen:
    1. Wählen Sie Vertrieb > Entwickler aus.
    2. Klicken Sie auf der Seite Entwickler auf + Erstellen.
    3. Füllen Sie auf der Seite Entwickler hinzufügen die erforderlichen Felder mit beliebigen Werten aus.
    4. Klicken Sie auf Hinzufügen.
  4. App erstellen:
    1. Wählen Sie Vertrieb> Apps aus.
    2. Klicken Sie auf der Seite Apps auf + Erstellen.
    3. Füllen Sie auf der Seite App erstellen die erforderlichen Felder im Bereich App-Details mit den folgenden Werten aus:
      • App-Name: demo-app
      • Entwickler: Wählen Sie den Entwickler aus, den Sie im vorherigen Schritt erstellt haben, oder einen anderen Entwickler aus der Liste.
    4. Klicken Sie im Abschnitt App-Anmeldedaten auf + Anmeldedaten hinzufügen.
    5. Füllen Sie im Bereich Anmeldedaten die erforderlichen Felder im Bereich Anmeldedatendetails mit den folgenden Werten aus:
      • Name der Qualifikation: demo-credential
      • Anmeldedatentyp: Wählen Sie API-Schlüssel aus.
    6. Klicken Sie auf Erstellen.
    7. Klicken Sie im Bereich Produkte auf + Produkte hinzufügen.
    8. Wählen Sie die api-product-1 aus, die Sie im vorherigen Schritt erstellt haben.
    9. Klicken Sie auf Hinzufügen.
    10. Klicken Sie auf Erstellen.
  5. Klicken Sie auf der Seite App Details im Abschnitt Credential auf , um den Wert des Key anzuzeigen.

    Kopieren Sie den Wert Key. Mit diesem Schlüssel führen Sie in einem späteren Schritt API-Aufrufe an Ihren Dienst aus.

  6. Klicken Sie auf der Seite App-Details im Abschnitt Anmeldedaten auf , um den Wert des App-Secrets anzuzeigen.

    Kopieren Sie den Wert unter App-Secret. Sie benötigen diesen Wert, um in einem späteren Schritt ein Zugriffstoken zu generieren.

API-Schlüssel erzwingen

Verwenden Sie den folgenden Befehl, um eine Anfrage mit dem in einem vorherigen Schritt abgerufenen API-Schlüssel an Ihr Gateway zu senden:

curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Wobei:

  • GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways. Sie können die Gateway-IP-Adresse mit dem folgenden Befehl abrufen, wobei GATEWAY_NAME der Name des Gateways ist:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME ist der Hostname, der im HTTPRoute des Gateways definiert ist.
  • API_KEY ist der API-Schlüsselwert, der in Einrichtung testen abgerufen wurde.

Die Anfrage sollte erfolgreich sein und eine Antwort ähnlich der folgenden zurückgeben:

{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "apigee-apim-operator-test.apigee.net",
    "User-Agent": "curl/8.7.1",
    "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt",
    "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739"
  },
  "origin": "34.54.193.72",
  "url": "https://34.54.193.72/get"
}

Kontingenterzwingung testen

Wenn Sie die in Ihrem APIMExtensionPolicy definierte Kontingentdurchsetzung testen möchten, senden Sie die Anfrage aus dem vorherigen Schritt zehnmal innerhalb einer Minute an das Gateway.

Sie können das folgende Skript ausführen, um die Anfragen zu generieren:

#!/bin/sh
for i in $(seq 1 11); do
    curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
    sleep 1
done

Wobei:

  • GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways. Sie können die Gateway-IP-Adresse mit dem folgenden Befehl abrufen, wobei GATEWAY_NAME der Name des Gateways ist:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME ist der Hostname, der im HTTPRoute des Gateways definiert ist.
  • API_KEY ist der API-Schlüsselwert, der in Einrichtung testen abgerufen wurde.

Diese Aktion sollte einen Kontingentverstoß auslösen und einen Fehler ähnlich dem folgenden zurückgeben:

{"fault":{"faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}

Erzwingung von REST-Vorgängen testen

Wenn Sie die Durchsetzung der REST-Vorgänge testen möchten, senden Sie mit dem folgenden Befehl eine Anfrage an das Gateway über eine URL, die nicht im API-Vorgangssatz enthalten ist:

curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Wobei:

  • GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways. Sie können die Gateway-IP-Adresse mit dem folgenden Befehl abrufen, wobei GATEWAY_NAME der Name des Gateways ist:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME ist der Hostname, der im HTTPRoute des Gateways definiert ist.
  • API_KEY ist der API-Schlüsselwert, der in Einrichtung testen abgerufen wurde.

Die Anfrage sollte mit einer Antwort ähnlich der folgenden fehlschlagen:

{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}

Apigee API Analytics in der Google Cloud Console aufrufen

Sie können den API-Traffic, der vom GKE Gateway und APIMExtensionPolicy verarbeitet wird, mit Apigee API Analytics in der Google Cloud -Konsole ansehen:

  1. Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:

    API-Verwaltung mit Apigee

  2. Wählen Sie die Apigee-Organisation aus, in der Sie den Apigee Operator für Kubernetes installiert haben.
  3. Wählen Sie im seitlichen Navigationsmenü Analysen > API-Messwerte aus.
  4. Wählen Sie auf dem Tab API-Proxy-Leistung die Umgebung aus, die Sie im optionalen Installationsschritt Apigee-Umgebung erstellen erstellt haben, oder die Umgebung, die vom Apigee Operator für Kubernetes während der Installation erstellt wurde. Der Name der Umgebung beginnt mit dem Präfix apigee-ext-proc-enabled-env.
  5. Beobachten Sie den aufgezeichneten API-Traffic.

Fehlerbehebung

Wenn bei der Verwendung von API-Verwaltungsrichtlinien mit dem Apigee Operator für Kubernetes Probleme auftreten, finden Sie unter Fehlerbehebung für den Apigee Operator für Kubernetes Lösungen für häufige Fehler.

Nächste Schritte

Informationen zum Hinzufügen zusätzlicher Richtlinien finden Sie unter Richtlinien zum GKE Gateway hinzufügen.