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:
- Verwalten Sie den Zugriff auf IAP-fähige Anwendungen für externe Nutzer außerhalb Ihrer Organisation.
- 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 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 Client-Secret sicher zu speichern und bei Bedarf mit autorisierten Clients zu teilen.
Von Google verwaltete OAuth-Clients 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 konfiguriert wurde, oder über ein Dienstkonto-JWT.
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 | Vom Kunden konfiguriert |
| OAuth-Anmeldedaten | Von Google verwaltet | Kundenverwaltet |
| Anwendungszugriff | Nur Browserablauf | Browser-Ablauf und programmatischer Zugriff |
Seite für Branding konfigurieren
So konfigurieren Sie die Seite für benutzerdefiniertes Branding mit der Google Cloud Console:
Rufen Sie in der Google Cloud Console die OAuth-Seite 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 in Ihrer Organisation zu beschränken, oder Extern, um den Zugriff für Nutzer außerhalb Ihrer Organisation zu erlauben.
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.
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.
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 -Konsole:
Rufen Sie in der Google Cloud Console die Seite IAP auf.
Suchen Sie auf dem Tab 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:
Klicken Sie in der Spalte Aktionen auf Weitere Optionen > Einstellungen.
Wählen Sie im Dialogfeld Einstellungen die Option Benutzerdefiniertes OAuth aus.
Wenn Sie noch keinen Zustimmungsbildschirm konfiguriert haben, gehen Sie so vor:
Klicken Sie auf Zustimmungsbildschirm konfigurieren.
Folgen Sie der Anleitung zum Konfigurieren der Branding-Seite, die weiter oben in diesem Dokument beschrieben wird.
Klicken Sie im Dialogfeld „IAP-Einstellungen“ auf Anmeldedaten automatisch generieren. IAP generiert einen neuen OAuth-Client und ein neues Secret, die mit dieser Ressource verwendet werden können. Das Feld Autorisierte Weiterleitungs-URIs in der Google Auth Platform enthält 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 das Secret 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.
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.
Erstellen Sie den benutzerdefinierten OAuth-Client, indem Sie derGoogle Cloud -Konsolenanleitung folgen, die weiter oben in diesem Dokument beschrieben wird.
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 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.
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 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--projecteines der folgenden Flags:--folder=FOLDER_ID--organization=ORGANIZATION_ID
RESOURCE_TYPE: Ersetzen Sie diesen Platzhalter 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.
Alte Konfiguration benutzerdefinierter 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 Methode verwendet haben, die weiter oben in diesem Dokument beschrieben wird.
App Engine
In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte OAuth-Clients in App Engine aktivieren.
gcloud
Before you set up your project and IAP, you need an up-to-date version of gcloud CLI. For instructions on how to install the gcloud CLI, see Install the gcloud CLI.
-
To authenticate, use the Google Cloud CLI and run the following command.
gcloud auth login - To sign in, follow the URL that appears.
- After you sign in, copy the verification code that appears and paste it in the command line.
-
Run the following command to specify the project that contains the resource that you want to protect with IAP.
gcloud config set project PROJECT_ID - Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
- Save the OAuth client ID and secret.
-
To enable IAP, run the following command.
gcloud iap web enable \ --oauth2-client-id=CLIENT_ID \ --oauth2-client-secret=CLIENT_SECRET \ --resource-type=app-engine
After you enable IAP, you can use the gcloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
API
Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
Save the OAuth client ID and secret.
Run the following command to prepare a
settings.jsonfile.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret":" CLIENT_SECRET" } } EOFRun the following command to enable IAP.
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"
After you enable IAP, you can use the Google Cloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
GKE
In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte OAuth-Clients in GKE aktivieren.
Configure the BackendConfig
If you are running GKE clusters version 1.24 or later, you can configure IAP and GKE by using the Kubernetes Gateway API. See Configure IAP for instructions.
Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
Create a Kubernetes Secret to wrap the OAuth client.
Replace the following:kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \ --from-literal=client_secret=CLIENT_SECRET
MY_SECRET: The name of the secret to createCLIENT_ID: The OAuth client IDCLIENT_SECRET: The OAuth client secret
You should receive confirmation, like the following output, that the Secret was successfully created:
secret "MY_SECRET" created
Add the OAuth credentials to the BackendConfig.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true oauthclientCredentials: secretName: MY_SECRETEnable IAP by associating Service ports with your BackendConfig. See Associating BackendConfig with your Ingress. One way to make this association is to make all ports for the service default to your BackendConfig, which you can do by adding the following annotation to your Service resource:
metadata: annotations: beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}}'
After you enable IAP, you can use the gcloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
Troubleshooting
If the secretName you referenced doesn't exist or isn't structured
properly, one of the following error messages will display:
BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found.To resolve this error, make sure that you've created the Kubernetes Secret correctly as described in step 2.BackendConfig default/config-default is not valid: secret "foo" missing client_secret data.To resolve this error, make sure that you've created the OAuth credentials correctly. Also, make sure that you referenced the correctclient_idandclient_secretkeys.
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
Before you set up your project and IAP, you need an up-to-date version of the gcloud CLI. For instructions on how to install the gcloud CLI, see Install the gcloud CLI.
-
To authenticate, use the Google Cloud CLI and run the following command.
gcloud auth login - To sign in, follow the URL that appears.
- After you sign in, copy the verification code that appears and paste it in the command line.
-
Run the following command to specify the project that contains the resource that you want to protect with IAP.
gcloud config set project PROJECT_ID
- Follow the instructions in Creating OAuth clients for IAP. to configure the OAuth consent screen and create the OAuth client.
- Save the OAuth client ID and secret.
-
To enable IAP, run either the globally or regionally scoped command.
Global scope Regional scopegcloud 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
After you enable IAP, you can use the gcloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
API
Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
Save the OAuth client ID and secret.
Run the following command to prepare a
settings.jsonfile.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret": "CLIENT_SECRET" } } EOFRun the following command to enable IAP.
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"
After you enable IAP, you can use the gcloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.
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:
Sehen Sie sich auf der Seite „IAP“ auf dem Tab Anwendungen die Anwendungen an, die von IAP verwaltet werden.
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.