OAuth-Konfiguration anpassen, um IAP zu aktivieren

In diesem Dokument wird beschrieben, wann und wie Sie eine OAuth-Konfiguration für Identity-Aware Proxy (IAP) anpassen.

IAP verwendet einen von Google verwalteten OAuth-Client, um Nutzer zu authentifizieren.

Der von Google verwaltete OAuth-Client schränkt den Zugriff auf Nutzer innerhalb derselben Organisation ein, wenn sie über einen Browser auf IAP-kompatible Apps zugreifen.

Wann eine benutzerdefinierte OAuth-Konfiguration verwendet werden sollte

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

  • Damit Nutzer außerhalb der Organisation auf IAP-kompatible Apps zugreifen können.
  • Damit Sie während der Authentifizierung Ihre eigenen Markeninformationen anzeigen können.
  • Sie können den programmatischen Zugriff auf Ihre Anwendung aktivieren.

Wenn Sie Ihre OAuth-Konfiguration anpassen, müssen Sie auch den OAuth-Zustimmungsbildschirm konfigurieren. Dazu müssen die Branding-Informationen für Ihre App den Google-Überprüfungsprozess durchlaufen. Weitere Informationen zum Überprüfungsprozess finden Sie unter OAuth-Zustimmungsbildschirm einrichten.

Sie sind dafür verantwortlich, die Anmeldedaten für einen benutzerdefinierten OAuth-Client zu erstellen und zu verwalten. Dazu gehört auch, den Clientschlüssel sicher zu speichern und bei Bedarf für autorisierte Nutzer freizugeben.

Vergleich zwischen von Google verwaltetem OAuth-Client und benutzerdefiniertem OAuth-Client

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 JWT für Dienstkonten konfiguriert wurde.

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 Vom Kunden verwaltet
Anwendungszugriff Nur Browserfluss Browserfluss und programmatischer Zugriff
aktivieren.

IAP mit einer benutzerdefinierten OAuth-Clientkonfiguration aktivieren

In den folgenden Abschnitten wird beschrieben, wie Sie IAP mit einer benutzerdefinierten OAuth-Clientkonfiguration für verschiedene Ressourcen aktivieren.

App Engine

Console

Dynamische Include-Datei

Wenn Sie den OAuth-Zustimmungsbildschirm Ihres Projekts noch nicht konfiguriert haben, werden Sie dazu aufgefordert. Eine Anleitung dazu finden Sie unter OAuth-Zustimmungsbildschirm einrichten.

IAP-Zugriff einrichten

  1. Rufen Sie die Seite Identity-Aware Proxy auf.
    Zur Seite "Identity-Aware Proxy"
  2. Wählen Sie das Projekt aus, das Sie mit IAP sichern möchten.
  3. Klicken Sie das Kästchen neben der Ressource an, für die Sie Zugriff gewähren möchten.
  4. Klicken Sie im rechten Bereich auf Hauptkonto hinzufügen.
  5. Fügen Sie im daraufhin angezeigten Dialogfeld Hauptkonten hinzufügen die E-Mail-Adressen von Nutzergruppen oder einzelnen Nutzern hinzu, denen Sie für das Projekt die Rolle Nutzer von IAP-gesicherten Web-Apps zuweisen möchten.

    Folgende Hauptkonten können diese Rolle haben:

    • Google-Konto: nutzer@gmail.com
    • Google Group: admins@googlegroups.com
    • Dienstkonto: server@beispiel.gserviceaccount.com
    • Google Workspace-Domain: beispiel.de

    Fügen Sie unbedingt ein Google-Konto hinzu, auf das Sie zugreifen können.

  6. Wählen Sie in der Drop-down-Liste Rollen den Eintrag Cloud IAP > Nutzer von IAP-gesicherten Web-Apps aus.
  7. Klicken Sie auf Speichern.

IAP aktivieren

  1. Suchen Sie auf der Seite Identity-Aware Proxy unter ANwendungen nach der Anwendung, für die der Zugriff beschränkt werden soll.
  2. Klicken Sie im angezeigten Fenster IAP aktivieren auf Aktivieren, um zu bestätigen, dass die Ressource durch IAP gesichert werden soll. Nachdem Sie IAP aktiviert haben, sind für alle Verbindungen zu Ihrem Load-Balancer Anmeldedaten erforderlich. Zugriff erhalten nur Konten mit der Rolle Nutzer von IAP-gesicherten Web-Apps für das Projekt.

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.

  1. To authenticate, use the Google Cloud CLI and run the following command.
    gcloud auth login
  2. To sign in, follow the URL that appears.
  3. After you sign in, copy the verification code that appears and paste it in the command line.
  4. 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
  5. Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.
  6. Save the OAuth client ID and secret.
  7. 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

  1. Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.

  2. Save the OAuth client ID and secret.

  3. Run the following command to prepare a settings.json file.

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

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

Compute Engine

Console

If you haven't configured your project's OAuth consent screen, you'll be prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen.

If you are running GKE clusters version 1.24 or later, you can configure IAP and GKE by using the Kubernetes Gateway API. To do so, complete the following steps and then follow the instructions in Configure IAP. Do not configure BackendConfig.

Setting up IAP access

  1. Go to the Identity-Aware Proxy page.
    Go to the Identity-Aware Proxy page
  2. Select the project you want to secure with IAP.
  3. Select the checkbox next to the resource you want to grant access to.

    If you don't see a resource, ensure that the resource is created and that the BackendConfig Compute Engine ingress controller is synced.

    To verify that the backend service is available, run the following gcloud command:

    gcloud compute backend-services list
  4. On the right side panel, click Add principal.
  5. In the Add principals dialog that appears, enter the email addresses of groups or individuals who should have the IAP-secured Web App User role for the project.

    The following kinds of principals can have this role:

    • Google Account: user@gmail.com
    • Google Group: admins@googlegroups.com
    • Service account: server@example.gserviceaccount.com
    • Google Workspace domain: example.com

    Make sure to add a Google Account that you have access to.

  6. Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
  7. Click Save.

Turning on IAP

  1. On the Identity-Aware Proxy page, under APPLICATIONS, find the load balancer that serves the instance group you want to restrict access to. To turn on IAP for a resource,
    To enable IAP:
    • At least one protocol in the load balancer frontend configuration must be HTTPS. Learn about setting up a load balancer.
    • You need the compute.backendServices.update, clientauthconfig.clients.create, and clientauthconfig.clients.getWithSecret permissions. These permissions are granted by roles, such as the Project Editor role. To learn more, see Managing access to IAP-secured resources.
  2. In the Turn on IAP window that appears, click Turn On to confirm that you want IAP to secure your resource. After you turn on IAP, it requires login credentials for all connections to your load balancer. Only accounts with the IAP-Secured Web App User role on the project will be given access.

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.

  1. To authenticate, use the Google Cloud CLI and run the following command.
    gcloud auth login
  2. To sign in, follow the URL that appears.
  3. After you sign in, copy the verification code that appears and paste it in the command line.
  4. 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
  5. Follow the instructions in Creating OAuth clients for IAP. to configure the OAuth consent screen and create the OAuth client.
  6. Save the OAuth client ID and secret.
  7. To enable IAP, run either the globally or regionally scoped command.

    Global scope
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    Regional scope
    gcloud 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

  1. Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.

  2. Save the OAuth client ID and secret.

  3. Run the following command to prepare a settings.json file.

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

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

Cloud Run

Console

Wenn Sie den OAuth-Zustimmungsbildschirm Ihres Projekts noch nicht konfiguriert haben, werden Sie dazu aufgefordert. Weitere Informationen finden Sie unter OAuth-Zustimmungsbildschirm einrichten.

IAP-Zugriff einrichten

  1. Rufen Sie die Seite Identity-Aware Proxy auf.
    Identity-Aware Proxy aufrufen
  2. Wählen Sie das Projekt aus, das Sie mit IAP sichern möchten.
  3. Aktivieren Sie unter Anwendungen das Kästchen neben dem Load Balancer-Back-End-Dienst, dem Sie Mitglieder hinzufügen möchten.
  4. Klicken Sie auf der rechten Seite auf Mitglied hinzufügen.
  5. Geben Sie im Dialogfeld Mitglieder hinzufügen die Konten von Gruppen oder Einzelpersonen ein, denen Sie für das Projekt die Rolle Nutzer von IAP-gesicherten Web-Apps zuweisen möchten. Folgende Kontoarten sind als Mitglieder zulässig:

    • Google-Konto: nutzer@gmail.com. Dies kann auch ein Google Workspace-Konto sein, z. B. nutzer@google.com oder eine andere Google Workspace-Domain.
    • Google Group: admins@googlegroups.com
    • Dienstkonto: server@beispiel.gserviceaccount.com
    • Google Workspace-Domain: beispiel.de
  6. Wählen Sie in der Liste Rollen die Option Cloud IAP > Nutzer von IAP-gesicherten Web-Apps aus.

  7. Klicken Sie auf Speichern.

IAP aktivieren

  1. Suchen Sie auf der IAP-Seite unter Anwendungen nach dem Load Balancer-Backenddienst, für den Sie den Zugriff einschränken möchten. Klicken Sie auf den Schalter IAP, um IAP für eine Ressource zu aktivieren.
  2. Klicken Sie im angezeigten Fenster IAP aktivieren auf Aktivieren, um zu bestätigen, dass die Ressource durch IAP gesichert werden soll. Nachdem Sie IAP aktiviert haben, sind für alle Verbindungen zu Ihrem Load Balancer Anmeldedaten erforderlich. Zugriff erhalten nur Konten mit der Rolle Nutzer von IAP-gesicherten Web-Apps für das Projekt.
  3. Wenn Sie IAP autorisieren möchten, Traffic an den Cloud Run-Backenddienst zu senden, folgen Sie der Anleitung unter Hauptkonten einem Dienst hinzufügen, um das folgende Prinzip und die folgende Rolle hinzuzufügen.

    • Leiter: service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
    • Rolle: Cloud Run Invoker

gcloud

  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. Falls Sie noch kein Dienstkonto haben, erstellen Sie eines mit dem folgenden Befehl. Wenn Sie bereits ein Dienstkonto erstellt haben, werden durch Ausführen des Befehls keine doppelten Dienstkonten erstellt.
    gcloud beta services identity create \
        --service=iap.googleapis.com --project=PROJECT_ID
    
  4. Gewähren Sie dem Dienstkonto, das Sie im vorherigen Schritt erstellt haben, die Berechtigung „Aufrufer“. Führen Sie dazu den folgenden Befehl aus.
    gcloud run services add-iam-policy-binding SERVICE-NAME \
        --member='serviceAccount:service-PROJECT-NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \
        --role='roles/run.invoker'
    
  5. Aktivieren Sie IAP, indem Sie den Befehl entweder global oder regional ausführen, je nachdem, ob der Load Balancer-Backenddienst global oder regional ist. Verwenden Sie die OAuth-Client-ID und das Secret aus dem vorherigen Schritt.

    Globaler Geltungsbereich

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

    Regionaler Geltungsbereich

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    
    Ersetzen Sie Folgendes:

    • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
    • CLIENT_ID: die OAuth-Client-ID aus dem vorherigen Schritt
    • CLIENT_SECRET: den OAuth-Clientschlüssel aus dem vorherigen Schritt
    • REGION_NAME: die Region, in der Sie IAP aktivieren möchten.

Nachdem Sie IAP aktiviert haben, können Sie mit der Google Cloud CLI die IAP-Zugriffsrichtlinie mithilfe der Identity and Access Management-Rolle roles/iap.httpsResourceAccessor ändern. Weitere Informationen finden Sie unter Rollen und Berechtigungen verwalten.

Google Kubernetes Engine

Console

If you haven't configured your project's OAuth consent screen, you'll be prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen.

If you are running GKE clusters version 1.24 or later, you can configure IAP and GKE by using the Kubernetes Gateway API. To do so, complete the following steps and then follow the instructions in Configure IAP. Do not configure BackendConfig.

Setting up IAP access

  1. Go to the Identity-Aware Proxy page.
    Go to the Identity-Aware Proxy page
  2. Select the project you want to secure with IAP.
  3. Select the checkbox next to the resource you want to grant access to.

    If you don't see a resource, ensure that the resource is created and that the BackendConfig Compute Engine ingress controller is synced.

    To verify that the backend service is available, run the following gcloud command:

    gcloud compute backend-services list
  4. On the right side panel, click Add principal.
  5. In the Add principals dialog that appears, enter the email addresses of groups or individuals who should have the IAP-secured Web App User role for the project.

    The following kinds of principals can have this role:

    • Google Account: user@gmail.com
    • Google Group: admins@googlegroups.com
    • Service account: server@example.gserviceaccount.com
    • Google Workspace domain: example.com

    Make sure to add a Google Account that you have access to.

  6. Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
  7. Click Save.

Turning on IAP

  1. On the Identity-Aware Proxy page, under APPLICATIONS, find the load balancer that serves the instance group you want to restrict access to. To turn on IAP for a resource,
    To enable IAP:
    • At least one protocol in the load balancer frontend configuration must be HTTPS. Learn about setting up a load balancer.
    • You need the compute.backendServices.update, clientauthconfig.clients.create, and clientauthconfig.clients.getWithSecret permissions. These permissions are granted by roles, such as the Project Editor role. To learn more, see Managing access to IAP-secured resources.
  2. In the Turn on IAP window that appears, click Turn On to confirm that you want IAP to secure your resource. After you turn on IAP, it requires login credentials for all connections to your load balancer. Only accounts with the IAP-Secured Web App User role on the project will be given access.

GKE

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.

  1. Follow the instructions in Creating OAuth clients for IAP to configure the OAuth consent screen and create the OAuth client.

  2. Create a Kubernetes Secret to wrap the OAuth client.

    kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \
      --from-literal=client_secret=CLIENT_SECRET
    
    Replace the following:

    • MY_SECRET: The name of the secret to create
    • CLIENT_ID: The OAuth client ID
    • CLIENT_SECRET: The OAuth client secret

    You should receive confirmation, like the following output, that the Secret was successfully created:

    secret "MY_SECRET" created
    

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

  4. Enable 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 correct client_id and client_secret keys.