Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Wie Sie einen API-Schlüssel erhalten
Im folgenden Beispiel wird beschrieben, wie Sie einen API-Schlüssel erhalten, mit dem Sie API-Aufrufe validieren können, die über Apigee Adapter for Envoy an einen Zieldienst weitergeleitet werden.
1. Bei Apigee anmelden
- Öffnen Sie die Apigee-Benutzeroberfläche in einem Browser.
- Wählen Sie in der UI die Organisation aus, die Sie auch für die Konfiguration von Apigee Adapter für Envoy verwendet haben.
2. Entwickler erstellen
Sie können einen vorhandenen Entwickler zum Testen verwenden oder einen neuen Entwickler erstellen:
- Klicken Sie im seitlichen Navigationsmenü auf Veröffentlichen > Entwickler.
- Klicken Sie auf + Entwickler.
- Füllen Sie das Dialogfeld aus, um einen neuen Entwickler zu erstellen. Sie können einen beliebigen Entwicklernamen oder eine beliebige E-Mail-Adresse verwenden.
3. API-Produkt erstellen
Unten finden Sie ein Beispiel zur Produkterstellung. Weitere Informationen finden Sie unter Informationen zur API-Produktkonfiguration.
- Wählen Sie im seitlichen Navigationsmenü Veröffentlichen > API-Produkte aus.
- Klicken Sie auf +Erstellen.
- Füllen Sie die Seite mit den Produktdetails so aus: Klicken Sie erst auf Speichern, wenn Sie dazu aufgefordert werden.
Feld Wert Name httpbin-product
Anzeigename httpbin product
Umgebung your_environment Legen Sie die Umgebung fest, die Sie bei der Bereitstellung von Apigee Adapter for Envoy mit der
apigee-remote-service-cli
verwendet haben.Access Private
Kontingent 5 Anfragen pro Minute Siehe auch Informationen zu API-Produkten
- Klicken Sie unter „Benutzerdefinierte Attribute“ auf + Benutzerdefiniertes Attribut hinzufügen.
- Geben Sie dieses Name/Wert-Paar ein:
- Name: Geben Sie diesen Attributnamen ein:
apigee-remote-service-targets
- Wert: Geben Sie den Namen des Zieldienstes ein. Beispiel:
httpbin.org
- Name: Geben Sie diesen Attributnamen ein:
- Klicken Sie auf OK.
- Klicken Sie auf Speichern.
4. Entwickler-App erstellen
- Klicken Sie im seitlichen Navigationsmenü auf Veröffentlichen > Apps.
- Klicken Sie auf + App.
- Füllen Sie die Seite „Entwickler-App“ wie unten beschrieben aus. Speichern Sie erst, wenn Sie dazu aufgefordert werden.
- Klicken Sie im Abschnitt "Anmeldedaten" auf + Produkt hinzufügen und wählen Sie das soeben konfigurierte Produkt aus: httpbin-product.
- Klicken Sie auf Erstellen.
- Klicken Sie unter „Anmeldedaten“ neben dem Schlüssel auf Anzeigen.
- Kopieren Sie den Wert des Consumer-Schlüssels. Dieser Wert ist der API-Schlüssel, mit dem Sie API-Aufrufe an den Dienst
httpbin
senden.
Name | httpbin-app
|
Anzeigename | httpbin app
|
Developer | Wählen Sie den Entwickler aus, den Sie zuvor erstellt haben, oder wählen Sie einen Entwickler aus der Liste aus. |
Informationen zu API-Produkten
API-Produkte sind der zentrale Steuerungspunkt für den Apigee-Remote-Service. Wenn Sie ein API-Produkt erstellen und an einen Zieldienst binden, erstellen Sie eine Richtlinie, die auf alle Anfragen angewendet wird, für die Sie Apigee Adapter for Envoy konfigurieren.
API-Produktdefinition
Wenn Sie ein API-Produkt in Apigee definieren, können Sie verschiedene Parameter angeben, die zum Bewerten von Anfragen verwendet werden:
- Ziel
- Anfragepfad
- Kontingent
- OAuth-Bereiche
Remotedienstziele
Die API-Produktdefinition gilt für eine Anfrage, wenn die Anfrage sowohl mit der Zielbindung (z. B. httpbin.org
) als auch mit dem Anfragepfad (z. B. /httpbin
) übereinstimmt. Eine Liste potenzieller Ziele wird als Attribut im API-Produkt gespeichert.
Standardmäßig prüft der Apigee Remote Service den speziellen Header :authority (host)
von Envoy mit seiner Liste von Zielen. Er kann jedoch auch so konfiguriert werden, dass andere Header verwendet werden.
API-Ressourcenpfad
Der eingegebene Pfad entspricht den folgenden Regeln:
- Ein einzelner Schrägstrich (
/
) allein entspricht einem beliebigen Pfad. *
ist überall gültig und stimmt innerhalb eines Segments (zwischen Schrägstrichen) überein.**
ist am Ende gültig und passt zu allem, was am Ende der Zeile steht.
Kontingent
Ein Kontingent gibt die Anzahl der Anfragenachrichten an, die eine App im Verlauf einer Stunde, eines Tages, einer Woche oder eines Monats senden darf. Wenn eine App das Kontingentlimit erreicht hat, werden nachfolgende API-Aufrufe abgelehnt.
Anwendungsfälle für KontingenteMit Kontingenten können Sie die Anzahl der Anfragen erzwingen, die ein Client innerhalb eines bestimmten Zeitraums an einen Dienst senden kann. Kontingente werden häufig zur Durchsetzung von Geschäftsverträgen oder SLAs mit Entwicklern und Partnern verwendet und nicht für die betriebliche Trafficverwaltung. Mit einem Kontingent können Sie beispielsweise den Traffic für einen kostenlosen Dienst beschränken und gleichzeitig zahlenden Kunden uneingeschränkten Zugriff gewähren.
Das Kontingent wird in einem API-Produkt definiert.Kontingentparameter werden in API-Produkten konfiguriert. Wenn Sie beispielsweise ein API-Produkt erstellen, können Sie optional das zulässige Kontingentlimit, die Zeiteinheit und das Intervall festlegen.
>
API-Schlüssel werden API-Produkten zugeordnet. Daher kann bei jeder Verifizierung eines API-Schlüssels der entsprechende Kontingentzähler verringert werden, sofern im zugehörigen Produkt ein Kontingent definiert ist.
Anders als in der Apigee-Laufzeit werden Kontingente, die in der Produktdefinition eingegeben werden, automatisch vom Apigee-Remote-Dienst erzwungen. Wenn die Anfrage autorisiert ist, wird sie auf das zulässige Kontingent angerechnet.
Wo werden Kontingente verwaltet?Kontingente werden lokal vom Remote-Dienstprozess verwaltet und geprüft und asynchron mit Apigee Runtime verwaltet. Dies bedeutet, dass die Kontingente nicht zusammengefasst und möglicherweise überschritten werden, wenn Sie mehrere Remote-Dienste nutzen, die das Kontingent verwalten. Wenn die Verbindung zu Apigee Runtime unterbrochen wird, gilt das lokale Kontingent bis zu diesem Zeitpunkt als eigenständiges Kontingent, da es wieder mit Apigee Runtime verbunden werden kann.
OAuth-Bereiche
Wenn Sie JWT-Token verwenden, können Sie die Tokens auf Untergruppen der zulässigen OAuth-Bereiche beschränken. Die Bereiche, die Ihrem ausgestellten JWT-Token zugewiesen sind, werden mit den Bereichen des API-Produkts verglichen.
Informationen zu Entwickler-Apps
Nachdem Sie die API-Produkte konfiguriert haben, erstellen Sie eine App, die einem Entwickler zugeordnet ist. Über diese App erhält ein Client Zugriff auf die zugehörigen API-Produkte mit einem API-Schlüssel oder JWT-Token.
JWT-basierte Authentifizierung verwenden
Sie können authentifizierte API-Proxyaufrufe mit einem JWT-Token durchführen, anstatt einen API-Schlüssel zu verwenden. In diesem Abschnitt wird erläutert, wie Sie mit dem Befehl apigee-remote-service-cli token
JWT-Tokens erstellen, prüfen und rotieren. Für die Hybrid-Umgebung von Apigee können Sie mit diesem Befehl ein Kubernetes-Secret erstellen, das die JWTs enthält.
Übersicht
Die JWT-Verifizierung und die JWT-Authentifizierung werden von Envoy mit dem zugehörigen JWT-Authentifizierungsfilter ausgeführt.
Nach der Authentifizierung sendet der Envoy-Filter ext-authz
die Anfrageheader und das JWT an apigee-remote-service-envoy
. Er vergleicht die api_product_list
- und scope
-Anforderungen des JWT mit Apigee API-Produkten, um es für das Ziel der Anfrage zu autorisieren.
Apigee-JWT-Tokens erstellen
Apigee JWT-Tokens können über die Befehlszeile erstellt werden:
apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
Oder Sie verwenden den standardmäßigen OAuth-Token-Endpunkt. Beispiel für Curl:
curl https://org-env.apigee.net/remote-service/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"
JWT-Token verwenden
Sobald Sie das Token haben, übergeben Sie es im Autorisierungs-Header an Envoy. Beispiel:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
JWT-Tokenfehler
Ablehnung durch Envoy
Wenn Envoy das Token ablehnt, wird möglicherweise eine Nachricht wie diese angezeigt:
Jwks remote fetch is failed
Wenn dies der Fall ist, stellen Sie sicher, dass Ihre Envoy-Konfiguration einen gültigen URI im Abschnitt remote_jwks
enthält, dass sie für Envoy erreichbar ist und dass Sie die Zertifikate bei der Installation des Apigee-Proxys korrekt eingerichtet haben. Sie sollten den URI direkt mit einem GET-Aufruf aufrufen und eine gültige JSON-Antwort erhalten.
Beispiel:
curl https://myorg-eval-test.apigee.net/remote-service/certs
Andere Nachrichten von Envoy könnten so aussehen:
- „Zielgruppen in Jwt sind nicht zulässig“
- „Jwt-Aussteller ist nicht konfiguriert“
Diese Anforderungen stammen aus Ihrer Envoy-Konfiguration, die Sie möglicherweise ändern müssen.
Token prüfen
Sie können das Token über die Befehlszeile prüfen. Beispiel
apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
oder
apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
Debugging
Siehe Gültiger API-Schlüssel schlägt fehl.Logging
Sie können die Logging-Stufe im Dienst $REMOTE_SERVICE_HOME/apigee-remote-service-envoy anpassen. Alle Logs werden an stderr gesendet.
Element | Erforderlich | Beschreibung |
---|---|---|
-l, --log-level | Gültige Stufen: Debug, info, warn, error. | Passt die Logging-Ebene an. Standard: info |
-j, --json-log | Sendet die Logausgabe als JSON-Datensätze. |
Envoy bietet Logging. Weitere Informationen finden Sie unter den folgenden Links zur Envoy-Dokumentation:
Name des Richtlinien-Secrets ändern
Ein im Cluster bereitgestelltes Kubernetes-Secret enthält Anmeldedaten, die der Adapter zur Authentifizierung der Kommunikation mit dem Remotedienst-Proxy benötigt. Für dieses Secret ist ein Volume-Bereitstellungspunkt erforderlich, der konfigurierbar ist. Standardmäßig ist der Bereitstellungspunkt /policy-secret
.
So ändern Sie den Bereitstellungspunkt:
- Führen Sie diesen Befehl aus:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/new-mount_point_name
Beispiel:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/my-mount-point
- Öffnen Sie
$CLI_HOME/samples/apigee-envoy-adapter.yaml
in einem Editor. - Ändern Sie den Namen des Bereitstellungspunkts in den neuen Namen:
volumeMounts: - mountPath: /config name: apigee-remote-service-envoy readOnly: true - mountPath: /opt/apigee/tls name: tls-volume readOnly: true - mountPath: /my-mount-point name: policy-secret readOnly: true
- Speichern Sie die Datei und wenden Sie sie auf das Service Mesh an:
kubectl apply -f $REMOTE_SERVICE_HOME/samples/apigee-envoy-adapter.yaml
Netzwerkproxy verwenden
Ein HTTP-Proxy kann mithilfe der Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY in die Umgebung der Binärdatei „apigee-remote-service-envoy“ eingefügt werden. Wenn Sie diese Umgebungsvariablen verwenden, kann die Umgebungsvariable NO_PROXY auch verwendet werden, um bestimmte Hosts vom Proxy auszuschließen.
HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] NO_PROXY=127.0.0.1,localhost
Denken Sie daran, dass der Proxy über apigee-remote-service-envoy erreichbar sein muss.
Informationen zu Messwerten und Analysen
Ein Prometheus-Messwert-Endpunkt ist unter :5001/metrics
verfügbar. Sie können diese Portnummer konfigurieren. Siehe Konfigurationsdatei.
Envoy-Analysen
Unter den folgenden Links finden Sie Informationen zum Abrufen von Envoy-Proxy-Analysedaten:
Istio-Analysen
Unter den folgenden Links finden Sie Informationen zum Abrufen von Envoy-Proxy-Analysedaten:
Apigee-Analyse
Apigee Remote Service for Envoy sendet Anfragestatistiken zur Verarbeitung von Analysen an Apigee. Apigee erfasst diese Anfragen unter dem zugehörigen API-Produktnamen.
Informationen zu Apigee Analytics finden Sie in der Übersicht über Analytics-Diensten.