Benutzerdefinierte OAuth-Clients mit IAP verwenden

In diesem Dokument wird beschrieben, wann und wie Sie benutzerdefinierte OAuth-Clients für Identity-Aware Proxy (IAP) verwenden.

Standardmäßig verwendet IAP von Google verwaltete OAuth-Clients zur Authentifizierung von Nutzern. Von Google verwaltete OAuth-Clients können nur verwendet werden, um den Zugriff für interne Nutzer zu verwalten, die sich in einer Organisation befinden.

Sie müssen eine benutzerdefinierte OAuth-Konfiguration verwenden, um Folgendes zu tun:

  • Zugriff auf IAP-aktivierte Anwendungen für externe Nutzer verwalten, die sich außerhalb Ihrer Organisation befinden.
  • Zugriff auf Webanwendungen verwalten, die sich in Projekten befinden, die nicht zu einer Google Cloud Organisation gehören.
  • Benutzerdefinierte Markeninformationen während der Authentifizierung auf Zustimmungsbildschirmen anzeigen.

Sie können benutzerdefinierte OAuth-Clients entweder in IAP oder direkt auf Ihrer Plattform konfigurieren.

Wenn Sie benutzerdefinierte OAuth-Clients verwenden, müssen Sie den OAuth-Zustimmungsbildschirm konfigurieren. Damit benutzerdefiniertes Branding auf dem Zustimmungsbildschirm angezeigt wird, müssen Sie Ihre Anwendung zur Überprüfung durch Google einreichen. Weitere Informationen zum Überprüfungsprozess finden Sie unter OAuth-Zustimmungsbildschirm einrichten.

Wenn Sie benutzerdefinierte OAuth-Clients konfigurieren, sind Sie für das Erstellen und Verwalten der Anmeldedaten verantwortlich. Dazu gehört auch, den Clientschlüssel sicher zu speichern und ihn bei Bedarf für autorisierte Clients freizugeben.

Von Google verwaltete OAuth-Clients und benutzerdefinierte OAuth-Clients vergleichen

Auf von Google verwaltete OAuth-Clients kann nicht programmatisch auf IAP-geschützte Anwendungen zugegriffen werden. Auf IAP-geschützte Anwendungen, die den von Google verwalteten OAuth-Client verwenden, kann jedoch weiterhin programmatisch über einen separaten OAuth-Client zugegriffen werden, der über die programmatic_clients Einstellung oder ein Dienstkonto-JWT konfiguriert wurde.

In der folgenden Tabelle werden der von Google verwaltete OAuth-Client und ein benutzerdefinierter OAuth-Client verglichen.

Von Google verwalteter OAuth-Client Benutzerdefinierter OAuth-Client
Nutzer Nur intern Interne und externe
Marke Google Cloud Marke Marke im Besitz des Kunden
OAuth-Konfiguration Von Google konfiguriert Vom Kunden konfiguriert
OAuth-Anmeldedaten Von Google verwaltet Kundenverwaltet
Anwendungszugriff Nur Browserablauf Browserablauf und programmatischer Zugriff

Seite „Branding“ konfigurieren

So konfigurieren Sie die benutzerdefinierte Branding-Seite mit der Google Cloud console: Gehen Sie wie folgt vor:

  1. Rufen Sie in der Google Cloud console die Seite Branding für OAuth auf:

    Zum Branding

  2. Klicken Sie auf Jetzt starten.

  3. Geben Sie unter App-Name den Namen der Anwendung für den Zustimmungsbildschirm ein.

  4. Geben Sie unter E‑Mail-Adresse für den Nutzersupport die E‑Mail-Adresse des Administrators für den Support ein.

  5. Wählen Sie unter Zielgruppe die Option Intern aus, um den Zugriff auf Nutzer in Ihrer Organisation zu beschränken, oder Extern , um den Zugriff für Nutzer außerhalb Ihrer Organisation zuzulassen.

  6. Geben Sie unter Kontaktdaten die E‑Mail-Adresse des Administrators ein, über die Sie sich für die Apps melden können, die durch die OAuth-Clients geschützt sind. Sie konfigurieren die OAuth-Clients in einem späteren Schritt.

  7. Klicken Sie auf Erstellen, um die OAuth-Konfiguration zu erstellen.

Benutzerdefinierte OAuth-Clients in IAP konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte OAuth-Clients in IAP einrichten.

Sie können einen benutzerdefinierten OAuth-Client für IAP mit der Google Cloud console auf folgende Weise erstellen:

Unabhängig von der verwendeten Methode müssen Sie die Branding-Seite konfigurieren, bevor Sie Ihren OAuth-Client erstellen. Das erforderliche Weiterleitungs-URI-Format wird in beiden Methoden angezeigt.

Benutzerdefinierten OAuth-Client erstellen

In diesem Abschnitt wird beschrieben, wie Sie mit der Google Cloud console benutzerdefinierte OAuth-Clients erstellen. Sie können benutzerdefinierte IAP-OAuth-Clients auf jeder Ebene der Ressourcenhierarchie einrichten.

Verwenden Sie eine der folgenden Methoden, um mit der Google Cloud console, benutzerdefinierte OAuth-Clients für eine Ressource zu erstellen:

Methode 1: OAuth-Client mit der Google Cloud console erstellen

Verwenden Sie diese Methode, wenn Sie den OAuth-Client separat erstellen möchten, z. B. bevor Sie IAP für Ihre Ressourcen konfigurieren. Dazu müssen Sie den IAP-Weiterleitungs-URI manuell hinzufügen.

  1. Rufen Sie in der Google Cloud console die Seite APIs & Dienste > Anmeldedaten auf.

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie dann OAuth-Client-ID aus.

  3. Wählen Sie als Anwendungstyp die Option Webanwendung aus.

  4. Geben Sie im Feld Name einen beschreibenden Namen für Ihren OAuth-Client ein.

  5. Klicken Sie auf Erstellen. Notieren Sie sich die generierte Client-ID.

  6. Nachdem der OAuth-Client erstellt wurde, rufen Sie den Abschnitt Autorisierte Weiterleitungs-URIs auf der Detailseite des OAuth-Clients für den neu erstellten OAuth-Client auf.

  7. Klicken Sie auf URI hinzufügen und geben Sie den folgenden IAP-spezifischen Autorisierten Weiterleitungs-URI ein:

    https://iap.googleapis.com/v1/oauth/clientIds/YOUR_CLIENT_ID:handleRedirect

    Ersetzen Sie YOUR_CLIENT_ID durch die Client-ID, die Sie im vorherigen Schritt erhalten haben.

  8. Klicken Sie auf Speichern.

Methode 2: OAuth-Client mit der Funktion „Anmeldedaten automatisch generieren“ von IAP erstellen

Verwenden Sie diese Methode, damit IAP den OAuth-Client für Sie erstellt und konfiguriert und automatisch den erforderlichen Weiterleitungs-URI hinzufügt.

  1. Rufen Sie in der Google Cloud console die IAP Seite auf.

    Zu IAP

  2. Suchen Sie auf dem Tab Anwendungen in der Liste der Ressourcen die Ressource, die Sie konfigurieren möchten.

    Gehen Sie für Ressourcen auf Projektebene so vor:

    • OAuth-Client mit der Google Cloud consoleerstellen:

      1. Klicken Sie in der Spalte Aktionen auf Weitere Optionen > Einstellungen.

      2. Wählen Sie im Dialogfeld Einstellungen die Option Benutzerdefinierter OAuth-Client aus.

      3. Wenn Sie keinen Zustimmungsbildschirm konfiguriert haben, gehen Sie so vor:

        1. Klicken Sie auf Zustimmungsbildschirm konfigurieren.

        2. Folgen Sie der Anleitung zum Konfigurieren der Branding-Seite die weiter oben in diesem Dokument beschrieben wird.

      4. Klicken Sie im Dialogfeld „IAP-Einstellungen“ auf Anmeldedaten automatisch generieren. IAP generiert einen neuen OAuth-Client und ein neues Secret für die Verwendung mit dieser Ressource. In der Google Auth Platform enthält das Feld Autorisierte Weiterleitungs-URIs einen Eintrag im folgenden Format:

        https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
      5. Klicken Sie auf Anmeldedaten herunterladen, um auf die Client-ID und das Secret zuzugreifen. Die Anmeldedaten werden in einer JSON-Datei gespeichert. Da die Datei vertrauliche Anmeldedaten für den Zugriff auf Ressourcen enthält, muss sie geschützt oder gelöscht werden.

      6. Klicken Sie auf Speichern, um die IAP-OAuth-Konfiguration zu speichern und den OAuth-Client auf IAP anzuwenden.

Benutzerdefinierte OAuth-Clients auf IAP anwenden

In diesem Abschnitt wird beschrieben, wie Sie OAuth-Clients auf IAP anwenden. Sie können diese Methode verwenden, anstatt die Clients direkt auf Ihrer Plattform anzuwenden.

  1. Folgen Sie der Anleitung in der Google Cloud console, die weiter oben in diesem Dokument beschrieben wird, um den benutzerdefinierten OAuth-Client zu erstellen.

  2. Wenden Sie den benutzerdefinierten OAuth-Client an.

    gcloud

    So wenden Sie den benutzerdefinierten OAuth-Client mit der gcloud CLI an:

    1. Erstellen Sie eine YAML-Datei mit den Einstellungen.

      cat << EOF > iap-oauth.yaml
      accessSettings:
      oauthSettings:
        clientId: CLIENT_ID
        clientSecret: CLIENT_SECRET
      EOF
      

      Ersetzen Sie Folgendes:

      • CLIENT_ID: Die Client-ID aus den OAuth-Anmeldedaten, die Sie zuvor generiert haben.
      • CLIENT_SECRET: Der Clientschlüssel aus den OAuth-Anmeldedaten, die Sie zuvor generiert haben.
    2. Führen Sie einen der folgenden Schritte aus, um die OAuth-Konfiguration festzulegen:

      • Führen Sie den folgenden Befehl aus, um die OAuth-Konfiguration auf Projektebene festzulegen:
      gcloud iap settings set iap-oauth.yaml

      Wenn Sie die Konfiguration auf einer anderen Ebene der Ressourcenhierarchie festlegen möchten, verwenden Sie anstelle des Flags --project eines der folgenden Flags. Wenn Sie benutzerdefinierte OAuth-Clients auf einer Ebene der Ressourcenhierarchie festlegen, wird für alle Dienste, die auf dieser Ebene ausgeführt werden, dasselbe benutzerdefinierte Branding verwendet.

      * <pre>--folder=<var>FOLDER_ID</var></pre>
      * <code>--organization=<var>ORGANIZATION_ID</var></code>
      
      • Führen Sie den folgenden Befehl aus, um die Konfiguration für einen bestimmten Dienst festzulegen:
      gcloud iap settings set iap-oauth.yaml \
          --project=PROJECT_ID \
          --resource-type= RESOURCE_TYPE \
          --region=REGION \
          --service=SERVICE_NAME

      Ersetzen Sie Folgendes:

      • PROJECT_ID: Die ID der Projektressource. Wenn Sie die Konfiguration auf einer anderen Ebene festlegen möchten, verwenden Sie anstelle des Flags --project eines der folgenden Flags:

        • --folder=FOLDER_ID
        • --organization=ORGANIZATION_ID
      • RESOURCE_TYPE: Ersetzen Sie diesen Platzhalter je nach Ressource durch einen der folgenden Ressourcentypen:

        • app-engine
        • backend-services
        • cloud-run
        • compute
        • folder
        • forwarding-rule
        • iap_web
        • organization
      • REGION: Die Region, in der Sie Ihren Cloud Run-Dienst ausführen.

      • SERVICE_NAME: Der Name Ihres Dienstes.

    Terraform

    So wenden Sie den benutzerdefinierten OAuth-Client mit Terraform an:

    resource "google_iap_settings" "iap_settings" {
    name = IAP_RESOURCE_NAME
    access_settings {
      oauth_settings {
          oauth_client_id = CLIENT_ID
          oauth_client_secret = CLIENT_SECRET
      }
    }
    }
    

    Ersetzen Sie Folgendes:

    • IAP_RESOURCE_NAME: Der Ressourcenname der iap_settings Ressource für den Dienst im folgenden Format: projects/PROJECT_NUMBER/iap_web/REGION/services/SERVICE_NAME
    • CLIENT_ID: Die Client-ID aus den OAuth-Anmeldedaten, die Sie zuvor generiert haben
    • CLIENT_SECRET: Der Clientschlüssel aus den OAuth-Anmeldedaten, die Sie zuvor generiert haben

    REST API

    1. Erstellen Sie eine JSON-Datei mit den Einstellungen.

      cat << EOF > iap-oauth.json
      {
      "accessSettings": {
        "oauthSettings": {
          "clientId": "CLIENT_ID",
          "clientSecret": "CLIENT_SECRET"
        }
      }
      }
      EOF

      Ersetzen Sie Folgendes:

      • CLIENT_ID: Die Client-ID aus den OAuth-Anmeldedaten, die Sie zuvor generiert haben.
      • CLIENT_SECRET: Der Clientschlüssel aus den OAuth-Anmeldedaten, die Sie zuvor generiert haben.
    2. Wenden Sie die Einstellungsdatei an.

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)"
      -H "Content-Type: application/yaml" \
      "https://iap.googleapis.com/v1/projects/cb-managed-ingress-demo/iap_web/forwarding_rule-us-central1/services/psc-fr:iapSettings?update_mask=iapSettings.accessSettings.oauthSettings.oauthClientId,iapSettings.accessSettings.oauthSettings.oauthClientSecret" \
      -d @iap-oauth.json
      

Informationen zum Testen, ob Ihre Webanwendungen durch IAP mit den OAuth-Clients geschützt sind, finden Sie unter Zugriff testen.

Legacy-Konfiguration von benutzerdefinierten OAuth-Clients für eine Ressource

In den folgenden Abschnitten werden Legacy-Methoden zum Konfigurieren benutzerdefinierter OAuth-Clients in IAP für bestimmte Ressourcentypen beschrieben. Sie können diesen Abschnitt überspringen, wenn Sie die weiter oben in diesem Dokument beschriebene Methode verwendet haben.

App Engine

In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte OAuth-Clients in App Engine aktivieren.

gcloud

Bevor Sie Ihr Projekt und IAP einrichten, benötigen Sie eine aktuelle Version der gcloud CLI. Eine Anleitung zur Installation der gcloud CLI, finden Sie unter gcloud CLI installieren.

  1. Verwenden Sie die Google Cloud CLI, um sich zu authentifizieren, und führen Sie den folgenden Befehl aus.
    gcloud auth login
  2. Folgen Sie der URL, die angezeigt wird, um sich anzumelden.
  3. Kopieren Sie, nachdem Sie sich angemeldet haben, den angezeigten Bestätigungscode und fügen Sie ihn in die Befehlszeile ein.
  4. Führen Sie den folgenden Befehl aus, um das Projekt anzugeben, das die Ressource enthält, die Sie mit IAP schützen möchten.
    gcloud config set project PROJECT_ID
  5. Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen , um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.
  6. Speichern Sie die OAuth-Client-ID und das Secret.
  7. Führen Sie den folgenden Befehl aus, um IAP zu aktivieren.
    gcloud iap web enable \
        --oauth2-client-id=CLIENT_ID \
        --oauth2-client-secret=CLIENT_SECRET \
        --resource-type=app-engine

Nachdem Sie IAP aktiviert haben, können Sie mit der gcloud CLI die IAP-Zugriffsrichtlinie mithilfe der IAM-Rolle roles/iap.httpsResourceAccessor ändern. Weitere Informationen zum Verwalten von Rollen und Berechtigungen.

API

  1. Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.

  2. Speichern Sie die OAuth-Client-ID und das Secret.

  3. Führen Sie den folgenden Befehl aus, um eine settings.json-Datei vorzubereiten.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled": true,
        "oauth2ClientId": "CLIENT_ID",
        "oauth2ClientSecret":" CLIENT_SECRET"
      }
    }
    EOF
    

  4. Führen Sie den folgenden Befehl aus, um IAP zu aktivieren.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
    

Nachdem Sie IAP aktiviert haben, können Sie mit der Google Cloud CLI die IAP-Zugriffsrichtlinie mithilfe der IAM-Rolle roles/iap.httpsResourceAccessor ändern. Weitere Informationen zum Verwalten von Rollen und Berechtigungen.

GKE

In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte OAuth-Clients in GKE aktivieren.

BackendConfig konfigurieren

Wenn Sie GKE-Cluster der Version 1.24 oder höher verwenden, können Sie IAP und GKE mit der Kubernetes Gateway API konfigurieren. Eine Anleitung finden Sie unter IAP konfigurieren.

  1. Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.

  2. Erstellen Sie ein Kubernetes-Secret, um den OAuth-Client zu verpacken.

    kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \
      --from-literal=client_secret=CLIENT_SECRET
    
    Ersetzen Sie Folgendes:

    • MY_SECRET: Der Name des zu erstellenden Secrets
    • CLIENT_ID: Die OAuth-Client-ID
    • CLIENT_SECRET: Der OAuth-Clientschlüssel

    Sie sollten eine Bestätigung erhalten, dass das Secret erfolgreich erstellt wurde. Die Ausgabe sieht in etwa so aus:

    secret "MY_SECRET" created
    

  3. Fügen Sie der BackendConfig die OAuth-Anmeldedaten hinzu.

    apiVersion: cloud.google.com/v1
    kind: BackendConfig
    metadata:
      name: CONFIG_DEFAULT
      namespace: my-namespace
    spec:
    iap:
      enabled: true
      oauthclientCredentials:
        secretName: MY_SECRET
    

  4. Aktivieren Sie IAP, indem Sie Dienstports mit Ihrer BackendConfig verknüpfen. Weitere Informationen finden Sie unter BackendConfig mit Ihrem Ingress verknüpfen. Sie können diese Verknüpfung dadurch herstellen, dass Sie Ihre BackendConfig als Standardeinstellung für alle Ports angeben. Fügen Sie Ihrer Dienstressource hierfür folgende Annotation hinzu:

    metadata:
      annotations:
          beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}}'
    

Nachdem Sie IAP aktiviert haben, können Sie mit der gcloud CLI die IAP-Zugriffsrichtlinie mithilfe der IAM-Rolle roles/iap.httpsResourceAccessor ändern. Weitere Informationen zum Verwalten von Rollen und Berechtigungen.

Fehlerbehebung

Wenn der von Ihnen referenzierte secretName nicht existiert oder nicht richtig strukturiert ist, wird eine der folgenden Fehlermeldungen angezeigt:

  • BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found. Dieser Fehler lässt sich beheben, indem Sie dafür sorgen, dass das Kubernetes-Secret wie in Schritt 2 beschrieben korrekt erstellt wurde.

  • BackendConfig default/config-default is not valid: secret "foo" missing client_secret data. Dieser Fehler lässt sich beheben, indem Sie dafür sorgen, dass die OAuth-Anmeldedaten korrekt erstellt wurden. Prüfen Sie außerdem, ob Sie die richtigen client_id- und client_secret-Schlüssel referenziert haben.

Backend-Dienst des Load Balancers

In diesem Abschnitt wird beschrieben, wie Sie für Nutzer von Compute Engine und Cloud Run OAuth-Clients in IAP für den Backend-Dienst des Load Balancers einrichten.

gcloud

Bevor Sie Ihr Projekt und IAP einrichten, benötigen Sie eine aktuelle Version der gcloud CLI. Eine Anleitung zur Installation der gcloud CLI, siehe gcloud CLI installieren.

  1. Verwenden Sie die Google Cloud CLI, um sich zu authentifizieren, und führen Sie den folgenden Befehl aus.
    gcloud auth login
  2. Folgen Sie der URL, die angezeigt wird, um sich anzumelden.
  3. Kopieren Sie, nachdem Sie sich angemeldet haben, den angezeigten Bestätigungscode und fügen Sie ihn in die Befehlszeile ein.
  4. Führen Sie den folgenden Befehl aus, um das Projekt anzugeben, das die Ressource enthält, die Sie mit IAP schützen möchten.
    gcloud config set project PROJECT_ID
  5. Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.
  6. Speichern Sie die OAuth-Client-ID und das Secret.
  7. Führen Sie den Befehl mit globalem oder regionalem Bereich aus, um IAP zu aktivieren.

    Globaler Bereich
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    Regionaler Bereich
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
        

Nachdem Sie IAP aktiviert haben, können Sie mit der gcloud CLI die IAP-Zugriffsrichtlinie mithilfe der IAM-Rolle roles/iap.httpsResourceAccessor ändern. Weitere Informationen zum Verwalten von Rollen und Berechtigungen.

API

  1. Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.

  2. Speichern Sie die OAuth-Client-ID und das Secret.

  3. Führen Sie den folgenden Befehl aus, um eine settings.json-Datei vorzubereiten.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled": true,
        "oauth2ClientId": "CLIENT_ID",
        "oauth2ClientSecret": "CLIENT_SECRET"
      }
    }
    EOF
    

  4. Führen Sie den folgenden Befehl aus, um IAP zu aktivieren.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
    

Nachdem Sie IAP aktiviert haben, können Sie mit der gcloud CLI die IAP-Zugriffsrichtlinie mithilfe der IAM-Rolle roles/iap.httpsResourceAccessor ändern. Weitere Informationen zum Verwalten von Rollen und Berechtigungen.

Zugriff testen

Nachdem Sie Ihren benutzerdefinierten OAuth-Client konfiguriert haben, können Sie testen, ob IAP ihn zum Schutz Ihres Dienstes verwendet. Gehen Sie dazu so vor:

  1. Rufen Sie auf der Seite „IAP“ den Tab Anwendungen auf, um die Anwendungen zu sehen, die von IAP verwaltet werden.

  2. Rufen Sie die URL einer der Anwendungen auf. Wenn Sie zum ersten Mal seit der Konfiguration des Zustimmungsbildschirms auf die Anwendung zugreifen, wird der zuvor konfigurierte Zustimmungsbildschirm angezeigt.