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 innerhalb einer Organisation zu verwalten.

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

  • Sie können den Zugriff auf Anwendungen mit IAP-Käufen für externe Nutzer außerhalb Ihrer Organisation verwalten.
  • Zugriff auf Webanwendungen verwalten, die sich in Projekten befinden, die nicht zu einerGoogle Cloud -Organisation gehören.
  • Benutzerdefinierte Markeninformationen in Zustimmungsbildschirmen während der Authentifizierung 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üfungsverfahren 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, das Clientschlüssel sicher zu speichern und bei Bedarf mit autorisierten Clients zu teilen.

Von Google verwaltete und benutzerdefinierte OAuth-Clients vergleichen

Auf IAP-geschützte Anwendungen kann über von Google verwaltete OAuth-Clients nicht programmatisch 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 Einstellung programmatic_clients oder ein Dienstkonto-JWT konfiguriert ist.

In der folgenden Tabelle wird der von Google verwaltete OAuth-Client mit einem benutzerdefinierten OAuth-Client verglichen.

Von Google verwalteter OAuth-Client Benutzerdefinierter OAuth-Client
Nutzer Nur intern Interne und externe
Brand Google Cloud brand Kundeneigene Marke
OAuth-Konfiguration Von Google konfiguriert Vom Kunden konfiguriert
OAuth-Anmeldedaten Von Google verwaltet Kundenverwaltet
Anwendungszugriff Nur Browser-Ablauf Browser-Ablauf und programmatischer Zugriff

Seite für Branding konfigurieren

So konfigurieren Sie die Seite für benutzerdefiniertes Branding mit der Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die OAuth-Seite Branding 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 des Nutzersupports 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 auf Nutzer außerhalb Ihrer Organisation zu erlauben.

  6. Geben Sie unter Kontaktdaten die E-Mail-Adresse des Administrators ein, der für die Apps kontaktiert werden soll, 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 derGoogle Cloud -Konsole auf folgende Weise erstellen:

Unabhängig davon, welche Methode Sie verwenden, 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 benutzerdefinierte OAuth-Clients mit derGoogle Cloud Console erstellen. Sie können benutzerdefinierte IAP-OAuth-Clients auf jeder Ebene der Ressourcenhierarchie einrichten.

Wenn Sie benutzerdefinierte OAuth-Clients für eine Ressource mit der Google Cloud Console erstellen möchten, verwenden Sie eine der folgenden Methoden:

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 die IAP-Weiterleitungs-URI manuell hinzufügen.

  1. Rufen Sie in der Google Cloud Console die Seite APIs und Dienste > Anmeldedaten auf.

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

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

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

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

  6. Rufen Sie nach der Erstellung des OAuth-Clients den Abschnitt Autorisierte Redirect-URIs auf der Detailseite des neu erstellten OAuth-Clients 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 automatisch generierten IAP-Anmeldedaten erstellen

Bei dieser Methode wird der OAuth-Client von IAP erstellt und konfiguriert und der erforderliche Weiterleitungs-URI wird automatisch hinzugefügt.

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

    Zu IAP

  2. Suchen Sie auf dem Tab Applications (Anwendungen) in der Ressourcenliste nach der Ressource, die Sie konfigurieren möchten.

    Gehen Sie für Ressourcen auf Projektebene so vor:

    • Erstellen Sie den OAuth-Client über die Google Cloud -Konsole:

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

      2. Wählen Sie im Dialogfeld Einstellungen die Option Benutzerdefiniertes OAuth aus.

      3. Wenn Sie noch 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 ‑Schlüssel, die mit dieser Ressource verwendet werden können. 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 den Clientschlüssel zuzugreifen. Die Anmeldedaten werden in einer JSON-formatierten Datei gespeichert. Da die Datei vertrauliche Anmeldedaten für den Zugriff auf Ressourcen enthält, muss sie gesichert 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 Kunden direkt auf Ihrer Plattform anzuwenden.

  1. Erstellen Sie den benutzerdefinierten OAuth-Client, indem Sie der Anleitung für dieGoogle Cloud -Konsole folgen, die weiter oben in diesem Dokument beschrieben wird.

  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 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.

      * <code>--folder=<var>FOLDER_ID</var></code>
      * <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 mit den OAuth-Clients durch IAP geschützt sind, finden Sie unter Zugriff testen.

Alte Konfiguration benutzerdefinierter OAuth-Clients für eine Ressource

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

App Engine

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

gcloud

在设置项目和 IAP 之前,您需要最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。

  1. 如需进行身份验证,请使用 Google Cloud CLI 并运行以下命令。
    gcloud auth login
  2. 如需登录,请访问显示的网址。
  3. 登录后,复制显示的验证码并将其粘贴到命令行中。
  4. 运行以下命令,指定包含要使用 IAP 保护的资源的项目。
    gcloud config set project PROJECT_ID
  5. 按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。
  6. 保存 OAuth 客户端 ID 和密钥。
  7. 如需启用 IAP,请运行以下命令。
    gcloud iap web enable \
        --oauth2-client-id=CLIENT_ID \
        --oauth2-client-secret=CLIENT_SECRET \
        --resource-type=app-engine

启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。

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 den Clientschlüssel.

  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 die IAP-Zugriffsrichtlinie mit der Google Cloud CLI und 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

如果您运行的是 GKE 1.24 版或更高版本的集群,则可以使用 Kubernetes Gateway API 配置 IAP 和 GKE。如需查看相关说明,请参阅配置 IAP。

  1. 按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。

  2. 创建 Kubernetes Secret 以封装 OAuth 客户端。

    kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \
      --from-literal=client_secret=CLIENT_SECRET
    
    请替换以下内容:

    • MY_SECRET:要创建的 Secret 的名称
    • CLIENT_ID:OAuth 客户端 ID
    • CLIENT_SECRET:OAuth 客户端密钥

    您应该会收到确认信息(如以下输出所示),表明 Secret 已成功创建:

    secret "MY_SECRET" created
    

  3. 将 OAuth 凭证添加到 BackendConfig。

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

  4. 通过将服务端口与 BackendConfig 相关联来启用 IAP。请参阅将 BackendConfig 与 Ingress 关联。建立此关联的一种方法是将服务的所有端口默认设置为您的 BackendConfig,您可以通过向 Service 资源添加以下注解来实现此目的:

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

启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。

问题排查

如果您引用的 secretName 不存在或结构不正确,系统会显示以下出错提示之一:

  • BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found. 如需解决此错误,请确保已按照第 2 步中的说明正确创建了 Kubernetes Secret。

  • BackendConfig default/config-default is not valid: secret "foo" missing client_secret data. 如需解决此错误,请确保您已正确创建 OAuth 凭据。此外,请确保您引用了正确的 client_id 和 client_secret 密钥。

Backend-Dienst des Load Balancers

Für Nutzer von Compute Engine und Cloud Run wird in diesem Abschnitt beschrieben, wie Sie OAuth-Clients in IAP für den Load-Balancer-Backend-Dienst 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 finden Sie unter gcloud CLI installieren.

  1. Verwenden Sie zur Authentifizierung die Google Cloud CLI und führen Sie den folgenden Befehl aus.
    gcloud auth login
  2. Folgen Sie der angezeigten URL, 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 den Clientschlüssel.
  7. Führen Sie den globalen oder regionalen Befehl 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 die IAP-Zugriffsrichtlinie mit der gcloud CLI und 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 den Clientschlüssel.

  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 die IAP-Zugriffsrichtlinie mit der gcloud CLI und 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. Sehen Sie sich auf der Seite „IAP“ auf dem Tab Anwendungen die Anwendungen an, 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 von Ihnen konfigurierte Zustimmungsbildschirm angezeigt.