Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
In diesem Thema wird erläutert, wie Sie einen API-Proxy einrichten und bereitstellen, der für die Verwendung der Google-Authentifizierung konfiguriert ist.
Einführung
Apigee unterstützt die Verwendung von Google OAuth-Tokens oder OpenID Connect-Tokens zur Authentifizierung bei Google-Diensten wie Cloud Logging und Secret Manager sowie bei benutzerdefinierten Diensten, die in bestimmten Google Cloud-Produkten ausgeführt werden, wie zum Beispiel Cloud Functions und Cloud Run.
Wenn Sie dieses Feature verwenden möchten, müssen Sie das XML-Element <Authentication>
in einem der folgenden Kontexte konfigurieren:
- ServiceCallout-Richtlinien
- ExternalCallout-Richtlinien
- TargetEndpoint-Konfigurationen
Nachdem Sie einige grundlegende Einrichtungsschritte ausgeführt haben (wie in diesem Thema beschrieben), führt Apigee die Tokengenerierung aus und sendet sichere Aufrufe an ausgewählte Google-Dienste oder benutzerdefinierte gehostete Dienste, ohne Authentifizierungsheader manuell einrichten oder eine Dienstanfrage ändern zu müssen. Aus der Sicht eines API-Entwicklers wird der Aufruf von Google-Diensten aus einem ordnungsgemäß konfigurierten API-Proxy nahtlos ausgeführt.
API-Proxy-Konfigurationsoptionen
In diesem Abschnitt wird erläutert, wo Sie das XML-Element <Authentication>
verwenden können, um die Google OAuth-Tokens oder OpenID Connect-Authentifizierung zu aktivieren:
Konfigurationsoption | Beschreibung |
---|---|
ServiceCallout-Richtlinie | Mit der ServiceCallout-Richtlinie können Sie über einen API-Proxy andere interne oder externe Dienste aufrufen. Beispielsweise können Sie mithilfe von ServiceCallout externe Google-Dienste oder benutzerdefinierte gehostete Dienste aufrufen. Nutzungsdetails und Beispiele finden Sie in der ServiceCallout-Richtlinie. |
ExternalCallout-Richtlinie | Mit der ExternalCallout-Richtlinie können Sie gRPC an Ihren gRPC-Server senden, um benutzerdefiniertes Verhalten zu implementieren, das von den Apigee-Richtlinien nicht unterstützt wird. Nutzungsdetails und Beispiele finden Sie in der ExternalCallout-Richtlinie. |
TargetEndpoint | Google-Dienst oder benutzerdefinierten gehosteten Dienst als API-Proxy-Zielendpunkt festlegen. Weitere Informationen und Beispiele finden Sie in der Referenz zur API-Proxy-Konfiguration. |
Von Google Auth-Token unterstützte Kontexte
Das Element <Authentication>
hat zwei Unterelementkonfigurationen: <GoogleAccessToken>
oder <GoogleIDToken>
. In der folgenden Tabelle sind die Kontexte aufgeführt, in denen diese Elemente unterstützt werden:
Verwendet in | GoogleAccessToken | GoogleIDToken |
---|---|---|
ServiceCallout-Richtlinie | Unterstützt | Unterstützt |
ExternalCallout-Richtlinie | Nicht unterstützt | Unterstützt |
TargetEndpoint | Unterstützt | Unterstützt |
Deployment
In diesem Abschnitt wird erläutert, wie Sie einen API-Proxy bereitstellen, der die Google-Authentifizierung verwendet, um ausgewählte Google-Dienste oder benutzerdefinierte gehostete Dienste aufzurufen. Die Bereitstellungsschritte für Apigee und Apigee Hybrid werden separat erläutert.
In Apigee bereitstellen
In den folgenden Schritten wird erläutert, wie Sie einen API-Proxy in Apigee bereitstellen, wobei der Proxy für authentifizierte Aufrufe an Google-Dienste oder benutzerdefinierte gehostete Dienste konfiguriert ist. Bei den Schritten wird davon ausgegangen, dass Sie den Proxy bereits erstellt haben und dieser ein <Authentication>
-Element in einem der aufgeführten unterstützten Kontexte enthält.
- Erstellen Sie ein Google-Dienstkonto in dem Google Cloud-Projekt, in dem Ihre Apigee-Organisation erstellt wurde. Sie müssen den Namen dieses Dienstkontos angeben, wenn Sie einen API-Proxy bereitstellen, der für die Verwendung der Google-Authentifizierung konfiguriert ist, und die generierten OAuth-Tokens stellen das Dienstkonto dar.
Sie können das Dienstkonto in der Google Cloud Console oder mit dem Befehl
gcloud
erstellen. Siehe Dienstkonten erstellen und verwalten. - Erteilen Sie dem Nutzer, der die Bereitstellung ausführt, also dem Bereitsteller, die Berechtigung
iam.serviceAccounts.actAs
für das Dienstkonto. Weitere Informationen zu Dienstkontoberechtigungen.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: Die Projekt-ID. Die ID entspricht dem Namen Ihrer Organisation.
- SA_NAME: Der Name, den Sie beim Erstellen des Dienstkontos angegeben haben.
- MEMBER: Das Mitglied, für das die Bindung eingefügt werden soll. Muss das Format
user|group|serviceAccount:email
oderdomain:domain
haben. - Geben Sie dem Dienstkonto die erforderlichen Berechtigungen, um mit den gewünschten Google-Diensten zu kommunizieren. Wenn Sie beispielsweise den Google Logging-Dienst aufrufen möchten, muss dieses Dienstkonto die erforderlichen Berechtigungen für die Kommunikation mit diesem Dienst enthalten. Siehe auch Informationen zu Rollen.
- Bevor Sie einen API-Proxy bereitstellen, der für die Verwendung der Google-Authentifizierung konfiguriert ist, benötigen Sie Folgendes:
- Der Name des Dienstkontos, das Sie zuvor erstellt haben. Beispiel:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- Als Nutzer, der die Bereitstellung durchführt (der Bereitsteller), müssen Sie die Berechtigung
iam.serviceAccounts.actAs
für das Dienstkonto bereits haben oder erhalten. Weitere Informationen zu Zugriff auf Ressourcen erteilen, ändern und entziehen.
- Der Name des Dienstkontos, das Sie zuvor erstellt haben. Beispiel:
- Stellen Sie den API-Proxy mit der Google-Authentifizierungskonfiguration bereit, die Sie implementiert haben. Sie können den Proxy über die Apigee-Benutzeroberfläche oder die API bereitstellen. Weitere Informationen zu API-Proxy bereitstellen.
- Wenn Sie die Benutzeroberfläche verwenden, werden Sie aufgefordert, einen Dienstkontonamen anzugeben. Verwenden Sie den Namen des Proxy-Dienstkontos, das Sie in Schritt 1 erstellt haben. Beispiel:
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- Wenn Sie den Proxy lieber mit der Apigee Deployment API bereitstellen möchten, verwenden Sie den folgenden cURL-Beispielbefehl. Beachten Sie, dass der Befehl einen Dienstkontonamen als Abfrageparameter enthält. Dies ist der Name des Dienstkontos, das Sie in Schritt 1 erstellt haben:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
Wobei:
TOKEN
: Ein OAuth-Token, den Sie im Austausch für Ihre Google-Anmeldedaten abrufen müssen. Weitere Informationen zu OAuth 2.0-Zugriffstoken abrufen.ORG_NAME
: Der Name Ihrer Apigee-Organisation.ENV_NAME
: Der Name der Umgebung, in der der API-Proxy bereitgestellt werden soll.SA_NAME
: Der Name, den Sie beim Erstellen des Dienstkontos angegeben haben.PROJECT_ID
: Ihre Google Cloud-Projekt-ID (entspricht dem Namen der Organisation).
- Wenn Sie die Benutzeroberfläche verwenden, werden Sie aufgefordert, einen Dienstkontonamen anzugeben. Verwenden Sie den Namen des Proxy-Dienstkontos, das Sie in Schritt 1 erstellt haben. Beispiel:
- Testen Sie nach Abschluss der Bereitstellung Ihren API-Proxy, um zu prüfen, ob der Google-Dienst die erwartete Antwort zurückgibt.
Dabei gilt:
Auf Apigee Hybrid bereitstellen
In den folgenden Schritten wird erläutert, wie Sie einen Apigee Hybrid-API-Proxy bereitstellen, der für authentifizierte Aufrufe von Google-Diensten konfiguriert ist.
Bei den Schritten wird davon ausgegangen, dass Sie den Proxy bereits erstellt haben und dieser ein <Authentication>
-Element in einem der aufgeführten unterstützten Kontexte enthält.
- Erstellen Sie ein Dienstkonto und einen Schlüssel für die Apigee Hybrid-Laufzeitkomponente. Wenden Sie dazu eine der folgenden Methoden an:
- Verwenden Sie das mit Apigee Hybrid bereitgestellte Tool
create-service-account
, um einapigee-runtime
-Dienstkonto zu erstellen. Das Tool erstellt das Dienstkonto und gibt einen Dienstkontoschlüssel zurück. Weitere Informationen zu create-service-account. - Erstellen Sie das Dienstkonto in der Google Cloud Console oder mit dem Befehl
gcloud
. Siehe Dienstkonten erstellen und verwalten. Informationen zum Abrufen des Dienstkontoschlüssels finden Sie unter Dienstkontoschlüssel erstellen und verwalten.
- Verwenden Sie das mit Apigee Hybrid bereitgestellte Tool
- Öffnen Sie die Datei
overrides.yaml
und geben Sie den Pfad zur Dienstkontoschlüsseldatei für jede Umgebung an, für die Google-Authentifizierung erforderlich ist:envs: - name: "ENVIRONMENT_NAME" serviceAccountPaths: runtime: "KEY_FILE_PATH"
Beispiel:
envs: - name: "test" serviceAccountPaths: runtime: "./service_accounts/my_runtime_sa.json"
- Wenden Sie die Überschreibungsdatei mit apigeectl apply auf Ihren Cluster an.
- Erstellen Sie ein zweites Dienstkonto, das als Proxy-Dienstkonto bezeichnet wird. Dieses Dienstkonto muss sich im selben Google Cloud-Projekt befinden, mit dem Sie Ihre Apigee-Organisation erstellt haben. Sie müssen die E-Mail-Adresse dieses Dienstkontos angeben, wenn Sie einen API-Proxy bereitstellen, der für die Verwendung der Google-Authentifizierung konfiguriert ist, und die generierten OAuth-Tokens stellen das Dienstkonto dar.
- Erteilen Sie dem Nutzer, der die Bereitstellung ausführt, also dem Bereitsteller, die Berechtigung
iam.serviceAccounts.actAs
für das Dienstkonto. Weitere Informationen zu Dienstkontoberechtigungen.gcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- PROJECT_ID: Die Projekt-ID. Die ID entspricht dem Namen Ihrer Organisation.
- SA_NAME: Der Name, den Sie beim Erstellen des Dienstkontos angegeben haben.
- MEMBER: Das Mitglied, für das die Bindung eingefügt werden soll. Muss das Format user|group|serviceAccount:email oder domain:domain haben.
- Geben Sie dem Proxy-Dienstkonto die erforderlichen Berechtigungen, um mit den gewünschten Google-Diensten zu kommunizieren. Wenn Sie beispielsweise den Google Logging-Dienst aufrufen möchten, muss dieses Dienstkonto die erforderlichen Berechtigungen für die Kommunikation mit diesem Dienst enthalten. Siehe auch Informationen zu Rollen.
- Prüfen Sie, ob die Laufzeit die Identität des Proxydienstkontos übernehmen kann. Weisen Sie dafür dem Dienstkonto Laufzeit die Rolle
iam.serviceAccountTokenCreator
im Proxydienstkonto zu. Weitere Informationen zu Dienstkontoberechtigungen. Beispiel:gcloud iam service-accounts add-iam-policy-binding \ PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Dabei gilt:
- PROJECT_ID: Die Projekt-ID. Die ID entspricht dem Namen Ihrer Organisation. Beachten Sie, dass Sie nicht das mit Ihrer Organisation verbundene Projekt verwenden müssen, um das Laufzeitdienstkonto zu erstellen. Achten Sie nur darauf, dass Sie in diesem Befehl die richtigen Projekt-IDs verwenden.
- PROXY_SA_NAME: Die ID für das Proxy-Dienstkonto.
- RUNTIME_SA_NAME: Die ID für das Laufzeit-Dienstkonto.
- Bevor Sie einen API-Proxy bereitstellen, der für die Verwendung der Google-Authentifizierung konfiguriert ist, benötigen Sie Folgendes:
- Der Name des Proxy-Dienstkontos, das Sie zuvor erstellt haben. Beispiel:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
. - Als der Nutzer, der die Bereitstellung durchführt, müssen Sie bereits die Berechtigung
iam.serviceAccounts.actAs
in dem Google Cloud-Projekt haben, in dem die Apigee-Organisation bereitgestellt wird, oder eine solche Berechtigung erhalten. Weitere Informationen zu Zugriff auf Ressourcen erteilen, ändern und entziehen.
- Der Name des Proxy-Dienstkontos, das Sie zuvor erstellt haben. Beispiel:
- Stellen Sie den API-Proxy mit der Google-Authentifizierungskonfiguration bereit, die Sie implementiert haben. Sie können den Proxy über die Apigee-Benutzeroberfläche oder die API bereitstellen. Weitere Informationen zu API-Proxy bereitstellen.
- Wenn Sie die Benutzeroberfläche verwenden, werden Sie aufgefordert, einen Dienstkontonamen anzugeben. Verwenden Sie den Namen des Proxy-Dienstkontos, das Sie zuvor erstellt haben. Beispiel:
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
- Wenn Sie den Proxy lieber mit der Apigee Deployment API bereitstellen möchten, verwenden Sie den folgenden cURL-Beispielbefehl. Beachten Sie, dass der Befehl einen Dienstkontonamen als Abfrageparameter enthält. Dies ist der Name des Proxydienstkontos:
curl -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ -H "Content-Type: application/json" -X POST
Wobei:
TOKEN
: Ein OAuth-Token, den Sie im Austausch für Ihre Google-Anmeldedaten abrufen müssen. Weitere Informationen zu OAuth 2.0-Zugriffstoken abrufen.ORG_NAME
: Der Name Ihrer Apigee-Organisation.ENV_NAME
: Der Name der Umgebung, in der der API-Proxy bereitgestellt werden soll.PROXY_SA_NAME
: Der Name des Proxy-Dienstkontos.PROJECT_ID
: Ihre Google Cloud-Projekt-ID (entspricht dem Namen der Organisation).
- Wenn Sie die Benutzeroberfläche verwenden, werden Sie aufgefordert, einen Dienstkontonamen anzugeben. Verwenden Sie den Namen des Proxy-Dienstkontos, das Sie zuvor erstellt haben. Beispiel:
- Testen Sie nach Abschluss der Bereitstellung Ihren API-Proxy, um zu prüfen, ob der Google-Dienst die erwartete Antwort zurückgibt.
Dabei gilt:
Dienstkontoberechtigungen
Um einen API-Proxy für die Verwendung der Google-Authentifizierung zu konfigurieren, müssen Sie ein Dienstkonto erstellen, wie in der folgenden Tabelle beschrieben. Weitere Informationen zu Dienstkonten erstellen und verwalten.
Dienstkonto | Erforderlich für | Beschreibung |
---|---|---|
Proxy | Apigee und Apigee Hybrid | Hat die erforderlichen Berechtigungen für einen API-Proxy, um authentifizierte Aufrufe an ausgewählte Google-Dienste durchzuführen.
|
Laufzeit | Nur Apigee Hybrid | Ermöglicht der Apigee-Laufzeit, Tokens für die Authentifizierung bei Google-Diensten zu generieren, die von einem API-Proxy angefragt werden. Dieses Dienstkonto "verkörpert" das proxyspezifische Dienstkonto, um in dessen Namen authentifizierte Aufrufe auszuführen.
|