Questa pagina descrive come abilitare IAP da Cloud Run e proteggere il traffico destinato a un servizio Cloud Run instradandolo a IAP per l'autenticazione. Se abiliti IAP da Cloud Run, puoi instradare il traffico con un solo clic da tutti i percorsi di ingresso, inclusi gli URL run.app
e i bilanciatori del carico predefiniti.
Limitazioni note
- Il progetto deve trovarsi all'interno di un'organizzazione.
- Le identità devono provenire dalla stessa organizzazione.
- Non puoi configurare IAP sia sul bilanciatore del carico sia sul servizio Cloud Run.
- Alcune integrazioni, come Pub/Sub, potrebbero smettere di funzionare se IAP è abilitato.
Prima di iniziare
Abilita l'API IAP.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per abilitare IAP, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Amministratore di Cloud Run (
roles/run.admin
) sul progetto -
Concedi l'accesso al servizio abilitato IAP:
IAP Policy Admin (
roles/iap.admin
) sul progetto -
Crea un servizio abilitato a IAP o aggiorna un servizio esistente per abilitare IAP:
-
Lettore Artifact Registry (
roles/artifactregistry.reader
) sulle immagini container di cui è stato eseguito il deployment -
Utente service account (
roles/iam.serviceAccountUser
) sull'identità del servizio
-
Lettore Artifact Registry (
Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Abilitare IAP da Cloud Run
Ti consigliamo di abilitare IAP direttamente da Cloud Run.
Se utilizzi sia IAP che Identity and Access Management (IAM) sullo stesso servizio Cloud Run, tieni presente le seguenti condizioni:
Vengono eseguiti sia i controlli IAP sia quelli IAM.
Il controllo IAP viene eseguito per primo e accetta o blocca le richieste in base alla configurazione IAP.
Se la richiesta supera il controllo IAP, IAP utilizza il proprio account di servizio per l'autenticazione al controllo IAM di Cloud Run.
Poiché il controllo IAP viene eseguito per primo, alcuni servizi, come Pub/Sub, potrebbero non eseguire l'autenticazione correttamente.
Attiva IAP da Cloud Run utilizzando la console Google Cloud , Google Cloud CLI o Terraform.
Console
Quando abiliti IAP per Cloud Run, IAP
richiede le autorizzazioni per richiamare il servizio Cloud Run. Se abiliti IAP utilizzando la console Google Cloud , questa autorizzazione viene concessa automaticamente assegnando il ruolo Invoker di Cloud Run (roles/run.invoker
) all'agente di servizio IAP.
Per abilitare IAP da Cloud Run:
Nella console Google Cloud , vai alla pagina Cloud Run:
Se stai configurando ed eseguendo il deployment di un nuovo servizio, seleziona Esegui il deployment del contenitore e poi Servizio. Se stai configurando ed eseguendo il deployment di un servizio esistente, fai clic sul servizio, poi su Modifica ed esegui il deployment della nuova revisione.
Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio in base alle necessità, quindi seleziona Richiedi autenticazione. Seleziona Identity-Aware Proxy (IAP).
Se stai configurando e implementando un servizio esistente, fai clic sul servizio e poi seleziona Richiedi autenticazione. Seleziona Identity-Aware Proxy (IAP).
Fai clic su Modifica policy per creare una policy di accesso sensibile al contesto:
Aggiungi uno o più agenti e, facoltativamente, il livello di accesso che ogni agente deve soddisfare per l'accesso all'applicazione.
Fai clic su Salva.
Fai clic su Salva.
gcloud
Per abilitare IAP direttamente da Cloud Run, aggiungi il flag --iap
durante il deployment dell'app e concedi l'autorizzazione di invoker all'agente di servizio IAP:
Esegui il deployment del servizio Cloud Run utilizzando uno dei seguenti comandi:
Per un nuovo servizio:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-allow-unauthenticated \ --iap
Per un servizio esistente:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap
Sostituisci quanto segue:
- SERVICE_NAME: il nome del tuo servizio Cloud Run.
- REGION: il nome della tua regione Cloud Run.
Ad esempio,
europe-west1
. - IMAGE_URL: un riferimento all'immagine container, ad
esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - PROJECT_NUMBER: il tuo numero di progetto Google Cloud .
Concedi l'autorizzazione invoker al service agent IAP:
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
Sostituisci quanto segue:
- SERVICE_NAME: il nome del tuo servizio Cloud Run.
- REGION: il nome della tua regione Cloud Run.
Ad esempio,
europe-west1
. - PROJECT_NUMBER: il tuo numero di progetto Google Cloud .
Per verificare che il servizio sia configurato con IAP abilitato, esegui questo comando:
gcloud beta run services describe SERVICE_NAME
L'output dovrebbe contenere la seguente stringa:
Iap Enabled: true
Ora tutto il traffico destinato al servizio Cloud Run configurato viene indirizzato a IAP per l'autenticazione prima di essere trasmesso al container.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Per abilitare IAP utilizzando Terraform, devi aggiornare la definizione del servizio e aggiungere un'associazione dei criteri IAM per concedere l'autorizzazione di invoker a IAP.
Aggiungi
iap_enabled = true
a una risorsagoogle_cloud_run_v2_service
nella configurazione Terraform per abilitare IAP sul servizio: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" } } }
Aggiungi quanto segue per concedere il ruolo
roles/run.invoker
al service agent IAP.resource "google_cloud_run_v2_service_iam_member" "iap_invoker" { provider = google-beta 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" }
Sostituisci PROJECT_NUMBER con il numero del tuo progetto.
Facoltativo. Per recuperare i dati dei criteri IAM attuali, aggiungi quanto segue a una risorsa
google_cloud_run_v2_service_iam_policy
nella configurazione Terraform.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 }
Disabilita IAP da Cloud Run
Puoi disattivare IAP utilizzando la console Google Cloud o gcloud CLI.
Console
Per disattivare IAP da Cloud Run:
Nella console Google Cloud , vai alla pagina Cloud Run:
Fai clic sul servizio esistente che vuoi modificare.
Fai clic su Sicurezza e seleziona Consenti accesso pubblico.
Fai clic su Salva.
gcloud
Per disattivare IAP direttamente da Cloud Run, aggiungi il
flag --no-iap
durante il deployment dell'app:
Esegui il deployment del servizio Cloud Run utilizzando uno dei seguenti comandi:
Per un nuovo servizio:
gcloud beta run deploy SERVICE_NAME \ --region=REGION \ --image=IMAGE_URL \ --no-iap
Per un servizio esistente:
gcloud beta run services update SERVICE_NAME \ --region=REGION \ --no-iap
Sostituisci quanto segue:
- SERVICE_NAME: il nome del tuo servizio Cloud Run.
- REGION: il nome della tua regione Cloud Run.
- IMAGE_URL: un riferimento all'immagine container, ad
esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Per verificare che il servizio non sia più configurato con IAP abilitato, esegui questo comando:
gcloud beta run services describe SERVICE_NAME
L'output non dovrebbe più contenere la seguente stringa:
Iap Enabled: true
Non stai più instradando tutto il traffico destinato al servizio Cloud Run configurato a IAP per l'autenticazione prima di passarlo al container.
Gestire l'accesso di utenti o gruppi
Per impostazione predefinita, IAP per Cloud Run utilizza identità dell'organizzazione con Account Google. Puoi aggiungere o rimuovere l'accesso a un servizio Cloud Run utilizzando la console Google Cloud o gcloud CLI.
Console
Per aggiungere o rimuovere l'accesso:
Nella console Google Cloud , vai alla pagina Cloud Run:
Fai clic sul servizio esistente che vuoi modificare e poi su Sicurezza.
In IAP, fai clic su Modifica policy.
Per aggiungere l'accesso, inserisci l'entità e, facoltativamente, il livello o i livelli di accesso che vuoi aggiungere.
Per rimuovere l'accesso da un principal esistente, fai clic sull'icona Elimina policy accanto a Livelli di accesso.
Fai clic su Salva.
gcloud
Per aggiungere o rimuovere l'accesso a un servizio Cloud Run per singoli utenti o gruppi all'interno della tua organizzazione, esegui uno dei seguenti comandi:
Per aggiungere l'accesso:
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
Per rimuovere l'accesso:
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
Per visualizzare l'accesso:
gcloud beta iap web get-iam-policy \ --region=REGION \ --resource-type=cloud-run \ --service=SERVICE_NAME
Sostituisci quanto segue:
- USER_EMAIL: l'indirizzo email dell'utente.
- REGION: il nome della tua regione Cloud Run.
- SERVICE_NAME: il nome del tuo servizio Cloud Run.
Risoluzione dei problemi
L'errore del service agent causa l'errore di impostazione di IAM
L'attivazione di IAP su un nuovo progetto per la prima volta può causare il seguente errore:
Setting IAM permissions failed
Ciò è dovuto a un errore dell'agente di servizio Cloud Run. Per risolvere il problema, riabilita IAP o imposta manualmente il criterio IAM.
Passaggi successivi
- Per istruzioni su come abilitare IAP da un servizio di backend o da un bilanciatore del carico, consulta Abilitare IAP per Cloud Run.
- Per problemi relativi all'attivazione di IAP per Cloud Run, vedi Risoluzione degli errori.
- Attivazione di identità esterne.
- Attivazione della configurazione OAuth.
- Gestione dell'accesso alle risorse protette da IAP.
- Utilizzo dei criteri dell'organizzazione per controllare l'attivazione di IAP.