Auf dieser Seite wird beschrieben, wie Sie Identity-Aware Proxy (IAP) über Cloud Run aktivieren und den Traffic für einen Cloud Run-Dienst schützen, indem Sie ihn zur Authentifizierung an IAP weiterleiten. Wenn Sie IAP über Cloud Run aktivieren, können Sie Traffic mit einem einzigen Klick von allen Ingress-Pfaden weiterleiten, einschließlich der Standard-URLs run.app
und Load-Balancern.
Bekannte Einschränkungen
- Das Projekt muss Teil einer Organisation sein.
- Identitäten müssen aus derselben Organisation stammen.
- Sie können IAP nicht sowohl für den Load-Balancer als auch für den Cloud Run-Dienst konfigurieren.
- Einige Integrationen, z. B. Pub/Sub, funktionieren möglicherweise nicht mehr, wenn IAP aktiviert ist.
Hinweise
IAP über Cloud Run aktivieren
Sie können IAP über Cloud Run aktivieren.
Wenn Sie sowohl IAP als auch IAM für denselben Cloud Run-Dienst verwenden, beachten Sie die folgenden Bedingungen:
Sowohl die IAP- als auch die IAM-Prüfungen werden durchgeführt.
Die IAP-Prüfung erfolgt zuerst. Anfragen werden basierend auf der IAP-Konfiguration akzeptiert oder blockiert.
Wenn die Anfrage die IAP-Prüfung besteht, verwendet IAP das eigene Dienstkonto, um sich für die IAM-Prüfung von Cloud Run zu authentifizieren.
Da die IAP-Prüfung zuerst erfolgt, werden einige Dienste wie Pub/Sub möglicherweise nicht richtig authentifiziert.
Sie können IAP über die Google Cloud Console, die Google Cloud CLI oder Terraform für Cloud Run aktivieren.
Console
So aktivieren Sie IAP über Cloud Run:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:
Wenn Sie einen neuen Dienst konfigurieren, für den Sie die Bereitstellung vornehmen, wählen Sie Container bereitstellen > Dienst aus. Wenn Sie einen vorhandenen Dienst konfigurieren und bereitstellen, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.
Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus und wählen Sie dann Erweiterte Authentifizierung mit Identity-Aware Proxy (IAP) aus.
Wenn Sie einen vorhandenen Dienst konfigurieren und bereitstellen, klicken Sie auf den Dienst und wählen Sie dann Erweiterte Authentifizierung mit Identity-Aware Proxy (IAP) aus.
Klicken Sie auf Richtlinie bearbeiten, um eine Richtlinie für den kontextsensitiven Zugriff zu erstellen:
Fügen Sie ein oder mehrere Hauptkonten und optional die Zugriffsebene hinzu, die für jedes Hauptkonto für den Anwendungszugriff erforderlich ist.
Klicken Sie auf Speichern.
Klicken Sie auf Speichern.
gcloud
Wenn Sie IAP direkt über Cloud Run aktivieren möchten, fügen Sie beim Bereitstellen Ihrer App das Flag --iap
hinzu:
Stellen Sie Ihren Cloud Run-Dienst mit einem der folgenden Befehle bereit:
Für einen neuen Dienst:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-allow-unauthenticated \ --iap
Für einen vorhandenen Dienst:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap
Ersetzen Sie:
- SERVICE_NAME durch den Namen Ihres Cloud Run-Dienstes.
- REGION durch den Namen Ihrer Cloud Run-Region.
Beispiel:
europe-west1
. - IMAGE_URL durch einen Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die FormLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihr Dienst mit aktiviertem IAP konfiguriert ist:
gcloud beta run services describe SERVICE_NAME
Die Ausgabe sollte den folgenden String enthalten:
Iap Enabled: true
Sie leiten jetzt den gesamten Traffic, der für den konfigurierten Cloud Run-Dienst bestimmt ist, zur Authentifizierung an IAP weiter, bevor er an den Container übergeben wird.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie die IAM-Richtlinie hinzu, um dem IAP-Dienst-Agent die Rolle Cloud Run Invoker (roles/run.invoker
) zuzuweisen. Weitere Informationen finden Sie unter Zugriff auf Ressourcen verwalten, die mit IAP gesichert sind.
Fügen Sie der Ressource
google_cloud_run_v2_service_iam_policy
in Ihrer Terraform-Konfiguration Folgendes hinzu.data "google_cloud_run_v2_service_iam_policy" "policy" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name }
Fügen Sie der Ressource
google_cloud_run_v2_service
in Ihrer Terraform-Konfiguration Folgendes hinzu.resource "google_cloud_run_v2_service" "default" { provider = google-beta name = "cloudrun-iap-service" location = "europe-west1" ingress = "INGRESS_TRAFFIC_ALL" launch_stage = "BETA" iap_enabled = true template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } }
IAP über Cloud Run deaktivieren
Sie können IAP über die Google Cloud Console oder die Google Cloud CLI deaktivieren.
Console
So deaktivieren Sie IAP über Cloud Run:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:
Klicken Sie auf den vorhandenen Dienst, den Sie ändern möchten.
Klicken Sie auf Sicherheit und entfernen Sie dann das Häkchen bei Erweiterte Authentifizierung mit Identity-Aware Proxy (IAP).
Klicken Sie auf Speichern.
gcloud
Wenn Sie IAP direkt über Cloud Run deaktivieren möchten, fügen Sie beim Bereitstellen Ihrer App das Flag --no-iap
hinzu:
Stellen Sie Ihren Cloud Run-Dienst mit einem der folgenden Befehle bereit:
Für einen neuen Dienst:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-iap
Für einen vorhandenen Dienst:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --no-iap
Ersetzen Sie:
- SERVICE_NAME durch den Namen Ihres Cloud Run-Dienstes.
- REGION durch den Namen Ihrer Cloud Run-Region.
- IMAGE_URL durch einen Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/hello:latest
. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die FormLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihr Dienst nicht mehr mit aktivierter IAP konfiguriert ist:
gcloud beta run services describe SERVICE_NAME
Die Ausgabe sollte den folgenden String nicht mehr enthalten:
Iap Enabled: true
Sie leiten nicht mehr den gesamten Traffic, der für den konfigurierten Cloud Run-Dienst bestimmt ist, zur Authentifizierung an IAP weiter, bevor er an den Container übergeben wird.
Nutzer- oder Gruppenzugriff verwalten
Standardmäßig verwendet IAP für Cloud Run organisationsinterne Identitäten mit Google-Konten. Sie können den Zugriff auf einen Cloud Run-Dienst über die Google Cloud Console oder die Google Cloud CLI hinzufügen oder entfernen.
Console
So fügst du Zugriffsrechte hinzu oder entfernst sie:
Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:
Klicken Sie auf den vorhandenen Dienst, den Sie ändern möchten, und dann auf Sicherheit.
Klicken Sie unter IAP auf Richtlinie bearbeiten.
Geben Sie das Hauptkonto und optional die Zugriffsebene(n) ein, die Sie hinzufügen möchten.
Wenn Sie den Zugriff eines vorhandenen Hauptkontos entfernen möchten, klicken Sie neben Zugriffsebenen auf das Symbol Richtlinie löschen.
Klicken Sie auf Speichern.
gcloud
Führen Sie einen der folgenden Befehle aus, um einzelnen Nutzern oder Gruppen in Ihrer Organisation den Zugriff auf einen Cloud Run-Dienst zu gewähren oder zu entziehen:
So fügst du Zugriffsrechte hinzu:
gcloud beta iap web add-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
So entfernen Sie den Zugriff:
gcloud beta iap web remove-iam-policy-binding \ --member=user:USER_EMAIL \ --role=roles/iap.httpsResourceAccessor \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
So rufen Sie den Zugriff auf:
gcloud beta iap web get-iam-policy \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Ersetzen Sie:
- USER_EMAIL mit der E-Mail-Adresse des Nutzers.
- REGION durch den Namen Ihrer Cloud Run-Region.
- SERVICE_NAME durch den Namen Ihres Cloud Run-Dienstes.
Fehlerbehebung
Fehler beim Dienst-Agent führt zu IAM-Fehler
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.
Nächste Schritte
- Eine Anleitung zum Aktivieren von IAP mit IAP über einen Backend-Dienst oder Load-Balancer finden Sie unter IAP für Cloud Run aktivieren.
- Informationen zu Problemen beim Aktivieren von IAP für Cloud Run finden Sie unter Fehlerbehebung.
- Externe Identitäten aktivieren
- OAuth-Konfiguration aktivieren
- Zugriff auf mit IAP gesicherte Ressourcen verwalten
- Aktivierung von IAP mit Organisationsrichtlinien steuern