Identity-Aware Proxy für Cloud Run konfigurieren

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:

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. 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.

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

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

  5. 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.

  6. 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:

  1. 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 Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  2. 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.

  1. 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
    }
    
  2. 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:

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. Klicken Sie auf den vorhandenen Dienst, den Sie ändern möchten.

  3. Klicken Sie auf Sicherheit und entfernen Sie dann das Häkchen bei Erweiterte Authentifizierung mit Identity-Aware Proxy (IAP).

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

  1. 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 Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  2. 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:

  1. Rufen Sie in der Google Cloud Console die Seite „Cloud Run“ auf:

    Zu Cloud Run

  2. Klicken Sie auf den vorhandenen Dienst, den Sie ändern möchten, und dann auf Sicherheit.

  3. Klicken Sie unter IAP auf Richtlinie bearbeiten.

  4. Geben Sie das Hauptkonto und optional die Zugriffsebene(n) ein, die Sie hinzufügen möchten.

  5. Wenn Sie den Zugriff eines vorhandenen Hauptkontos entfernen möchten, klicken Sie neben Zugriffsebenen auf das Symbol Richtlinie löschen.

  6. 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