IAP für Cloud Run aktivieren

Auf dieser Seite wird beschrieben, wie Sie einen Cloud Run-Dienst mit IAP über einen Backend-Dienst oder Load Balancer schützen. Wenn Sie Cloud Run in mehreren Regionen ausführen, die mit demselben globalen Backend-Dienst des Load Balancers verbunden sind, folgen Sie der Anleitung auf dieser Seite, um IAP einmal für den Backend-Dienst zu konfigurieren.

Wenn Sie Cloud Run in einer einzelnen Region ausführen, empfehlen wir Ihnen, IAP für Cloud Run zu konfigurieren, um IAP über Cloud Run zu aktivieren. So können Sie den Traffic mit nur einem Klick über alle Ingress-Pfade sichern, einschließlich Standard-run.app-URLs und Load Balancern.

Bekannte Einschränkungen

  • Wenn Sie IAP auf einem Load Balancer aktivieren, wird der Traffic nur über den Load Balancer gesichert, nicht aber mit Traffic, der den Cloud Run-Dienst über seine run.app-URL erreichen könnte. Wie Sie nur von IAP autorisierten Traffic zulassen, erfahren Sie unter Cloud Run so konfigurieren, dass der Zugriff eingeschränkt wird.

  • IAP authentifiziert sich mit dem Header X-Serverless-Authorization bei Cloud Run. Cloud Run übergibt diesen Header an Ihren Dienst, nachdem die Signatur entfernt wurde. Wenn Ihr Dienst die Anfrage an einen anderen Cloud Run-Dienst weiterleitet, für den eine IAM-Authentifizierung erforderlich ist, aktualisieren Sie Ihren Dienst, um diese Kopfzeile zuerst zu entfernen.

  • IAP ist nicht mit Cloud CDN kompatibel.

  • In-App-Käufe erhöhen die Latenz. Aktivieren Sie IAP nur für Instanzen, die nicht latenzabhängig sind.

Hinweise

Wenn Sie IAP für Cloud Run-Ressourcen in IAP aktivieren möchten, benötigen Sie Folgendes:

IAP verwendet einen von Google verwalteten OAuth-Client, um Nutzer zu authentifizieren. Nur Nutzer innerhalb der Organisation können auf die IAP-kompatible App zugreifen. Wenn Sie Nutzern außerhalb Ihrer Organisation Zugriff gewähren möchten, lesen Sie den Hilfeartikel IAP für externe Anwendungen aktivieren.

IAP über einen Backend-Dienst oder Load Balancer aktivieren

Folgen Sie der Anleitung unten, um IAP von IAP hinter einem Backend-Dienst oder Load Balancer zu aktivieren.

Der von Google verwaltete OAuth-Client ist nicht verfügbar, wenn Sie IAP über die Google Cloud Console aktivieren.

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.
  2. Wählen Sie das Projekt aus, das Sie mit IAP sichern möchten.
  3. Aktivieren Sie unter APPLICATIONS (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 Hauptkonto hinzufügen.
  5. Geben Sie im Dialogfeld Hauptkonto 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 Workspace-Domain.
    • Google Group: admins@googlegroups.com
    • Dienstkonto: server@beispiel.iam.gserviceaccount.com
    • 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.

IAP aktivieren

  1. Suchen Sie auf der Seite IAP unter APPLICATIONS (ANWEDNUNGEN) nach dem Load Balancer-Backenddienst, für den Sie den Zugriff einschränken möchten. Klicken Sie auf den Umschalter 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. Weitere Informationen dazu finden Sie unter Lastenausgleichsmodul einrichten.
    • Sie benötigen die Berechtigungen compute.backendServices.update, clientauthconfig.clients.create und clientauthconfig.clients.getWithSecret. Diese Berechtigungen erhalten Sie über Rollen wie etwa "Projektbearbeiter". Weitere Informationen finden Sie unter Zugriff auf Ressourcen verwalten, die mit IAP gesichert sind.
  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. Folgen Sie der Anleitung unter Zugriffssteuerung mit IAM, um IAP zu autorisieren, Traffic an den Cloud Run-Backenddienst zu senden.

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

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

    gcloud beta services identity create
        --service=iap.googleapis.com
        --project=PROJECT_ID
    
  1. 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]
  2. 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'
    
  3. 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
    

    Regionaler Geltungsbereich

    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 Identity and Access Management-Rolle roles/iap.httpsResourceAccessor bearbeiten. Weitere Informationen finden Sie unter Zugriff auf Ressourcen verwalten, die mit IAP gesichert sind.

Cloud Run so konfigurieren, dass der Zugriff eingeschränkt wird

Wenn Sie verhindern möchten, dass Traffic über die standardmäßige run.app-URL eines Cloud Run-Dienstes weitergeleitet wird, deaktivieren Sie die Standard-URL. Andernfalls konfigurieren Sie Ihre Ingress-Einstellungen so, dass der Netzwerk-Ingress für Cloud Run eingeschränkt wird.

Fehlerbehebung

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“ (service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com) zugewiesen haben.

  • Wenn Sie dem vorherigen Dienstkonto die Rolle „Cloud Run Invoker“ erteilt haben und das Problem weiterhin auftritt, stellen Sie Ihren Cloud Run-Dienst neu bereit.

Fehler beim Dienst-Agent führt zu Fehler bei der IAM-Festlegung

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 die IAP noch einmal 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 auftritt, führen Sie den folgenden Befehl aus:

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

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

Während der IAP-mit-Cloud Run-Vorabversion führte Cloud Run keine run.routes.invoke-Berechtigungsprüfung für Aufrufe von IAP durch, bei denen die Rolle „Cloud Run Invoker“ verwendet wurde. Seit der GA-Version (General Availability, allgemeine Verfügbarkeit) führt Cloud Run diese Berechtigungsprüfung durch.

Um fehlerhafte Änderungen zu vermeiden, wurden einige Kundenprojekte, die während der Vorabversion auf dieses Verhalten angewiesen waren, auf eine Zulassungsliste gesetzt, damit die Berechtigung nicht geprüft wurde. Wenden Sie sich an den Cloud Run-Support, um solche Projekte von der Zulassungsliste für die Vorabversion zu entfernen.

Nächste Schritte

Eine Terraform-Beispieldatei für die Einrichtung von IAP für Cloud Run mit Terraform finden Sie in diesem Artikel.