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, schützen, indem Sie ihn zur Authentifizierung an IAP weiterleiten. Wenn Sie IAP direkt in Cloud Run aktivieren, können Sie den Traffic mit einem einzigen Klick über alle Ingress-Pfade hinweg schützen, einschließlich der Standard-run.app-URLs und Load Balancer.
Wenn Sie IAP in Cloud Run einbinden, können Sie den Nutzer- oder Gruppenzugriff 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 aus anderen Organisationen als Ihrem Cloud Run-Dienst.
- Keine Organisation: Zugriff in Projekten konfigurieren, die nicht Teil einer Google-Organisation sind
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 beruhen, fehlschlagen.
Hinweis
Aktivieren Sie die IAP API:
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:
-
Rolle Cloud Run-Administrator (
roles/run.admin) im Projekt -
Zugriff auf den IAP-fähigen Dienst gewähren:
IAP Policy Admin (
roles/iap.admin) für das Projekt -
Erstellen Sie einen IAP-fähigen Dienst oder aktualisieren Sie einen vorhandenen Dienst, um IAP zu aktivieren:
-
Artifact Registry-Leser (
roles/artifactregistry.reader) für die bereitgestellten Container-Images -
Dienstkontonutzer (
roles/iam.serviceAccountUser) für die Dienstidentität
-
Artifact Registry-Leser (
-
Zugriff für Nutzer gewähren, die nicht Teil einer Google-Organisation sind:
Administrator für IAP-Einstellungen (
roles/iap.settingsAdmin) für das Projekt -
Zugriff für Nutzer außerhalb einer Organisation oder für Nutzer, die nicht Teil einer Organisation sind, gewähren:
OAuth-Konfigurationsbearbeiter (
roles/oauthconfig.editor) für das Projekt
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 für Cloud Run zu aktivieren.
Sie können IAP für Cloud Run über die Google Cloud Console, die Google Cloud CLI oder Terraform aktivieren.
Console
Wenn Sie IAP für Cloud Run aktivieren, sind für IAP Berechtigungen zum Aufrufen Ihres Cloud Run-Dienstes erforderlich. Wenn Sie IAP über die Google Cloud -Konsole aktivieren, wird diese Berechtigung automatisch gewährt, indem dem IAP-Dienst-Agent die Cloud Run Invoker-Rolle (roles/run.invoker) zugewiesen wird.
So aktivieren Sie IAP über Cloud Run:
Rufen Sie in der Google Cloud Console die Seite Dienste für Cloud Run auf:
Wenn Sie einen neuen Dienst konfigurieren, klicken Sie auf Container bereitstellen, füllen Sie die Seite mit den anfänglichen Diensteinstellungen nach Bedarf aus und wählen Sie dann Authentifizierung erforderlich aus. Wählen Sie Identity-Aware Proxy (IAP) aus.
Wenn Sie einen vorhandenen Dienst ändern, klicken Sie auf den Dienst, dann auf den Tab Sicherheit und wählen Sie Authentifizierung erforderlich aus. Wählen Sie IAP aus.
Optional. Wenn Sie Nutzern Zugriff gewähren möchten, folgen Sie der Anleitung unter Nutzer- oder Gruppenzugriff verwalten für IAP. Wenn beim Konfigurieren 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.
Klicken Sie auf Erstellen oder Bereitstellen, um den Dienst zu erstellen oder bereitzustellen.
gcloud
Wenn Sie IAP direkt über Cloud Run aktivieren möchten, fügen Sie beim Bereitstellen Ihrer App das Flag --iap hinzu und erteilen Sie dem IAP-Dienstkonto die Aufruferberechtigung:
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 \ --iapWenn 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 für Cloud Run zuerst direkt über die Google Cloud -Konsole 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\ --iapErsetzen 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:latestWenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. PROJECT_NUMBER: Ihre Google Cloud Projektnummer.
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.invokerErsetzen 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.
Optional. Informationen zum Gewähren des Nutzerzugriffs finden Sie unter Nutzer- oder Gruppenzugriff verwalten für IAP.
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihr Dienst mit aktiviertem IAP konfiguriert ist:
gcloud run services describe
SERVICE_NAMEDie 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 die Berechtigung „Aufrufer“ für IAP zu erteilen.
Fügen Sie
iap_enabled = trueeinergoogle_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" } } }Fügen Sie Folgendes hinzu, um dem IAP-Dienst-Agent die Rolle
roles/run.invokerzuzuweisen.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_NUMBERdurch die Projekt-ID.Optional. Wenn Sie die aktuellen IAM-Richtliniendaten abrufen möchten, fügen Sie der Ressource
google_cloud_run_v2_service_iam_policyin 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 }
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 E-Mail-Adresse hinzufügen können, die einem Nutzer zugeordnet ist. Sie können auch Principals außerhalb Ihrer Organisation oder ohne Organisation über die Google Cloud Console in IAP verwalten, 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.
Innerhalb der Organisation
Console
So fügen Sie Zugriffsrechte hinzu oder entfernen 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 ein, die Sie hinzufügen möchten, oder lassen Sie die Zugriffsebene leer.
Wenn nur ein Hauptkonto in der Richtlinie vorhanden ist, klicken Sie zum Entfernen des Zugriffs neben Zugriffsebenen auf das Symbol Richtlinie löschen.
Wenn Sie einzelne Hauptkonten aus einer Richtlinie entfernen möchten, klicken Sie neben dem Namen des Hauptkontos, das Sie entfernen möchten, auf das Symbol X.
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_NAMESo 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_NAMESo rufen Sie den Zugriff 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 autoritativen Zugriff auf eine Liste von Hauptkonten:
Verwenden Sie die
google_iap_web_cloud_run_service_iam_binding-Ressource, um einer autoritativen Liste von Hauptkonten eine Rolle zuzuweisen. Mit dieser Ressource wird dafür gesorgt, dass nur Mitgliedern in der Liste die Rolle zugewiesen wird. Alle anderen Identitäten, denen die Rolle zugewiesen wurde, werden entfernt.Fügen Sie der Ressource
google_iap_web_cloud_run_service_iam_bindingin 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ürPRINCIPALzulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.
So gewähren Sie Zugriff für einen einzelnen Prinzipal:
Mit der
google_iap_web_cloud_run_service_iam_member-Ressource können Sie einem einzelnen Hauptkonto eine Rolle zuweisen, ohne dass sich das auf andere Hauptkonten mit derselben Rolle auswirkt.Fügen Sie der Ressource
google_iap_web_cloud_run_service_iam_memberin 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" }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ürPRINCIPALzulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.
Außerhalb der Organisation
Console
Wenn Sie Nutzer außerhalb Ihrer Organisation über IAP hinzufügen möchten, führen Sie die folgenden einmaligen Einrichtungsschritte aus:
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 auf der Seite mit den Sicherheitsdetails Ihres Cloud Run-Dienstes unter IAP auf Richtlinie bearbeiten.
Klicken Sie auf In IAP konfigurieren. Dadurch wird die Seite mit den Ressourceneinstellungen in IAP geöffnet.
Klicken Sie auf Zustimmungsbildschirm konfigurieren, um den OAuth-Zustimmungsbildschirm zu konfigurieren. Wählen Sie als Zielgruppentyp Extern aus.
Für eine möglichst schnelle Einrichtung klicken Sie auf Anmeldedaten automatisch generieren.
Alternativ können Sie auch der Anleitung zum Erstellen einer OAuth-Client-ID folgen. Wählen Sie Benutzerdefiniertes OAuth aus und geben Sie Ihre benutzerdefinierte Client-ID und Ihr Secret ein.
Klicken Sie auf Speichern, um die Konfiguration zu speichern.
Sie können jetzt zu Ihrem Cloud Run-Dienst in Cloud Run zurückkehren, um externe Identitäten hinzuzufügen.
So fügen Sie Nutzerzugriff hinzu oder entfernen ihn:
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.
Wenn Sie Zugriff hinzufügen möchten, geben Sie das Hauptkonto und optional die Zugriffsebene ein, die Sie hinzufügen möchten. Lassen Sie die Zugriffsebene leer, wenn Sie keine angeben möchten.
Wenn nur ein Hauptkonto in der Richtlinie vorhanden ist, klicken Sie zum Entfernen des Zugriffs neben Zugriffsebenen auf das Symbol Richtlinie löschen.
Wenn Sie einzelne Hauptkonten aus einer Richtlinie entfernen möchten, klicken Sie neben dem Namen des Hauptkontos, das Sie entfernen möchten, auf das Symbol X.
Klicken Sie auf Speichern, um die Nutzerkonfiguration zu speichern.
gcloud
Hinweis
- Wenn Sie Nutzerprinzipale 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_NAMESo 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_NAMESo rufen Sie den Zugriff 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 Nutzerprinzipale 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 autoritativen Zugriff auf eine Liste von Hauptkonten:
Verwenden Sie die
google_iap_web_cloud_run_service_iam_binding-Ressource, 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.Fügen Sie der Ressource
google_iap_web_cloud_run_service_iam_bindingin 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ürPRINCIPALzulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.
So gewähren Sie Zugriff für einen einzelnen Prinzipal:
Mit der
google_iap_web_cloud_run_service_iam_member-Ressource können Sie einem einzelnen Hauptkonto eine Rolle zuweisen, ohne dass sich das auf andere Hauptkonten mit derselben Rolle auswirkt.Fügen Sie der Ressource
google_iap_web_cloud_run_service_iam_memberin 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" }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 Zugriffsrechte hinzu oder entfernen 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 ein, die Sie hinzufügen möchten, oder lassen Sie die Zugriffsebene leer.
Wenn nur ein Hauptkonto in der Richtlinie vorhanden ist, klicken Sie zum Entfernen des Zugriffs neben Zugriffsebenen auf das Symbol Richtlinie löschen.
Wenn Sie einzelne Hauptkonten aus einer Richtlinie entfernen möchten, klicken Sie neben dem Namen des Hauptkontos, das Sie entfernen möchten, auf das Symbol X.
Klicken Sie auf Speichern, um die Nutzerkonfiguration zu speichern.
gcloud
Hinweis
- Wenn Sie Nutzer zu einem Projekt ohne Organisation hinzufügen möchten, müssen Sie zuerst die einmalige Einrichtung zum Konfigurieren eines benutzerdefinierten OAuth-Clients durchführen.
Führen Sie einen der folgenden Befehle aus, um den Zugriff auf einen Cloud Run-Dienst für einzelne Nutzer oder Gruppen hinzuzufügen oder zu entfernen:
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_NAMESo 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_NAMESo rufen Sie den Zugriff 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 Nutzerprinzipale 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 autoritativen Zugriff auf eine Liste von Hauptkonten:
Verwenden Sie die
google_iap_web_cloud_run_service_iam_binding-Ressource, 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.Fügen Sie der Ressource
google_iap_web_cloud_run_service_iam_bindingin 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ürPRINCIPALzulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.
So gewähren Sie Zugriff für einen einzelnen Prinzipal:
Mit der
google_iap_web_cloud_run_service_iam_member-Ressource können Sie einem einzelnen Hauptkonto eine Rolle zuweisen, ohne dass sich das auf andere Hauptkonten mit derselben Rolle auswirkt.Fügen Sie der Ressource
google_iap_web_cloud_run_service_iam_memberin 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" }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ürPRINCIPALzulä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:
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 deaktivieren Sie IAP. Ihr Dienst ist durch Ihre IAM-Richtlinie geschützt. Wenn Sie IAM nicht verwenden, machen Sie Ihren Dienst öffentlich zugänglich, indem Sie Öffentlichen Zugriff zulassen auswählen.
Klicken Sie auf Speichern, um die Konfiguration zu 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 run deploy
SERVICE_NAME\ --region=REGION\ --image=IMAGE_URL\ --no-iapFür einen vorhandenen Dienst:
gcloud run services update
SERVICE_NAME\ --region=REGION\ --no-iapErsetzen 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:latestWenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat das FormatLOCATION-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 run services describe
SERVICE_NAMEDie 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, anstatt einen benutzerdefinierten OAuth-Client manuell erstellen zu müssen. Wenn Sie IAP für Cloud Run direkt über die Google Cloud -Konsole aktivieren, wird der benutzerdefinierte OAuth-Client automatisch auf Projektebene eingerichtet.
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. zum Anpassen des Zustimmungsbildschirms oder zum Verwalten von OAuth-Clients auf Organisationsebene, führen Sie die folgenden Schritte aus.
Marke konfigurieren
Rufen Sie in der Google Cloud Console die OAuth-Seite Branding auf:
Klicken Sie auf Jetzt starten.
Füllen Sie das Formular App-Informationen aus und klicken Sie auf Weiter.
Wählen Sie unter Zielgruppe die Option Extern aus.
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:
Rufen Sie in der Google Cloud Console die Seite Clients auf:
Klicken Sie auf der Übersichtsseite der Google Auth Platform auf Jetzt starten, wenn Sie dazu aufgefordert werden.
- Füllen Sie die App-Informationen aus und klicken Sie auf Weiter.
- Wählen Sie als Zielgruppentyp Extern aus.
- Geben Sie die Kontaktdaten ein, akzeptieren Sie die Nutzungsbedingungen und klicken Sie auf Erstellen.
- Klicken Sie auf Client erstellen.
- Wählen Sie unter Anwendungstyp die Option Webanwendung aus und geben Sie den Namen Ihres OAuth-Clients ein.
- Fügen Sie im Feld Autorisierte Weiterleitungs-URIs den folgenden URI hinzu:
Ersetzen Siehttps://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
CLIENT_IDdurch die OAuth-Client-ID. - Klicken Sie auf Erstellen.
- Notieren Sie sich die Client-ID und den Clientschlüssel und klicken Sie auf OK.
Wenn Sie die Google Auth Platform bereits eingerichtet haben:
Rufen Sie in der Google Cloud Console die Seite Clients auf:
Klicken Sie auf Client erstellen.
Wählen Sie unter Anwendungstyp die Option Webanwendung aus und geben Sie den Namen Ihres OAuth-Clients ein.
Geben Sie die App-Informationen ein.
Fügen Sie im Feld Autorisierte Weiterleitungs-URIs den folgenden URI hinzu:
Ersetzen Siehttps://iap.googleapis.com/v1/oauth/clientIds/
CLIENT_ID:handleRedirectCLIENT_IDdurch die OAuth-Client-ID.Klicken Sie auf Erstellen.
Notieren Sie sich die Client-ID und den Clientschlüssel und klicken Sie auf OK.
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:
Erstellen Sie eine Datei mit dem Namen
iap_settings.yamlund fügen Sie den folgenden Inhalt ein:access_settings: oauth_settings: client_id:
CLIENT_IDclient_secret:CLIENT_SECRETFühren Sie den Befehl
gcloud iap settings setaus, 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:
Führen Sie den Befehl
gcloud iap settings setaus, um den OAuth-Client auf Organisationsebene anzuwenden:gcloud iap settings set iap_settings.yaml --organization=
ORGANIZATION_NUMBERErsetzen 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 Probleme mit IAP mit Cloud Run beheben.
Fehler beim Zugriff außerhalb der Organisation
Im Folgenden finden Sie Fehler, die bei der Konfiguration des Zugriffs für Nutzer außerhalb Ihrer Organisation auftreten können.
Nutzerzugriff außerhalb der Organisation: Deaktiviert
Damit der Zugriff außerhalb der Organisation deaktiviert ist, 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 außerhalb der Organisation wird nicht unterstützt, wenn die Marke Ihres benutzerdefinierten OAuth-Clients auf „Intern“ festgelegt ist.
So ändern Sie die Markeneinstellung in „Extern“, um Zugriff für Hauptkonten außerhalb der Organisation mit IAP zu aktivieren:
Rufen Sie in der Google Cloud Console die Seite Zielgruppe der Google Auth Platform auf:
Klicken Sie unter Nutzertyp auf Extern machen.
Fehler beim Dienst-Agent führt zu IAM-Fehler
Wenn Sie IAP in einem neuen Projekt zum ersten Mal aktivieren, kann der folgende Fehler auftreten:
Setting IAM permissions failedDas 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 über einen Back-End-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.
- Zugriff auf mit IAP gesicherte Ressourcen verwalten
- Organisationsrichtlinien zum Steuern der IAP-Aktivierung verwenden