In diesem Dokument wird beschrieben, wann und wie benutzerdefinierte OAuth-Clients für Identity-Aware Proxy (IAP) verwendet werden.
Standardmäßig verwendet IAP von Google verwaltete OAuth-Clients, um Nutzer zu authentifizieren. Von Google verwaltete OAuth-Clients können nur verwendet werden, um den Zugriff für interne Nutzer innerhalb einer Organisation zu verwalten.
In den folgenden Fällen müssen Sie eine benutzerdefinierte OAuth-Konfiguration verwenden:
Zugriff auf IAP-fähige Anwendungen 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 auf 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 das benutzerdefinierte 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 sichere Speichern des Clientschlüssels und das Freigeben für autorisierte Clients, falls erforderlich.
Von Google verwaltete OAuth-Clients und benutzerdefinierte OAuth-Clients vergleichen
Von Google verwaltete OAuth-Clients können nicht programmatisch auf IAP-geschützte Anwendungen zugreifen. 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 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 |
| Brand | Google Cloud Marke | Kundeneigene Marke |
| OAuth-Konfiguration | Von Google konfiguriert | Kundenkonfiguration |
| OAuth-Anmeldedaten | Von Google verwaltet | Kundenverwaltet |
| Anwendungszugriff | Nur Browser-Ablauf | Browserablauf und programmatischer Zugriff |
Branding-Seite konfigurieren
So konfigurieren Sie die Seite für benutzerdefiniertes Branding mit der Google Cloud Console:
Rufen Sie in der Google Cloud Console die Seite OAuth-Branding auf:
Klicken Sie auf Jetzt starten.
Geben Sie unter App-Name den Namen der Anwendung für den Zustimmungsbildschirm ein.
Geben Sie unter E-Mail-Adresse des Nutzersupports die E-Mail-Adresse des Administrators für den Support ein.
Wählen Sie für Zielgruppe die Option Intern aus, um den Zugriff auf Nutzer innerhalb Ihrer Organisation zu beschränken, oder Extern, um Nutzern außerhalb Ihrer Organisation Zugriff zu gewähren.
Geben Sie unter Kontaktdaten die E-Mail-Adresse des Administrators ein, der für die durch die OAuth-Clients geschützten Apps kontaktiert werden soll. Sie konfigurieren die OAuth-Clients in einem späteren Schritt.
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 Console auf folgende Weise erstellen:
OAuth-Client manuell erstellen: Sie müssen den Weiterleitungs-URI selbst hinzufügen, bevor Sie IAP konfigurieren.
OAuth-Client automatisch mit automatisch generierten IAP-Anmeldedaten erstellen: IAP erstellt und konfiguriert den OAuth-Client für Sie und fügt automatisch den erforderlichen Weiterleitungs-URI hinzu.
Unabhängig von der verwendeten Methode müssen Sie die Branding-Seite konfigurieren, bevor Sie Ihren OAuth-Client erstellen. Das erforderliche Format für den Weiterleitungs-URI 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.
So erstellen Sie benutzerdefinierte OAuth-Clients für eine Ressource mit der Google Cloud Console:
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. vor der Konfiguration von IAP für Ihre Ressourcen. Dazu muss der IAP-Weiterleitungs-URI manuell hinzugefügt werden.
Rufen Sie in der Google Cloud Console APIs und Dienste > Anmeldedaten auf.
Klicken Sie auf Anmeldedaten erstellen und wählen Sie dann OAuth-Client-ID aus.
Wählen Sie als Anwendungstyp die Option Webanwendung aus.
Geben Sie im Feld Name einen aussagekräftigen Namen für Ihren OAuth-Client ein.
Klicken Sie auf Erstellen. Notieren Sie sich die generierte Client-ID.
Nachdem der OAuth-Client erstellt wurde, rufen Sie auf der Detailseite des OAuth-Clients den Abschnitt Autorisierte Weiterleitungs-URIs auf.
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_IDdurch die Client-ID, die Sie im vorherigen Schritt erhalten haben.Klicken Sie auf Speichern.
Methode 2: OAuth-Client mit automatisch generierten IAP-Anmeldedaten erstellen
Mit dieser Methode können Sie den OAuth-Client von IAP erstellen und konfigurieren lassen. Der erforderliche Weiterleitungs-URI wird automatisch hinzugefügt.
Rufen Sie in der Google Cloud Console die Seite IAP auf.
Suchen Sie auf dem Tab Anwendungen in der Liste der Ressourcen nach der Ressource, die Sie konfigurieren möchten.
So gehen Sie bei Ressourcen auf Projektebene vor:
Erstellen Sie den OAuth-Client mit der Google Cloud -Konsole:
Klicken Sie in der Spalte Aktionen auf Weitere Optionen > Einstellungen.
Wählen Sie im Dialogfeld Einstellungen die Option Benutzerdefiniertes OAuth aus.
Wenn Sie keinen Zustimmungsbildschirm konfiguriert haben, gehen Sie so vor:
Klicken Sie auf Zustimmungsbildschirm konfigurieren.
Folgen Sie der Anleitung zum Konfigurieren der Branding-Seite, die Sie weiter oben in diesem Dokument finden.
Klicken Sie im Dialogfeld „IAP-Einstellungen“ auf Anmeldedaten automatisch generieren. IAP generiert einen neuen OAuth-Client und einen neuen Clientschlü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
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, sollten Sie sie sichern oder löschen.
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.
Folgen Sie der Anleitung für dieGoogle Cloud -Console weiter oben in diesem Dokument, um den benutzerdefinierten OAuth-Client zu erstellen.
Wenden Sie den benutzerdefinierten OAuth-Client an.
gcloud
So wenden Sie den benutzerdefinierten OAuth-Client mit der gcloud CLI an:
Erstellen Sie eine YAML-Datei für die 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.
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
--projecteines der folgenden Flags. Wenn Sie benutzerdefinierte OAuth-Clients auf einer Ebene der Ressourcenhierarchie festlegen, wird allen Diensten, die auf dieser Ebene ausgeführt werden, dasselbe benutzerdefinierte Branding zugewiesen.--folder=FOLDER_ID--organization=ORGANIZATION_IDFü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--projecteines der folgenden Flags:--folder=FOLDER_ID--organization=ORGANIZATION_ID
RESOURCE_TYPE: Ersetzen Sie dies je nach Ressource durch einen der folgenden Ressourcentypen:app-enginebackend-servicescloud-runcomputefolderforwarding-ruleiap_weborganization
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 deriap_settings-Ressource für den Dienst im folgenden Format:projects/PROJECT_NUMBER/iap_web/REGION/services/SERVICE_NAMECLIENT_ID: die Client-ID aus den OAuth-Anmeldedaten, die Sie zuvor generiert habenCLIENT_SECRET: der Clientschlüssel aus den OAuth-Anmeldedaten, die Sie zuvor generiert haben
REST API
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.
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 zuvor 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.
-
Verwenden Sie zur Authentifizierung die Google Cloud CLI und führen Sie den folgenden Befehl aus.
gcloud auth login - Folgen Sie der angezeigten URL, um sich anzumelden.
- Kopieren Sie, nachdem Sie sich angemeldet haben, den angezeigten Bestätigungscode und fügen Sie ihn in die Befehlszeile ein.
-
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 - Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.
- Speichern Sie die OAuth-Client-ID und den Clientschlüssel.
-
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 die IAP-Zugriffsrichtlinie mit der gcloud CLI und der IAM-Rolle roles/iap.httpsResourceAccessor ändern. Weitere Informationen zum Verwalten von Rollen und Berechtigungen.
API
Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.
Speichern Sie die OAuth-Client-ID und den Clientschlüssel.
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" } } EOFFü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 konfigurieren
Wenn Sie GKE-Cluster der Version 1.24 oder höher ausführen, können Sie IAP und GKE mithilfe der Kubernetes Gateway API konfigurieren. Eine Anleitung finden Sie unter IAP konfigurieren.
Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.
Erstellen Sie ein Kubernetes-Secret, um den OAuth-Client zu verpacken.
Ersetzen Sie Folgendes:kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \ --from-literal=client_secret=CLIENT_SECRET
MY_SECRET: Der Name des zu erstellenden SecretsCLIENT_ID: Die OAuth-Client-IDCLIENT_SECRET: Der OAuth-Clientschlüssel
Sie sollten eine Bestätigung erhalten, dass das Secret erfolgreich erstellt wurde. Diese sieht in etwa so aus:
secret "MY_SECRET" created
Fügen Sie die OAuth-Anmeldedaten zur BackendConfig hinzu.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true oauthclientCredentials: secretName: MY_SECRETAktivieren Sie IAP, indem Sie Dienstports mit Ihrer BackendConfig verknüpfen. Weitere Informationen finden Sie unter BackendConfig mit Ihrem Ingress verknüpfen. Eine Möglichkeit, diese Verknüpfung herzustellen, besteht darin, alle Ports für den Dienst standardmäßig auf Ihre BackendConfig festzulegen. Dazu fügen Sie Ihrer Dienstressource die folgende Annotation hinzu:
metadata: annotations: cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'
Nachdem Sie IAP aktiviert haben, können Sie die gcloud CLI verwenden, um die IAP-Zugriffsrichtlinie mit der IAM-Rolle roles/iap.httpsResourceAccessor zu ändern. Weitere Informationen zum Verwalten von Rollen und Berechtigungen.
Fehlerbehebung
Wenn die von Ihnen referenzierte secretName nicht vorhanden 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.Achten Sie darauf, dass das Kubernetes-Secret wie in Schritt 2 beschrieben korrekt erstellt wurde, damit dieser Fehler nicht auftritt.BackendConfig default/config-default is not valid: secret "foo" missing client_secret data.Achten Sie darauf, dass die OAuth-Anmeldedaten korrekt erstellt wurden, damit dieser Fehler nicht auftritt. Prüfen Sie außerdem, ob Sie die richtigenclient_id- undclient_secret-Schlüssel referenziert haben.
Backend-Dienst des Load Balancers
In diesem Abschnitt wird für Nutzer von Compute Engine und Cloud Run beschrieben, wie OAuth-Clients in IAP für den Load-Balancer-Backend-Dienst eingerichtet werden.
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.
-
Verwenden Sie zur Authentifizierung die Google Cloud CLI und führen Sie den folgenden Befehl aus.
gcloud auth login - Folgen Sie der angezeigten URL, um sich anzumelden.
- Kopieren Sie, nachdem Sie sich angemeldet haben, den angezeigten Bestätigungscode und fügen Sie ihn in die Befehlszeile ein.
-
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
- Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.
- Speichern Sie die OAuth-Client-ID und den Clientschlüssel.
-
Führen Sie den globalen oder regionalen Befehl aus, um IAP zu aktivieren.
Globaler Bereich Regionaler Bereichgcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRETgcloud 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
Folgen Sie der Anleitung unter OAuth-Clients für IAP erstellen, um den OAuth-Zustimmungsbildschirm zu konfigurieren und den OAuth-Client zu erstellen.
Speichern Sie die OAuth-Client-ID und den Clientschlüssel.
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" } } EOFFü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:
Auf der IAP-Seite können Sie auf dem Tab Anwendungen die Anwendungen sehen, die von IAP verwaltet werden.
Rufen Sie die URL einer der Anwendungen auf. Wenn Sie zum ersten Mal auf die Anwendung zugreifen, seit Sie den Zustimmungsbildschirm konfiguriert haben, wird der zuvor konfigurierte Zustimmungsbildschirm angezeigt.