IAP für Cloud Run aktivieren

Sie können Identity-Aware Proxy für Ihre Cloud Run-Dienste mit einer der folgenden Methoden aktivieren:

  1. Empfohlen: Aktivieren Sie IAP direkt für einen Cloud Run-Dienst. Das hat die folgenden Vorteile:

    • Schützt den run.app-Endpunkt direkt, sodass Sie keine Load-Balancer-Ressourcen bereitstellen müssen.

    • Einfachere Einrichtung und keine zusätzlichen Load-Balancer-Kosten.

    • Wenn Sie einen Load Balancer vor Cloud Run platzieren, ist der Endpunkt des Load Balancers ebenfalls geschützt.

  2. IAP für den Backend-Dienst aktivieren, der den Cloud Run-Diensten vorgeschaltet ist: Wenn Sie Cloud Run in mehreren Regionen ausführen, die mit demselben globalen Backend-Dienst des Load Balancers verbunden sind, und eine zentrale Zugriffsverwaltung benötigen, folgen Sie der Anleitung auf dieser Seite. Andernfalls empfehlen wir, IAP direkt für den Cloud Run-Dienst zu aktivieren.

    Bekannte Einschränkungen

    • IAP kann nicht sowohl für Cloud Run-Dienste als auch für den Load Balancer verwendet werden. Wenn Sie IAP für einen Load Balancer aktivieren, sichert IAP nur den Traffic über den Load Balancer und nicht den Traffic, der den Cloud Run-Dienst über seine run.app-URL erreichen könnte. Informationen dazu, wie Sie nur IAP-autorisierten Traffic zulassen, finden Sie unter Cloud Run so konfigurieren, dass der Zugriff eingeschränkt wird.

    • IAP authentifiziert sich bei Cloud Run mit dem Header X-Serverless-Authorization. Cloud Run übergibt diesen Header an Ihren Dienst, nachdem die Signatur entfernt wurde. Wenn Ihr Dienst die Anfrage an einen anderen Cloud Run-Dienst weiterleiten soll, der eine IAM-Authentifizierung erfordert, aktualisieren Sie Ihren Dienst, um diesen Header zuerst zu entfernen.

    • IAP ist nicht mit Cloud CDN kompatibel.

    • IAP erhöht die Latenz. Aktivieren Sie IAP nur für Dienste, die nicht latenzempfindlich sind.

    Hinweis

    Wir empfehlen, IAP direkt in Cloud Run zu aktivieren.

    Wenn Sie IAP für Cloud Run-Ressourcen im Load Balancer und nicht direkt in Cloud Run aktivieren möchten, benötigen Sie Folgendes:

    IAP über einen Backend-Dienst oder Load Balancer aktivieren

    Hinweis: Wir empfehlen, IAP direkt in Cloud Run zu aktivieren, wie in der Cloud Run-Dokumentation beschrieben.

    So aktivieren Sie IAP für einen Backend-Dienst eines Load Balancers:

    Console

    Wenn Sie den OAuth-Zustimmungsbildschirm Ihres Projekts nicht konfiguriert haben, werden Sie dazu aufgefordert. Informationen zum Konfigurieren des OAuth-Zustimmungsbildschirms finden Sie unter OAuth-Zustimmungsbildschirm einrichten.

    IAP-Zugriff einrichten

    1. Rufen Sie die Seite Identity-Aware Proxy auf.
    2. Wählen Sie das Projekt aus, das Sie mit IAP sichern möchten.
    3. Aktivieren Sie unter ANWENDUNGEN das Kästchen neben dem Backend-Dienst des Load Balancers, dem Sie Mitglieder hinzufügen möchten.
    4. Klicken Sie auf der rechten Seite auf Hauptkonto hinzufügen.
    5. Geben Sie im Dialogfeld Hauptkonto hinzufügen die Konten von Gruppen oder Einzelpersonen ein, die die Rolle Nutzer von IAP-gesicherten Web-Apps für das Projekt haben sollen. 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 Workspace-Domain.
      • Google Group: admins@googlegroups.com
      • Dienstkonto: server@example.
      • Google Workspace-Domain: beispiel.de
    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.

    Zugriff für Nutzer außerhalb Ihrer Organisation aktivieren

    Wenn Sie IAP aktivieren, wird standardmäßig ein von Google verwalteter OAuth-Client zur Authentifizierung von Nutzern verwendet. Daher können nur Nutzer innerhalb der Organisation auf die IAP-fähige Anwendung zugreifen.

    Wenn Sie Nutzern außerhalb Ihrer Organisation oder ohne Organisation Zugriff gewähren möchten, aktualisieren Sie die OAuth-Clientkonfiguration so, dass ein benutzerdefinierter OAuth-Client verwendet wird, wie unter IAP für externe Anwendungen aktivieren beschrieben.

    IAP aktivieren

    1. Suchen Sie auf der IAP-Seite unter ANWENDUNGEN den Backend-Dienst des Load Balancers, für den Sie den Zugriff einschränken möchten. Klicken Sie auf den Ein/Aus-Button für IAP, um IAP für eine Ressource zu aktivieren. So aktivieren Sie IAP:
      • Mindestens ein Protokoll in der Load-Balancer-Frontend-Konfiguration muss HTTPS sein. Load Balancer einrichten
      • Sie benötigen die Berechtigungen compute.backendServices.update, clientauthconfig.clients.create und clientauthconfig.clients.getWithSecret. Diese Berechtigungen werden durch Rollen wie die Rolle „Project Editor“ gewährt. Weitere Informationen finden Sie unter Zugriff auf IAP-gesicherte Ressourcen verwalten.
    2. Klicken Sie im Fenster IAP aktivieren auf Aktivieren, um zu bestätigen, dass IAP Ihre Ressource sichern soll. Nachdem Sie IAP aktiviert haben, sind für alle Verbindungen zu Ihrem Load Balancer Anmeldedaten erforderlich. Nur Konten mit der Rolle Nutzer von IAP-gesicherten Web-Apps im Projekt erhalten Zugriff.
    3. Folgen Sie der Anleitung unter Zugriffssteuerung mit IAM, um IAP zu autorisieren, Traffic an den Cloud Run-Backend-Dienst zu senden.

      • Hauptkonto: service-[PROJECT-NUMBER]@gcp-sa-iap.
      • Rolle: Cloud Run-Aufrufer

      Das IAP-Dienstkonto wird erstellt, wenn IAP aktiviert ist. Wenn das IAP-Dienstkonto nicht in der Liste der Hauptkonten enthalten ist, können Sie es mit dem folgenden gcloud-Befehl erstellen:

      gcloud services identity create \
          --service=iap.googleapis.com \
          --project=PROJECT_ID
      

    gcloud

    1. Wenn Sie dies im Projekt noch nicht getan haben, erstellen Sie den IAP-Dienst-Agent mit dem folgenden Befehl. Wenn Sie den Dienst-Agenten bereits erstellt haben, wird er durch Ausführen des Befehls nicht dupliziert.
      gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
    2. Gewähren Sie dem im vorherigen Schritt erstellten Dienstkonto die Aufruferberechtigung, indem Sie den folgenden Befehl ausführen.
      gcloud run services add-iam-policy-binding [SERVICE-NAME] \
      --member='serviceAccount:service-[PROJECT-NUMBER]@gcp-sa-iap.'  \
      --role='roles/run.invoker'
      
    3. Aktivieren Sie IAP, indem Sie entweder den globalen oder den regionalen Befehl ausführen, je nachdem, ob Ihr Load-Balancer-Backend-Dienst global oder regional ist. Verwenden Sie die OAuth-Client-ID und den Clientschlüssel aus dem vorherigen Schritt.

      Globaler Bereich

      gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
      

      Regionaler Bereich

      gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
      
      Ersetzen Sie Folgendes:

      • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
      • REGION_NAME: Die Region, in der Sie IAP aktivieren möchten.

        Nachdem Sie IAP aktiviert haben, können Sie mit der Google Cloud CLI eine IAP-Zugriffsrichtlinie mithilfe der IAM-Rolle (Identity and Access Management) roles/iap.httpsResourceAccessor bearbeiten. Weitere Informationen finden Sie unter Zugriff auf IAP-gesicherte Ressourcen verwalten.

    Terraform

    1. Wenn Sie dies noch nicht getan haben, erstellen Sie in einem Projekt den IAP-Dienst-Agent mit dem folgenden Befehl. Wenn Sie den Dienst-Agenten bereits erstellt haben, wird er durch Ausführen des Befehls nicht dupliziert.
      resource "google_project_service" "project" {
        project = "your-project-id"
        service = "iap.googleapis.com"
      }
      
    2. Fügen Sie Folgendes hinzu, um dem IAP-Dienst-Agent die Rolle roles/run.invoker zuzuweisen.

      resource "google_cloud_run_v2_service_iam_member" "iap_invoker" {
        project = google_cloud_run_v2_service.default.project
        location = google_cloud_run_v2_service.default.location
        name = google_cloud_run_v2_service.default.name
        role   = "roles/run.invoker"
        member = "serviceAccount:service-"PROJECT_NUMBER@gcp-sa-iap."
      }
      

      Ersetzen Sie PROJECT_NUMBER durch die Projekt-ID.

    3. Aktivieren Sie IAP, indem Sie je nach Load Balancer entweder den globalen oder den regionalen Befehl ausführen. Verwenden Sie die OAuth-Client-ID und den Clientschlüssel aus dem vorherigen Schritt.

      • Globaler Bereich

        resource "google_compute_backend_service" "default" {
          name                  = "tf-test-backend-service-external"
          protocol              = "HTTPS"
          load_balancing_scheme = "EXTERNAL_MANAGED"
          iap {
            enabled              = true
            oauth2_client_id     = "abc"
            oauth2_client_secret = "xyz"
          }
        }
        

      • Regionaler Bereich

        resource "google_compute_region_backend_service" "default" {
          name                  = "tf-test-backend-service-external"
          protocol              = "HTTPS"
          load_balancing_scheme = "EXTERNAL_MANAGED"
          iap {
            enabled              = true
            oauth2_client_id     = "abc"
            oauth2_client_secret = "xyz"
          }
        }
        

    Cloud Run für die Zugriffsbeschränkung konfigurieren

    Wenn Sie verhindern möchten, dass Traffic über die Standard-URL run.app eines Cloud Run-Dienstes weitergeleitet wird, deaktivieren Sie die Standard-URL. Andernfalls konfigurieren Sie die Einstellungen für eingehenden Traffic so, dass der eingehende Netzwerktraffic für Cloud Run eingeschränkt wird.

    Fehlerbehebung

    Berechtigung für den Zugriff auf Cloud Run verweigert

     Your client does not have permission to get URL from this server 
    • IAP verwendet die Berechtigungen des IAP-Dienstkontos, um Ihren Cloud Run-Dienst aufzurufen. Achten Sie darauf, dass Sie dem folgenden Dienstkonto die Rolle „Cloud Run-Aufrufer“ zugewiesen haben: service-[PROJECT-NUMBER]@gcp-sa-iap..

    • Wenn Sie dem vorherigen Dienstkonto die Rolle „Cloud Run-Invoker“ zugewiesen haben und dieses Problem weiterhin auftritt, stellen Sie Ihren Cloud Run-Dienst noch einmal bereit.

    Fehler des Dienst-Agents verursacht IAM-Fehler beim Festlegen

    Wenn Sie IAP zum ersten Mal in einem neuen Projekt aktivieren, kann der folgende Fehler auftreten:

    Setting IAM permissions failed

    Das liegt daran, dass der Cloud Run-Dienst-Agent fehlgeschlagen ist. Um das Problem zu beheben, aktivieren Sie IAP wieder oder legen Sie die IAM-Richtlinie manuell fest.

    IAP kann nicht über die gcloud CLI eingerichtet werden

     The IAP service account is not provisioned 

    Wenn dieser Fehler angezeigt wird, führen Sie den folgenden Befehl aus:

    gcloud services identity create --service=iap.googleapis.com --project=[PROJECT_ID]

    Das IAP-Dienstkonto benötigt die Berechtigung run.routes.invoke nicht

    Während der Vorabversion von IAP mit Cloud Run hat Cloud Run die Berechtigungsprüfung run.routes.invoke für Aufrufe von IAP, die die Rolle „Cloud Run Invoker“ verwenden, nicht durchgeführt. In der allgemein verfügbaren Version (GA) führt Cloud Run diese Berechtigungsprüfung durch.

    Um funktionsgefährdende Änderungen zu vermeiden, wurden einige Kundenprojekte, die während der Vorabversion von diesem Verhalten abhängig waren, in eine Zulassungsliste aufgenommen, damit die Berechtigung nicht geprüft wird. Wenden Sie sich an den Cloud Run-Support, um solche Projekte aus der Zulassungsliste nur für die Vorabversion zu entfernen.

    Nächste Schritte

    IAP für Cloud Run konfigurieren