IAP für Cloud Run aktivieren

Auf dieser Seite wird erläutert, wie Sie einen Cloud Run-Dienst mit Identity-Aware Proxy (IAP) sichern.

Bekannte Einschränkungen

  • Bei Cloud Run-Diensten mit aktiviertem HTTP/2 hinter einem klassischen Application Load Balancer, die mit IAP gesichert sind, tritt auf Anfrage eine Endlosschleife auf. Google empfiehlt die Verwendung eines globalen externen Application Load Balancers, wenn Sie einen HTTP/2-fähigen Dienst verwenden, der mit IAP gesichert ist. Weitere Informationen finden Sie unter Load-Balancer-Modi.

  • IAP sichert nicht die Domain, die Cloud Run für einen bereitgestellten Dienst bereitstellt. Verwenden Sie die IAM-Authentifizierung für den Cloud Run-Dienst, damit nur IAP die Berechtigung für den Zugriff auf den Dienst hat. Damit IAP auf den Cloud Run-Dienst zugreifen kann, gewähren Sie der IAP-Dienstkontorolle service-[PROJECT_NUMBER]@gcp-sa-iap.iam.gserviceaccount.com die Rolle „Cloud Run Invoker“. IAP generiert ein ID-Token und verwendet dieses Token zur Authentifizierung bei Cloud Run mit dem Header X-Serverless-Authorization.

  • IAP authentifiziert sich mit dem Header X-Serverless-Authorization bei Cloud Run. Cloud Run übergibt diesen Header nach dem Entfernen der Signatur an Ihren Dienst. Wenn Ihr Dienst darauf ausgelegt ist, die Anfrage an einen anderen Cloud Run-Dienst weiterzuleiten, der eine IAM-Authentifizierung erfordert, aktualisieren Sie Ihren Dienst, um diesen Header zuerst zu entfernen.

  • IAP ist mit Cloud CDN nicht kompatibel.

Hinweise

Zum Aktivieren von IAP für Cloud Run 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-fähige Anwendung zugreifen. Wenn Sie Nutzern außerhalb Ihrer Organisation Zugriff gewähren möchten, finden Sie weitere Informationen unter IAP für externe Anwendungen aktivieren.

IAP aktivieren

Console

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

Wenn Sie den OAuth-Zustimmungsbildschirm Ihres Projekts noch 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. Klicken Sie unter ANWENDUNGEN das Kästchen neben dem Back-End-Dienst des Load-Balancers an, 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 – Das 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.gserviceaccount.com
    • Google Workspace-Domain: beispiel.de
  6. Wählen Sie in der Drop-down-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 Seite „IAP“ unter ANWENDUNGEN nach dem Back-End-Dienst des Load-Balancers, auf den Sie den Zugriff einschränken möchten. Klicken Sie auf die Ein/Aus-Schaltfläche IAP, um IAP für eine Ressource zu aktivieren. So aktivieren Sie IAP:
    • Mindestens ein Protokoll in der Front-End-Konfiguration des Load-Balancers 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 mit IAP gesicherte Ressourcen verwalten.
  2. Klicken Sie im angezeigten Fenster IAP aktivieren auf Aktivieren, um zu bestätigen, dass Ihre 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-Back-End-Dienst zu senden.

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

gcloud

  1. Falls noch nicht geschehen, erstellen Sie mit dem folgenden Befehl ein Dienstkonto. 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 im vorherigen Schritt erstellt wurde, die Aufrufberechtigung, indem Sie den folgenden Befehl ausführen.
    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 entweder den globalen oder regionalen Befehl ausführen, je nachdem, ob der Back-End-Dienst Ihres Load-Balancers global oder regional ist. Verwende die OAuth-Client-ID und den geheimen Clientschlüssel 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 über die Google Cloud CLI eine IAP-Zugriffsrichtlinie mit der Identity and Access Management-Rolle roles/iap.httpsResourceAccessor bearbeiten. Weitere Informationen finden Sie unter Rollen und Berechtigungen verwalten.

Cloud Run zum Einschränken des Zugriffs konfigurieren

Sie können Ihren Cloud Run-Dienst so konfigurieren, dass nur Zugriff für interne Clients und den externen Load-Balancer zugelassen wird, der alle direkten Anfragen aus dem öffentlichen Internet blockiert.

Führen Sie die Schritte unter Eingehenden Traffic bei Cloud Run einschränken aus, um die Einstellung für eingehenden Traffic Ihres Cloud Run-Dienstes auf Internes und Cloud Load Balancing zu konfigurieren.

Fehlerbehebung

 The IAP service account is not provisioned 
Wenn dieser Fehler angezeigt wird, versuchen Sie, IAP in einem Cloud Run-Dienst über die gcloud CLI zu aktivieren. Das Einrichten von IAP über die gcloud CLI umfasst den zusätzlichen Schritt zum Bereitstellen eines IAP-Dienstkontos in Ihrem Projekt mit dem folgenden Befehl: gcloud beta services identity create --service=iap.googleapis.com --project=[PROJECT_ID]
 Your client does not have permission to get URL from this server 
  • IAP verwendet die IAP-Dienstkontoberechtigungen, um den Cloud Run-Dienst aufzurufen. Achten Sie darauf, dass Sie dem folgenden Dienstkonto die Rolle „Cloud Run Invoker“ gewährt haben: service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com .

  • Wenn Sie dem vorherigen Dienstkonto die Rolle „Cloud Run Invoker“ gewährt haben und dieses Problem weiterhin besteht, stellen Sie den Cloud Run-Dienst noch einmal bereit.

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

Während der IAP mit Cloud Run-Vorschau hat Cloud Run die Berechtigungsprüfung run.routes.invoke für Aufrufe von IAP mit der Rolle "Cloud Run Invoker" nicht ausgeführt. Bei allgemeiner Verfügbarkeit (General Availability, GA) führt Cloud Run diese Berechtigungsprüfung durch.

Um funktionsgefährdende Änderungen zu vermeiden, wurden einige Kundenprojekte, die in der Vorabversion von diesem Verhalten abhängig waren, auf eine Zulassungsliste gesetzt, sodass die Berechtigung nicht geprüft wurde. Wenden Sie sich an den Cloud Run-Support, um solche Projekte von der Zulassungsliste für die Vorschau zu entfernen.

Nächste Schritte

Zum Einrichten von IAP für Cloud Run mit Terraform können Sie sich ein Terraform-Codebeispiel ansehen.