Google-Authentifizierung verwenden

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.

  1. 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.
  2. 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"
    
  3. Dabei gilt:

    • 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.
  4. 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.
  5. 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.
  6. 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).
  7. Testen Sie nach Abschluss der Bereitstellung Ihren API-Proxy, um zu prüfen, ob der Google-Dienst die erwartete Antwort zurückgibt.

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.

  1. Erstellen Sie ein Dienstkonto und einen Schlüssel für die Apigee Hybrid-Laufzeitkomponente. Wenden Sie dazu eine der folgenden Methoden an:
  2. Ö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"
  3. Wenden Sie die Überschreibungsdatei mit apigeectl apply auf Ihren Cluster an.
  4. 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.
  5. 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"
    
  6. Dabei gilt:

    • 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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).
  11. Testen Sie nach Abschluss der Bereitstellung Ihren API-Proxy, um zu prüfen, ob der Google-Dienst die erwartete Antwort zurückgibt.

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.

  • Muss im selben Google Cloud-Projekt wie Ihre Apigee-Organisation erstellt werden.
  • Der Nutzer, der die Bereitstellung durchführt (der Bereitsteller), muss die Berechtigung iam.serviceAccounts.actAs für das Proxy-Dienstkonto haben oder erhalten.
  • Muss Berechtigungen enthalten, die für die Kommunikation mit bestimmten Google-Zieldiensten erforderlich sind. 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.
  • Der Name des Dienstkontos muss angegeben werden, wenn Sie den Proxy bereitstellen, der die Google-Authentifizierung verwendet.
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.

  • Um das Proxy-Dienstkonto zu verkörpern und Token zu erstellen, muss dem Laufzeit-Dienstkonto die Rolle roles/iam.serviceAccountTokenCreator auf dem Proxy-Dienstkonto zugewiesen werden. Siehe Zugriff auf Dienstkonten verwalten.