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
oderAPIMExtensionPolicy
verwenden. Weitere Informationen zum Erstellen einer Traffic-Erweiterung mitAPIMExtensionPolicy
finden Sie unter APIMExtensionPolicy erstellen. Weitere Informationen zum Erstellen einer Traffic-Erweiterung mitApigeeBackendService
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:
- API-Produkt definieren:
- API-Vorgangssatz definieren
- Apigee-Diensterweiterung testen
- 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:
- Erstellen Sie eine neue Datei mit dem Namen
api-product.yaml
im Namespaceapim
. - 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
- 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:
- Erstellen Sie eine neue Datei mit dem Namen
api-product.yaml
im Namespaceapim
. - 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
- 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:
- Erstellen Sie eine neue Datei mit dem Namen
apim-policies.yaml
im Namespaceapim
. - 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
- 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:
- Erstellen Sie eine neue Datei mit dem Namen
apim-policies.yaml
im Namespacedefault
. - 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
- 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:
Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:
- Wählen Sie die Apigee-Organisation aus, in der Sie den Apigee Operator für Kubernetes installiert haben.
- Entwickler erstellen:
- Wählen Sie Vertrieb > Entwickler aus.
- Klicken Sie auf der Seite Entwickler auf + Erstellen.
- Füllen Sie auf der Seite Entwickler hinzufügen die erforderlichen Felder mit beliebigen Werten aus.
- Klicken Sie auf Hinzufügen.
- App erstellen:
- Wählen Sie Vertrieb> Apps aus.
- Klicken Sie auf der Seite Apps auf + Erstellen.
- 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.
- Klicken Sie im Abschnitt App-Anmeldedaten auf + Anmeldedaten hinzufügen.
- 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.
- Klicken Sie auf Erstellen.
- Klicken Sie im Bereich Produkte auf + Produkte hinzufügen.
- Wählen Sie die
api-product-1
aus, die Sie im vorherigen Schritt erstellt haben. - Klicken Sie auf Hinzufügen.
- Klicken Sie auf Erstellen.
- Klicken Sie auf der Seite App Details im Abschnitt Credential auf
visibility_off, 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. - Klicken Sie auf der Seite App-Details im Abschnitt Anmeldedaten auf visibility_off, 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, wobeiGATEWAY_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 imHTTPRoute
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, wobeiGATEWAY_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 imHTTPRoute
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, wobeiGATEWAY_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 imHTTPRoute
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:
- Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:
- Wählen Sie die Apigee-Organisation aus, in der Sie den Apigee Operator für Kubernetes installiert haben.
- Wählen Sie im seitlichen Navigationsmenü Analysen > API-Messwerte aus.
- 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
. - 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.