IAP für Cloud Run konfigurieren

Auf dieser Seite wird beschrieben, wie Sie IAP direkt für einen Cloud Run-Dienst aktivieren und Traffic, der für einen Cloud Run-Dienst bestimmt ist, durch Weiterleitung an IAP zur Authentifizierung schützen. Wenn Sie IAP direkt in Cloud Run aktivieren, können Sie den Traffic von allen eingehenden Pfaden, einschließlich der Standard-run.app-URLs und Load Balancer, mit einem einzigen Klick sichern.

Wenn Sie IAP in Cloud Run einbinden, können Sie den Zugriff von Nutzern oder Gruppen auf folgende Weise verwalten:

  • Innerhalb der Organisation: Konfigurieren Sie den Zugriff für Nutzer, die sich in derselben Organisation wie Ihr Cloud Run-Dienst befinden.
  • Außerhalb der Organisation: Konfigurieren Sie den Zugriff für Nutzer, die anderen Organisationen als Ihr Cloud Run-Dienst angehören.
  • Keine Organisation: Konfigurieren Sie den Zugriff in Projekten, die nicht zu einer Google-Organisation gehören.

Bekannte Einschränkungen

  • Sie können IAP nicht sowohl für den Load Balancer als auch für den Cloud Run-Dienst konfigurieren.
  • Cloud Run erzwingt IAP-Richtlinien, bevor IAM-Prüfungen für das IAP-Dienstkonto durchgeführt werden. Da IAP Anfragen abfängt und die Identität des ursprünglichen Aufrufers ersetzt, können Dienste wie Pub/Sub, die auf ihrer eigenen Authentifizierung basieren, fehlschlagen.

Hinweis

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Aktivieren von IAP benötigen:

  • Cloud Run-Administrator (roles/run.admin) für das Projekt
  • Zugriff auf den IAP-fähigen Dienst gewähren: IAP-Richtlinienadministrator (roles/iap.admin) für das Projekt
  • Erstellen Sie einen IAP-fähigen Dienst oder aktualisieren Sie einen vorhandenen Dienst, um IAP zu aktivieren:
  • Nutzern, die nicht zu einer Google-Organisation gehören, Zugriff gewähren: IAP Settings Admin (roles/iap.settingsAdmin) für das Projekt
  • Gewähren Sie Nutzern außerhalb einer Organisation oder Nutzern, die nicht zu einer Organisation gehören, Zugriff: OAuth Config Editor (roles/oauthconfig.editor) für das Projekt
  • Zugriffsebenen für den kontextsensitiven Zugriff hinzufügen oder verwalten:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

IAP über Cloud Run aktivieren

Wir empfehlen, IAP direkt in Cloud Run zu aktivieren.

Aktivieren Sie IAP über Cloud Run mithilfe der Google Cloud Console, der Google Cloud CLI oder Terraform.

Console

Wenn Sie IAP für Cloud Run aktivieren, benötigt IAP Berechtigungen zum Aufrufen Ihres Cloud Run-Dienstes. Wenn Sie IAP über die Google Cloud Console aktivieren, wird diese Berechtigung automatisch erteilt, indem dem IAP-Dienst-Agent die Cloud Run-Invoker-Rolle (roles/run.invoker) zugewiesen wird. So aktivieren Sie IAP über Cloud Run:

  1. Rufen Sie in der Google Cloud Console Cloud Run auf:

    Zu Cloud Run

  2. Wählen Sie im Cloud Run-Navigationsmenü die Option Dienste aus:

    1. Wenn Sie einen neuen Dienst konfigurieren, klicken Sie auf Container bereitstellen und füllen Sie die Seite mit den anfänglichen Diensteinstellungen aus.

    2. Wenn Sie einen vorhandenen Dienst konfigurieren, klicken Sie auf den Dienst und dann auf den Tab Sicherheit.

  3. Wählen Sie Authentifizierung erforderlich und dann Identity-Aware Proxy (IAP) aus.

  4. Optional: Wenn Sie Nutzern Zugriff gewähren möchten, folgen Sie der Anleitung unter Nutzer- oder Gruppenzugriff für IAP verwalten. Wenn bei der Konfiguration des Zugriffs für Nutzer außerhalb Ihrer Organisation Probleme auftreten, lesen Sie den Abschnitt Fehlerbehebung. Klicken Sie auf Speichern, um die Konfiguration zu speichern.

  5. Klicken Sie auf Erstellen, um einen neuen Dienst zu erstellen. Klicken Sie auf Unterschied ansehen und erneut bereitstellen und dann auf Änderungen bereitstellen, um einen vorhandenen Dienst zu aktualisieren.

gcloud

Wenn Sie IAP direkt über Cloud Run aktivieren möchten, fügen Sie beim Bereitstellen Ihrer Anwendung das Flag --iap hinzu und gewähren Sie dem IAP-Dienst-Agenten die Aufruferberechtigung:

  1. Stellen Sie Ihren Cloud Run-Dienst mit einem der folgenden Befehle bereit:

    Für einen neuen Dienst:

    gcloud run deploy SERVICE_NAME \
      --region=REGION \
      --image=IMAGE_URL \
      --no-allow-unauthenticated \
      --iap

    Wenn Sie IAP zum ersten Mal in einem Projekt ohne Organisation aktivieren, wird möglicherweise die folgende Warnung angezeigt:

    Deploying services with IAP enabled in a project without an organization
    may require initial setup via the Cloud Console. Please use the Cloud Run
    UI to enable IAP for the first time in the project.
    

    Diese Warnung wird angezeigt, weil Sie OAuth-Clients nicht programmatisch erstellen können. Wir empfehlen, IAP in Cloud Run zuerst direkt über die Google Cloud Console zu aktivieren oder einen benutzerdefinierten OAuth-Client zu konfigurieren und dann Nutzer über die gcloud CLI hinzuzufügen.

    Für einen vorhandenen Dienst:

    gcloud run services update SERVICE_NAME \
      --region=REGION \
      --iap

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
    • REGION: Der Name Ihrer Cloud Run-Region. Beispiel: europe-west1.
    • IMAGE_URL: ein 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 das Format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PROJECT_NUMBER: Ihre Google Cloud -Projektnummer.
  2. Gewähren Sie dem IAP-Dienst-Agent die Aufruferberechtigung:

    gcloud run services add-iam-policy-binding SERVICE_NAME \
      --region=REGION \
      --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.iam.gserviceaccount.com \
      --role=roles/run.invoker

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
    • REGION: Der Name Ihrer Cloud Run-Region. Beispiel: europe-west1.
    • PROJECT_NUMBER: Ihre Google Cloud -Projektnummer.
  3. Optional. Informationen zum Gewähren des Nutzerzugriffs finden Sie unter Nutzer- oder Gruppenzugriff für IAP verwalten.

  4. Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihr Dienst mit aktiviertem IAP konfiguriert ist:

    gcloud run services describe SERVICE_NAME

    Die Ausgabe sollte den folgenden String enthalten:

    Iap Enabled: true

IAP leitet 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.

Wenn Sie IAP mit Terraform aktivieren möchten, müssen Sie Ihre Dienstdefinition aktualisieren und eine IAM-Richtlinienbindung hinzufügen, um IAP die Aufruferberechtigung zu gewähren.

  1. Fügen Sie iap_enabled = true zu einer google_cloud_run_v2_service-Ressource in Ihrer Terraform-Konfiguration hinzu, um IAP für den Dienst zu aktivieren:

    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-iap-service"
      location = "europe-west1"
      ingress      = "INGRESS_TRAFFIC_ALL"
      iap_enabled  = true
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
      }
    }
    
  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.iam.gserviceaccount.com"
    }
    

    Ersetzen Sie PROJECT_NUMBER durch die Projekt-ID.

  3. Optional. Fügen Sie der Ressource google_cloud_run_v2_service_iam_policy in Ihrer Terraform-Konfiguration Folgendes hinzu, um die aktuellen IAM-Richtliniendaten abzurufen.

    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
    }
    

Nutzer- oder Gruppenzugriff verwalten

Standardmäßig verwendet IAP für Cloud Run einen von Google verwalteten OAuth-Client, mit dem Sie organisationsinterne Identitäten mit einer mit einem Nutzer verknüpften E-Mail-Adresse hinzufügen können. Sie können Hauptkonten auch von außerhalb Ihrer Organisation oder ohne Organisation verwalten. Verwenden Sie dazu die Google Cloud Console in IAP, indem Sie einen benutzerdefinierten OAuth-Client erstellen, wie in den folgenden Schritten beschrieben.

Sie können den IAP-Zugriff auf einen Cloud Run-Dienst über die Google Cloud Console, die gcloud CLI oder Terraform hinzufügen oder entfernen.

In der Organisation

Console

So fügen Sie Zugriff hinzu oder entfernen ihn:

  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 Identity-Aware Proxy (IAP) auf Richtlinie bearbeiten.

  4. Wenn Sie Zugriff hinzufügen möchten, geben Sie das Hauptkonto und optional die Zugriffsebene ein, die Sie hinzufügen möchten, oder lassen Sie die Zugriffsebene leer. Wenn Sie Zugriffsebenen aufrufen und hinzufügen möchten, benötigen Sie die erforderlichen Rollen für Access Context Manager.

  5. Wenn Sie den Zugriff entfernen möchten und die Richtlinie nur ein Hauptkonto enthält, klicken Sie neben Zugriffsebenen auf das Symbol Richtlinie löschen.

  6. Wenn Sie einzelne Hauptkonten aus einer Richtlinie entfernen möchten, klicken Sie auf das Symbol X neben dem Namen des Hauptkontos, das Sie entfernen möchten.

  7. Klicken Sie auf Speichern, um die Nutzerkonfiguration zu speichern.

gcloud

Führen Sie einen der folgenden Befehle aus, um einzelnen Nutzern oder Gruppen Zugriff auf einen Cloud Run-Dienst zu gewähren oder zu entziehen:

  • So fügst du Zugriffsrechte hinzu:

    gcloud 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 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 die Zugriffsrechte auf:

    gcloud iap web get-iam-policy \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME

Ersetzen Sie Folgendes:

  • USER_EMAIL: Die E-Mail-Adresse des Nutzers.
  • REGION: Der Name Ihrer Cloud Run-Region.
  • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.

Terraform

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

  • So gewähren Sie einer Liste von Hauptkonten autoritativen Zugriff:

    Verwenden Sie die Ressource google_iap_web_cloud_run_service_iam_binding, um einer autoritativen Liste von Hauptkonten eine Rolle zuzuweisen. Diese Ressource sorgt dafür, dass nur Mitgliedern in der Liste die Rolle zugewiesen wird. Alle anderen Hauptkonten, denen die Rolle zugewiesen wurde, werden entfernt.

    1. Fügen Sie der Ressource google_iap_web_cloud_run_service_iam_binding in Ihrer Terraform-Konfiguration Folgendes hinzu.

      resource "google_iap_web_cloud_run_service_iam_binding" "binding" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        members = [
          "PRINCIPAL_A", "PRINCIPAL_B"
        ]
      }
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: der Name des Projekts.
      • REGION: die Google Cloud -Region, z. B. europe-west1.
      • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
      • PRINCIPAL: Eine Kennung für die Hauptkonten bzw. Mitglieder, die normalerweise die folgende Form hat: PRINCIPAL_TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.
  • So gewähren Sie einem einzelnen Hauptkonto Zugriff:

    Verwenden Sie die Ressource google_iap_web_cloud_run_service_iam_member, um einem einzelnen Hauptkonto eine Rolle zuzuweisen, ohne dass sich dies auf andere Hauptkonten auswirkt, die möglicherweise dieselbe Rolle haben.

    1. Fügen Sie der Ressource google_iap_web_cloud_run_service_iam_member in Ihrer Terraform-Konfiguration Folgendes hinzu.

      resource "google_iap_web_cloud_run_service_iam_member" "member" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        member = "PRINCIPAL"
      }</span>
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: der Name des Projekts.
      • REGION: die Google Cloud -Region, z. B. europe-west1.
      • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
      • PRINCIPAL: Eine Kennung für die Hauptkonten bzw. Mitglieder, die normalerweise die folgende Form hat: PRINCIPAL_TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.

Außerhalb der Organisation

Console

  • So fügen Sie Nutzer außerhalb Ihrer Organisation über IAP hinzu:

    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 auf der Seite mit den Sicherheitsdetails Ihres Cloud Run-Dienstes unter IAP auf Richtlinie bearbeiten.

    4. Klicken Sie auf In IAP konfigurieren. Dadurch wird die Seite mit den Ressourceneinstellungen in IAP geöffnet.

    5. Klicken Sie auf Zustimmungsbildschirm konfigurieren, um den OAuth-Zustimmungsbildschirm zu konfigurieren. Wählen Sie als Zielgruppentyp Extern aus.

    6. Klicken Sie für eine Schnelleinrichtung auf Anmeldedaten automatisch generieren.

    7. Alternativ können Sie der Anleitung unter OAuth-Client-ID erstellen folgen. Wählen Sie Benutzerdefiniertes OAuth aus und geben Sie Ihre benutzerdefinierte Client-ID und Ihren Clientschlüssel ein.

    8. Klicken Sie auf Speichern, um die Konfiguration zu speichern.

    Sie können jetzt zu Ihrem Cloud Run-Dienst in Cloud Run zurückkehren, um Hauptkonten außerhalb der Organisation hinzuzufügen.

  • So fügen Sie Nutzerzugriff hinzu oder entfernen ihn:

    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. Wenn Sie Zugriff hinzufügen möchten, geben Sie das Hauptkonto und optional die Zugriffsebene ein, die Sie hinzufügen möchten, oder lassen Sie die Zugriffsebene leer. Wenn Sie Zugriffsebenen aufrufen und hinzufügen möchten, benötigen Sie die erforderlichen Rollen für Access Context Manager.

    5. Wenn Sie den Zugriff entfernen möchten und die Richtlinie nur ein Hauptkonto enthält, klicken Sie neben Zugriffsebenen auf das Symbol Richtlinie löschen.

    6. Wenn Sie einzelne Hauptkonten aus einer Richtlinie entfernen möchten, klicken Sie auf das Symbol X neben dem Namen des Hauptkontos, das Sie entfernen möchten.

    7. Klicken Sie auf Speichern, um die Nutzerkonfiguration zu speichern.

gcloud

Hinweis

  • Wenn Sie Nutzerhauptkonten von außerhalb einer Organisation hinzufügen möchten, müssen Sie zuerst den OAuth-Client konfigurieren.

Führen Sie einen der folgenden Befehle aus, um einzelnen Nutzern oder Gruppen Zugriff auf einen Cloud Run-Dienst zu gewähren oder zu entziehen:

  • So fügst du Zugriffsrechte hinzu:

    gcloud 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 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 die Zugriffsrechte auf:

    gcloud iap web get-iam-policy \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME

Ersetzen Sie Folgendes:

  • USER_EMAIL: Die E-Mail-Adresse des Nutzers.
  • REGION: Der Name Ihrer Cloud Run-Region.
  • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.

Terraform

Hinweis

  • Wenn Sie Nutzerhauptkonten außerhalb einer Organisation hinzufügen möchten, müssen Sie zuerst den OAuth-Client konfigurieren.

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

  • So gewähren Sie einer Liste von Hauptkonten autoritativen Zugriff:

    Verwenden Sie die Ressource google_iap_web_cloud_run_service_iam_binding, um einer autoritativen Liste von Hauptkonten eine Rolle zuzuweisen. Diese Ressource sorgt dafür, dass nur Mitgliedern in der Liste die Rolle zugewiesen wird. Alle anderen Hauptkonten, denen die Rolle zugewiesen wurde, werden entfernt.

    1. Fügen Sie der Ressource google_iap_web_cloud_run_service_iam_binding in Ihrer Terraform-Konfiguration Folgendes hinzu.

      resource "google_iap_web_cloud_run_service_iam_binding" "binding" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        members = [
          "PRINCIPAL_A", "PRINCIPAL_B"
        ]
      }
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: der Name des Projekts.
      • REGION: die Google Cloud -Region, z. B. europe-west1.
      • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
      • PRINCIPAL: Eine Kennung für die Hauptkonten bzw. Mitglieder, die normalerweise die folgende Form hat: PRINCIPAL_TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.
  • So gewähren Sie einem einzelnen Hauptkonto Zugriff:

    Verwenden Sie die Ressource google_iap_web_cloud_run_service_iam_member, um einem einzelnen Hauptkonto eine Rolle zuzuweisen, ohne dass sich dies auf andere Hauptkonten auswirkt, die möglicherweise dieselbe Rolle haben.

    1. Fügen Sie der Ressource google_iap_web_cloud_run_service_iam_member in Ihrer Terraform-Konfiguration Folgendes hinzu.

      resource "google_iap_web_cloud_run_service_iam_member" "member" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        member = "PRINCIPAL"
      }</span>
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: der Name des Projekts.
      • REGION: die Google Cloud -Region, z. B. europe-west1.
      • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
      • PRINCIPAL: Eine Kennung für die Hauptkonten bzw. Mitglieder, die normalerweise die folgende Form hat: PRINCIPAL_TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.

Keine Organisation

Console

So fügen Sie Zugriff hinzu oder entfernen ihn:

  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. Wenn Sie Zugriff hinzufügen möchten, geben Sie das Hauptkonto und optional die Zugriffsebene ein, die Sie hinzufügen möchten, oder lassen Sie die Zugriffsebene leer. Wenn Sie Zugriffsebenen aufrufen und hinzufügen möchten, benötigen Sie die erforderlichen Rollen für Access Context Manager.

  5. Wenn Sie den Zugriff entfernen möchten und die Richtlinie nur ein Hauptkonto enthält, klicken Sie neben Zugriffsebenen auf das Symbol Richtlinie löschen.

  6. Wenn Sie einzelne Hauptkonten aus einer Richtlinie entfernen möchten, klicken Sie auf das Symbol X neben dem Namen des Hauptkontos, das Sie entfernen möchten.

  7. Klicken Sie auf Speichern, um die Nutzerkonfiguration zu speichern.

gcloud

Hinweis

Führen Sie einen der folgenden Befehle aus, um einzelnen Nutzern oder Gruppen Zugriff auf einen Cloud Run-Dienst zu gewähren oder zu entziehen:

  • So fügst du Zugriffsrechte hinzu:

    gcloud 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 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 die Zugriffsrechte auf:

    gcloud iap web get-iam-policy \
      --region=REGION \
      --resource-type=cloud-run \
      --service=SERVICE_NAME

Ersetzen Sie Folgendes:

  • USER_EMAIL: Die E-Mail-Adresse des Nutzers.
  • REGION: Der Name Ihrer Cloud Run-Region.
  • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.

Terraform

Hinweis

  • Wenn Sie Nutzerhauptkonten außerhalb einer Organisation hinzufügen möchten, müssen Sie zuerst den OAuth-Client konfigurieren.

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

  • So gewähren Sie einer Liste von Hauptkonten autoritativen Zugriff:

    Verwenden Sie die Ressource google_iap_web_cloud_run_service_iam_binding, um einer autoritativen Liste von Hauptkonten eine Rolle zuzuweisen. Diese Ressource sorgt dafür, dass nur Mitgliedern in der Liste die Rolle zugewiesen wird. Alle anderen Hauptkonten, denen die Rolle zugewiesen wurde, werden entfernt.

    1. Fügen Sie der Ressource google_iap_web_cloud_run_service_iam_binding in Ihrer Terraform-Konfiguration Folgendes hinzu.

      resource "google_iap_web_cloud_run_service_iam_binding" "binding" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        members = [
          "PRINCIPAL_A", "PRINCIPAL_B"
        ]
      }
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: der Name des Projekts.
      • REGION: die Google Cloud -Region, z. B. europe-west1.
      • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
      • PRINCIPAL: Eine Kennung für die Hauptkonten bzw. Mitglieder, die normalerweise die folgende Form hat: PRINCIPAL_TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.
  • So gewähren Sie einem einzelnen Hauptkonto Zugriff:

    Verwenden Sie die Ressource google_iap_web_cloud_run_service_iam_member, um einem einzelnen Hauptkonto eine Rolle zuzuweisen, ohne dass sich dies auf andere Hauptkonten auswirkt, die möglicherweise dieselbe Rolle haben.

    1. Fügen Sie der Ressource google_iap_web_cloud_run_service_iam_member in Ihrer Terraform-Konfiguration Folgendes hinzu.

      resource "google_iap_web_cloud_run_service_iam_member" "member" {
        project = "PROJECT_ID"
        location = "REGION"
        cloud_run_service_name = "SERVICE_NAME"
        role = "roles/iap.httpsResourceAccessor"
        member = "PRINCIPAL"
      }</span>
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: der Name des Projekts.
      • REGION: die Google Cloud -Region, z. B. europe-west1.
      • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
      • PRINCIPAL: Eine Kennung für die Hauptkonten bzw. Mitglieder, die normalerweise die folgende Form hat: PRINCIPAL_TYPE:ID. Beispiel: user:my-user@example.com. Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.

IAP über Cloud Run deaktivieren

Sie können IAP über die Google Cloud Console oder die gcloud CLI deaktivieren.

Console

So deaktivieren Sie IAP für Cloud Run:

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

    Zu Cloud Run

  2. Wählen Sie den Dienst aus, den Sie ändern möchten.

  3. Klicken Sie auf den Tab Sicherheit.

  4. Heben Sie die Auswahl von Identity-Aware Proxy (IAP) auf. Ihr Dienst ist durch Ihre IAM-Richtlinie geschützt. Wenn Sie IAM jedoch nicht verwenden, machen Sie Ihren Dienst öffentlich zugänglich, indem Sie Öffentlichen Zugriff zulassen auswählen.

  5. Klicken Sie auf Unterschied ansehen und erneut bereitstellen und dann auf Änderungen bereitstellen.

gcloud

Wenn Sie IAP direkt in Cloud Run deaktivieren möchten, fügen Sie beim Bereitstellen Ihrer Anwendung das Flag --no-iap hinzu:

  1. Stellen Sie Ihren Cloud Run-Dienst mit einem der folgenden Befehle bereit:

    Für einen neuen Dienst:

    gcloud run deploy SERVICE_NAME \
      --region=REGION \
      --image=IMAGE_URL \
      --no-iap

    Für einen vorhandenen Dienst:

    gcloud run services update SERVICE_NAME \
      --region=REGION \
      --no-iap

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: Der Name Ihres Cloud Run-Dienstes.
    • REGION: Der Name Ihrer Cloud Run-Region.
    • IMAGE_URL: ein 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 das Format 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 aktiviertem IAP konfiguriert ist:

    gcloud run services describe SERVICE_NAME

    Die Ausgabe sollte den folgenden String nicht mehr enthalten:

    Iap Enabled: true

IAP leitet 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.

Benutzerdefinierten OAuth-Client konfigurieren

Wir empfehlen, die Google Cloud Console zu verwenden, wenn Sie IAP zum ersten Mal aktivieren. So können Sie Anmeldedaten automatisch generieren lassen und müssen keinen benutzerdefinierten OAuth-Client manuell erstellen. Wenn Sie IAP in Cloud Run direkt über die Google Cloud Console aktivieren, richtet IAP den benutzerdefinierten OAuth-Client automatisch auf Projektebene für Sie ein.

Wenn Sie die gcloud CLI verwenden, um den Zugriff für Nutzer ohne Organisation zu verwalten, aktivieren Sie IAP in Cloud Run direkt über die Google Cloud Console oder folgen Sie der Anleitung in diesem Abschnitt, um manuell einen benutzerdefinierten OAuth-Client zu erstellen.

Für erweiterte Szenarien, z. B. das Anpassen des Zustimmungsbildschirms oder das Verwalten von OAuth-Clients auf Organisationsebene, führen Sie die folgenden Schritte aus.

Marke konfigurieren

  1. Rufen Sie in der Google Cloud Console die Seite OAuth-Branding auf:

    Zum Branding

  2. Klicken Sie auf Jetzt starten.

  3. Füllen Sie das Formular App-Informationen aus und klicken Sie auf Weiter.

  4. Wählen Sie unter Zielgruppe die Option Extern aus.

  5. Füllen Sie den Rest des Formulars aus und klicken Sie auf Erstellen.

Benutzerdefinierten OAuth-Client manuell erstellen

  • Wenn Sie die Google Auth Platform zum ersten Mal einrichten:

    1. Rufen Sie in der Google Cloud Console die Seite Clients auf:

      Zu „Clients“

    2. Klicken Sie auf der Übersichtsseite der Google Auth Platform auf Jetzt starten, wenn Sie dazu aufgefordert werden.

      1. Geben Sie die App-Informationen ein und klicken Sie auf Weiter.
      2. Wählen Sie als Zielgruppentyp Extern aus.
      3. Geben Sie die Kontaktdaten ein, akzeptieren Sie die Nutzungsbedingungen und klicken Sie dann auf Erstellen.
      4. Klicken Sie auf Client erstellen.
      5. Wählen Sie unter Anwendungstyp die Option Webanwendung aus und geben Sie den Namen Ihres OAuth-Clients ein.
      6. Klicken Sie auf Erstellen.
      7. Notieren Sie sich die Client-ID und den Clientschlüssel und klicken Sie auf OK.
      8. Klicken Sie auf den Namen des neu erstellten OAuth-Clients, um ihn zu bearbeiten.
      9. Fügen Sie im Feld Autorisierte Weiterleitungs-URIs den folgenden URI hinzu:
        https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
        Ersetzen Sie CLIENT_ID durch die OAuth-Client-ID, die Sie gerade generiert haben.
      10. Klicken Sie auf Speichern.
  • Wenn Sie die Google Auth Platform bereits eingerichtet haben:

    1. Rufen Sie in der Google Cloud Console die Seite Clients auf:

      Zu „Clients“

    2. Klicken Sie auf Client erstellen.

    3. Wählen Sie unter Anwendungstyp die Option Webanwendung aus und geben Sie den Namen Ihres OAuth-Clients ein.

    4. Geben Sie die App-Informationen ein.

    5. Klicken Sie auf Erstellen.

    6. Notieren Sie sich die Client-ID und den Clientschlüssel und klicken Sie auf OK.

    7. Klicken Sie auf den Namen des neu erstellten OAuth-Clients, um ihn zu bearbeiten.

    8. Fügen Sie im Feld Autorisierte Weiterleitungs-URIs den folgenden URI hinzu:

      https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
      Ersetzen Sie CLIENT_ID durch die OAuth-Client-ID, die Sie gerade generiert haben.

    9. Klicken Sie auf Speichern.

OAuth-Client auf IAP anwenden

Sie können den OAuth-Client auf Projekt- oder Organisationsebene anwenden.

  • Führen Sie auf Projektebene die folgenden Schritte aus:

    1. Erstellen Sie eine Datei mit dem Namen iap_settings.yaml und fügen Sie ihr Folgendes hinzu:

      access_settings:
        oauth_settings:
          client_id: CLIENT_ID
          client_secret: CLIENT_SECRET
    2. Führen Sie den Befehl gcloud iap settings set aus, um den OAuth-Client auf Projektebene anzuwenden:

      gcloud iap settings set iap_settings.yaml --project=PROJECT_ID

    Ersetzen Sie Folgendes:

    • CLIENT_ID: die OAuth-Client-ID, die Sie im vorherigen Schritt gespeichert haben.
    • CLIENT_SECRET: Das Secret, das Sie im vorherigen Schritt gespeichert haben.
    • PROJECT_ID: die Projekt-ID.
  • Führen Sie auf Organisationsebene die folgenden Schritte aus:

    1. Führen Sie den Befehl gcloud iap settings set aus, um den OAuth-Client auf Organisationsebene anzuwenden:

      gcloud iap settings set iap_settings.yaml --organization=ORGANIZATION_NUMBER

      Ersetzen Sie Folgendes:

      • CLIENT_ID: die OAuth-Client-ID, die Sie im vorherigen Schritt gespeichert haben.
      • CLIENT_SECRET: das Secret, das Sie im vorherigen Schritt gespeichert haben.
      • ORGANIZATION_NUMBER: die Nummer Ihrer Organisation.

Fehlerbehebung

Im folgenden Abschnitt wird beschrieben, wie Sie Fehler bei IAP mit Cloud Run beheben.

Fehler beim Zugriff außerhalb der Organisation

Im Folgenden finden Sie Fehler, die beim Konfigurieren des Zugriffs für Nutzer außerhalb Ihrer Organisation auftreten können.

Nutzerzugriff außerhalb der Organisation: Deaktiviert

Wenn Sie den Zugriff außerhalb der Organisation deaktivieren möchten, empfehlen wir, ihn auf Projektebene zu deaktivieren. Einstellungen auf anderen Ebenen (Dienst, Ordner oder Organisation) werden möglicherweise als deaktiviert angezeigt, auch wenn der Zugriff möglich ist.

Die Marke ist derzeit auf „Intern“ festgelegt.

Der Zugriff von außerhalb der Organisation wird nicht unterstützt, wenn die Marke Ihres benutzerdefinierten OAuth-Clients auf „Intern“ festgelegt ist.

Führen Sie die folgenden Schritte aus, um die Markeneinstellung in „Extern“ zu ändern und den Zugriff für Hauptkonten außerhalb der Organisation mit IAP zu aktivieren:

  1. Rufen Sie in der Google Cloud Console die Seite Zielgruppe der Google Auth Platform auf:

    Zur Zielgruppe

  2. Klicken Sie unter Nutzertyp auf Extern machen.

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.

Nächste Schritte