Configura IAP per Cloud Run

Questa pagina descrive come abilitare IAP direttamente su un servizio Cloud Run e proteggere il traffico destinato a un servizio Cloud Run instradandolo a IAP per l'autenticazione. Se attivi IAP direttamente su Cloud Run, puoi proteggere il traffico con un solo clic da tutti i percorsi di traffico in entrata, inclusi gli URL run.app e i bilanciatori del carico predefiniti.

Quando integri IAP con Cloud Run, puoi gestire l'accesso di utenti o gruppi nei seguenti modi:

  • All'interno dell'organizzazione: configura l'accesso per gli utenti che appartengono alla stessa organizzazione del tuo servizio Cloud Run
  • All'esterno dell'organizzazione: configura l'accesso per gli utenti che appartengono a organizzazioni diverse da quella del tuo servizio Cloud Run
  • Nessuna organizzazione: configura l'accesso nei progetti che non fanno parte di alcuna organizzazione Google

Limitazioni note

  • Non puoi configurare IAP sia sul bilanciatore del carico sia sul servizio Cloud Run.
  • Cloud Run applica le policy IAP prima di eseguire i controlli IAM sul service account IAP. Poiché IAP intercetta le richieste e sostituisce l'identità del chiamante originale, servizi come Pub/Sub che si basano sulla propria autenticazione potrebbero non riuscire.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per attivare IAP, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Cloud Run Admin (roles/run.admin) sul progetto
  • Concedi l'accesso al servizio abilitato per IAP: IAP Policy Admin (roles/iap.admin) sul progetto
  • Crea un servizio abilitato per IAP o aggiorna un servizio esistente per abilitare IAP:
  • Concedi l'accesso agli utenti che non fanno parte di un'organizzazione Google: Amministratore impostazioni IAP (roles/iap.settingsAdmin) sul progetto
  • Concedi l'accesso agli utenti esterni a un'organizzazione o che non fanno parte di un'organizzazione: OAuth Config Editor (roles/oauthconfig.editor) sul progetto
  • Aggiungi o gestisci i livelli di accesso per l'accesso sensibile al contesto:

Per saperne di più 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.

Abilita IAP da Cloud Run

Ti consigliamo di abilitare IAP direttamente su Cloud Run.

Abilita 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 tuo servizio Cloud Run. Se attivi IAP utilizzando la console Google Cloud , questa autorizzazione viene concessa automaticamente assegnando il ruolo Cloud Run Invoker (roles/run.invoker) all'agente di servizio IAP. Per abilitare IAP da Cloud Run:

  1. Nella console Google Cloud , vai a Cloud Run:

    Vai a Cloud Run

  2. Seleziona Servizi dal menu di navigazione di Cloud Run:

    1. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container e compila la pagina delle impostazioni iniziali del servizio.

    2. Se stai configurando un servizio esistente, fai clic sul servizio, quindi sulla scheda Sicurezza.

  3. Seleziona Richiedi autenticazione, quindi seleziona Identity-Aware Proxy (IAP).

  4. (Facoltativo) Per concedere l'accesso agli utenti, segui le istruzioni per gestire l'accesso di utenti o gruppi per IAP. Se riscontri problemi durante la configurazione dell'accesso per gli utenti esterni alla tua organizzazione, consulta la sezione Risoluzione dei problemi. Per salvare la configurazione, fai clic su Salva.

  5. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

gcloud

Per abilitare IAP direttamente da Cloud Run, aggiungi il flag --iap durante il deployment dell'app e concedi l'autorizzazione Invoker all'agente di servizio IAP:

  1. Esegui il deployment del servizio Cloud Run utilizzando uno dei seguenti comandi:

    Per un nuovo servizio:

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

    Se attivi IAP per la prima volta in un progetto senza un'organizzazione, potresti visualizzare il seguente avviso:

    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.
    

    Questo avviso viene visualizzato perché non puoi creare client OAuth in modo programmatico. Ti consigliamo di attivare prima IAP su Cloud Run direttamente dalla console Google Cloud o di configurare un client OAuth personalizzato, quindi di aggiungere gli utenti utilizzando gcloud CLI.

    Per un servizio esistente:

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

    Sostituisci quanto segue:

    • SERVICE_NAME: il nome del tuo servizio Cloud Run.
    • REGION: il nome della 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 formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PROJECT_NUMBER: il tuo numero di progetto Google Cloud .
  2. Concedi l'autorizzazione Invoker all'agente di servizio 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 regione Cloud Run. Ad esempio, europe-west1.
    • PROJECT_NUMBER: il tuo numero di progetto Google Cloud .
  3. Facoltativo. Per concedere l'accesso agli utenti, consulta Gestisci l'accesso di utenti o gruppi per IAP.

  4. Per verificare che il servizio sia configurato con IAP abilitato, esegui questo comando:

    gcloud run services describe SERVICE_NAME

    L'output dovrebbe contenere la seguente stringa:

    Iap Enabled: true

IAP ora instrada tutto il traffico destinato al servizio Cloud Run configurato a IAP per l'autenticazione prima di passarlo 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 della policy IAM per concedere l'autorizzazione Invoker a IAP.

  1. Aggiungi iap_enabled = true a una risorsa google_cloud_run_v2_service nella configurazione Terraform per abilitare IAP sul servizio:

    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. Aggiungi quanto segue per concedere il ruolo roles/run.invoker all'agente di servizio IAP.

    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"
    }
    

    Sostituisci PROJECT_NUMBER con il numero del progetto.

  3. Facoltativo. Per recuperare i dati della policy IAM corrente, 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
    }
    

Gestisci l'accesso di utenti o gruppi

Per impostazione predefinita, IAP per Cloud Run utilizza un client OAuth gestito da Google che ti consente di aggiungere identità interne all'organizzazione con un indirizzo email associato a un utente. Puoi anche gestire le entità esterne alla tua organizzazione o senza un'organizzazione utilizzando la console Google Cloud in IAP creando un client OAuth personalizzato come descritto nei passaggi seguenti.

Aggiungi o rimuovi l'accesso IAP a un servizio Cloud Run utilizzando la console Google Cloud , gcloud CLI o Terraform.

All'interno dell'organizzazione

Console

Per aggiungere o rimuovere l'accesso:

  1. Nella console Google Cloud , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio esistente che vuoi modificare, quindi su Sicurezza.

  3. In Identity-Aware Proxy (IAP), fai clic su Modifica policy.

  4. Per aggiungere l'accesso, inserisci l'entità e, facoltativamente, il livello di accesso che vuoi aggiungere oppure lascia vuoto il livello di accesso. Per visualizzare e aggiungere livelli di accesso, devi disporre dei ruoli richiesti per Gestore contesto accesso.

  5. Per rimuovere l'accesso quando nella policy è presente una sola entità, fai clic sull'icona Elimina policy accanto a Livelli di accesso.

  6. Per rimuovere singole entità da una policy, fai clic sull'icona X accanto al nome dell'entità che vuoi rimuovere.

  7. Per salvare la configurazione utente, fai clic su Salva.

gcloud

Per aggiungere o rimuovere l'accesso a un servizio Cloud Run per singoli utenti o gruppi, esegui uno dei seguenti comandi:

  • Per aggiungere l'accesso:

    gcloud 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 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 in visualizzazione:

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

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

  • Per concedere l'accesso autoritativo a un elenco di entità:

    Utilizza la risorsa google_iap_web_cloud_run_service_iam_binding per concedere un ruolo a un elenco autorevole di entità. Questa risorsa garantisce che il ruolo venga concesso solo ai membri nell'elenco. Tutte le altre entità a cui è stato concesso il ruolo vengono rimosse.

    1. Aggiungi quanto segue a una risorsa google_iap_web_cloud_run_service_iam_binding nella configurazione Terraform.

      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"
        ]
      }
      

      Sostituisci quanto segue:

      • PROJECT_ID: il nome del progetto.
      • REGION: la regione Google Cloud , ad esempio europe-west1.
      • SERVICE_NAME: il nome del tuo servizio Cloud Run.
      • PRINCIPAL: un identificatore per le entità o i membri, che di solito ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio, user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento per l'associazione delle policy.
  • Per concedere l'accesso a una singola entità:

    Utilizza la risorsa google_iap_web_cloud_run_service_iam_member per concedere un ruolo a una singola entità senza influire su altre entità che potrebbero avere lo stesso ruolo.

    1. Aggiungi quanto segue a una risorsa google_iap_web_cloud_run_service_iam_member nella configurazione Terraform.

      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>
      

      Sostituisci quanto segue:

      • PROJECT_ID: il nome del progetto.
      • REGION: la regione Google Cloud , ad esempio europe-west1.
      • SERVICE_NAME: il nome del tuo servizio Cloud Run.
      • PRINCIPAL: un identificatore per le entità o i membri, che di solito ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio, user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento per l'associazione delle policy.

Esterno all'organizzazione

Console

  • Per aggiungere utenti esterni alla tua organizzazione utilizzando IAP, completa la seguente procedura di configurazione una tantum:

    1. Nella console Google Cloud , vai alla pagina Cloud Run:

      Vai a Cloud Run

    2. Fai clic sul servizio esistente che vuoi modificare, quindi su Sicurezza.

    3. Nella pagina dei dettagli di sicurezza del servizio Cloud Run, in IAP, fai clic su Modifica policy.

    4. Fai clic su Configura in IAP. Si apre la pagina delle impostazioni della risorsa in IAP.

    5. Fai clic su Configura la schermata per il consenso per configurare la schermata per il consenso OAuth. Per il tipo di pubblico, seleziona Esterno.

    6. Per una configurazione più rapida, fai clic su Genera automaticamente le credenziali.

    7. In alternativa, segui le istruzioni per creare un ID client OAuth. Seleziona OAuth personalizzato e inserisci l'ID client e il secret personalizzati.

    8. Per salvare la configurazione, fai clic su Salva.

    Ora puoi tornare al tuo servizio Cloud Run in Cloud Run per aggiungere entità esterne all'organizzazione.

  • Per aggiungere o rimuovere l'accesso degli utenti, completa i seguenti passaggi:

    1. Nella console Google Cloud , vai alla pagina Cloud Run:

      Vai a Cloud Run

    2. Fai clic sul servizio esistente che vuoi modificare, quindi su Sicurezza.

    3. In IAP, fai clic su Modifica policy.

    4. Per aggiungere l'accesso, inserisci l'entità e, facoltativamente, il livello di accesso che vuoi aggiungere oppure lascia vuoto il livello di accesso. Per visualizzare e aggiungere livelli di accesso, devi disporre dei ruoli richiesti per Gestore contesto accesso.

    5. Per rimuovere l'accesso quando nella policy è presente una sola entità, fai clic sull'icona Elimina policy accanto a Livelli di accesso.

    6. Per rimuovere singole entità da una policy, fai clic sull'icona X accanto al nome dell'entità che vuoi rimuovere.

    7. Per salvare la configurazione utente, fai clic su Salva.

gcloud

Prima di iniziare

Per aggiungere o rimuovere l'accesso a un servizio Cloud Run per singoli utenti o gruppi, esegui uno dei seguenti comandi:

  • Per aggiungere l'accesso:

    gcloud 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 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 in visualizzazione:

    gcloud 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 regione Cloud Run.
  • SERVICE_NAME: il nome del tuo servizio Cloud Run.

Terraform

Prima di iniziare

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

  • Per concedere l'accesso autoritativo a un elenco di entità:

    Utilizza la risorsa google_iap_web_cloud_run_service_iam_binding per concedere un ruolo a un elenco autorevole di entità. Questa risorsa garantisce che il ruolo venga concesso solo ai membri nell'elenco. Tutte le altre entità a cui è stato concesso il ruolo vengono rimosse.

    1. Aggiungi quanto segue a una risorsa google_iap_web_cloud_run_service_iam_binding nella configurazione Terraform.

      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"
        ]
      }
      

      Sostituisci quanto segue:

      • PROJECT_ID: il nome del progetto.
      • REGION: la regione Google Cloud , ad esempio europe-west1.
      • SERVICE_NAME: il nome del tuo servizio Cloud Run.
      • PRINCIPAL: un identificatore per le entità o i membri, che di solito ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio, user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento Policy Binding.
  • Per concedere l'accesso a una singola entità:

    Utilizza la risorsa google_iap_web_cloud_run_service_iam_member per concedere un ruolo a una singola entità senza influire su altre entità che potrebbero avere lo stesso ruolo.

    1. Aggiungi quanto segue a una risorsa google_iap_web_cloud_run_service_iam_member nella configurazione Terraform.

      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>
      

      Sostituisci quanto segue:

      • PROJECT_ID: il nome del progetto.
      • REGION: la regione Google Cloud , ad esempio europe-west1.
      • SERVICE_NAME: il nome del tuo servizio Cloud Run.
      • PRINCIPAL: un identificatore per le entità o i membri, che di solito ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio, user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento per l'associazione delle policy.

Nessuna organizzazione

Console

Per aggiungere o rimuovere l'accesso:

  1. Nella console Google Cloud , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio esistente che vuoi modificare, quindi su Sicurezza.

  3. In IAP, fai clic su Modifica policy.

  4. Per aggiungere l'accesso, inserisci l'entità e, facoltativamente, il livello di accesso che vuoi aggiungere oppure lascia vuoto il livello di accesso. Per visualizzare e aggiungere livelli di accesso, devi disporre dei ruoli richiesti per Gestore contesto accesso.

  5. Per rimuovere l'accesso quando nella policy è presente una sola entità, fai clic sull'icona Elimina policy accanto a Livelli di accesso.

  6. Per rimuovere singole entità da una policy, fai clic sull'icona X accanto al nome dell'entità che vuoi rimuovere.

  7. Per salvare la configurazione utente, fai clic su Salva.

gcloud

Prima di iniziare

Per aggiungere o rimuovere l'accesso a un servizio Cloud Run per singoli utenti o gruppi, esegui uno dei seguenti comandi:

  • Per aggiungere l'accesso:

    gcloud 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 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 in visualizzazione:

    gcloud 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 regione Cloud Run.
  • SERVICE_NAME: il nome del tuo servizio Cloud Run.

Terraform

Prima di iniziare

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

  • Per concedere l'accesso autoritativo a un elenco di entità:

    Utilizza la risorsa google_iap_web_cloud_run_service_iam_binding per concedere un ruolo a un elenco autorevole di entità. Questa risorsa garantisce che il ruolo venga concesso solo ai membri nell'elenco. Tutte le altre entità a cui è stato concesso il ruolo vengono rimosse.

    1. Aggiungi quanto segue a una risorsa google_iap_web_cloud_run_service_iam_binding nella configurazione Terraform.

      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"
        ]
      }
      

      Sostituisci quanto segue:

      • PROJECT_ID: il nome del progetto.
      • REGION: la regione Google Cloud , ad esempio europe-west1.
      • SERVICE_NAME: il nome del tuo servizio Cloud Run.
      • PRINCIPAL: un identificatore per le entità o i membri, che di solito ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio, user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento per l'associazione delle policy.
  • Per concedere l'accesso a una singola entità:

    Utilizza la risorsa google_iap_web_cloud_run_service_iam_member per concedere un ruolo a una singola entità senza influire su altre entità che potrebbero avere lo stesso ruolo.

    1. Aggiungi quanto segue a una risorsa google_iap_web_cloud_run_service_iam_member nella configurazione Terraform.

      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>
      

      Sostituisci quanto segue:

      • PROJECT_ID: il nome del progetto.
      • REGION: la regione Google Cloud , ad esempio europe-west1.
      • SERVICE_NAME: il nome del tuo servizio Cloud Run.
      • PRINCIPAL: un identificatore per le entità o i membri, che di solito ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio, user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento per l'associazione delle policy.

Disabilita IAP da Cloud Run

Puoi disattivare IAP utilizzando la console Google Cloud o gcloud CLI.

Console

Per disattivare IAP da Cloud Run, segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. Seleziona il servizio da modificare.

  3. Fai clic sulla scheda Sicurezza.

  4. Deseleziona Identity-Aware Proxy (IAP). Il tuo servizio è protetto dalla policy IAM. Tuttavia, se non utilizzi IAM, rendi il servizio accessibile pubblicamente selezionando Consenti accesso pubblico.

  5. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche.

gcloud

Per disabilitare IAP direttamente da Cloud Run, aggiungi il flag --no-iap quando esegui il deployment dell'app come segue:

  1. Esegui il deployment del servizio Cloud Run utilizzando uno dei seguenti comandi:

    Per un nuovo servizio:

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

    Per un servizio esistente:

    gcloud 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 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 formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  2. Per verificare che il servizio non sia più configurato con IAP abilitato, esegui questo comando:

    gcloud run services describe SERVICE_NAME

    L'output non deve più contenere la seguente stringa:

    Iap Enabled: true

IAP non esegue più il routing di tutto il traffico destinato al servizio Cloud Run configurato verso IAP per l'autenticazione prima di passarlo al container.

Configura un client OAuth personalizzato

Ti consigliamo di utilizzare la console Google Cloud quando attivi IAP per la prima volta. In questo modo, puoi generare automaticamente le credenziali per evitare di dover creare manualmente un client OAuth personalizzato. Quando abiliti IAP su Cloud Run direttamente dalla console Google Cloud , IAP configura automaticamente il client OAuth personalizzato a livello di progetto.

Se utilizzi gcloud CLI per gestire l'accesso degli utenti senza un'organizzazione, abilita IAP su Cloud Run direttamente dalla console Google Cloud o segui i passaggi descritti in questa sezione per creare manualmente un client OAuth personalizzato.

Per scenari avanzati, come la personalizzazione della schermata per il consenso o la gestione dei client OAuth a livello di organizzazione, segui questi passaggi.

Configura il brand

  1. Nella console Google Cloud , vai alla pagina Branding OAuth:

    Vai a Branding

  2. Fai clic su Inizia.

  3. Compila il modulo Informazioni sull'app e fai clic su Avanti.

  4. In Pubblico, seleziona Esterno.

  5. Compila il resto del modulo e fai clic su Crea.

Crea manualmente un client OAuth personalizzato

  • Se è la prima volta che configuri Google Auth Platform:

    1. Nella console Google Cloud , vai alla pagina Client:

      Vai a Client

    2. Se richiesto, fai clic su Inizia nella pagina di riepilogo della piattaforma di autenticazione di Google.

      1. Compila i dettagli delle informazioni sull'app e fai clic su Avanti.
      2. Seleziona Esterno per il tipo di pubblico.
      3. Compila i dati di contatto, accetta i termini e poi fai clic su Crea.
      4. Fai clic su Crea client.
      5. In Tipo di applicazione, seleziona Applicazione web e compila il nome del client OAuth.
      6. Fai clic su Crea.
      7. Prendi nota dell'ID client e del client secret e fai clic su Ok.
      8. Fai clic sul nome del client OAuth appena creato per modificarlo.
      9. Nel campo URI di reindirizzamento autorizzati, aggiungi il seguente URI:
        https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
        Sostituisci CLIENT_ID con l'ID client OAuth appena generato.
      10. Fai clic su Salva.
  • Se hai già configurato Google Auth Platform:

    1. Nella console Google Cloud , vai alla pagina Client:

      Vai a Client

    2. Fai clic su Crea client.

    3. In Tipo di applicazione, seleziona Applicazione web e compila il nome del client OAuth.

    4. Compila i dettagli delle informazioni sull'app.

    5. Fai clic su Crea.

    6. Prendi nota dell'ID client e del client secret e fai clic su Ok.

    7. Fai clic sul nome del client OAuth appena creato per modificarlo.

    8. Nel campo URI di reindirizzamento autorizzati, aggiungi il seguente URI:

      https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
      Sostituisci CLIENT_ID con l'ID client OAuth appena generato.

    9. Fai clic su Salva.

Applica il client OAuth a IAP

Puoi applicare il client OAuth a livello di progetto o organizzazione.

  • A livello di progetto, segui questi passaggi:

    1. Crea un file denominato iap_settings.yaml e aggiungi i seguenti contenuti:

      access_settings:
        oauth_settings:
          client_id: CLIENT_ID
          client_secret: CLIENT_SECRET
    2. Esegui il comando gcloud iap settings set per applicare il client OAuth a livello di progetto:

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

    Sostituisci quanto segue:

    • CLIENT_ID: l'ID client OAuth salvato nel passaggio precedente.
    • CLIENT_SECRET: il secret salvato nel passaggio precedente.
    • PROJECT_ID: l'ID progetto.
  • A livello di organizzazione, segui questi passaggi:

    1. Per applicare il client OAuth a livello di organizzazione, esegui il comando gcloud iap settings set:

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

      Sostituisci quanto segue:

      • CLIENT_ID: l'ID client OAuth salvato nel passaggio precedente.
      • CLIENT_SECRET: il secret salvato nel passaggio precedente.
      • ORGANIZATION_NUMBER: il numero della tua organizzazione.

Risoluzione dei problemi

La sezione seguente descrive come risolvere i problemi di IAP con Cloud Run.

Errori di accesso esterno all'organizzazione

Di seguito sono riportati gli errori che potresti riscontrare durante la configurazione dell'accesso per gli utenti esterni alla tua organizzazione.

Accesso utente esterno all'organizzazione: disattivato

Per assicurarti che l'accesso esterno all'organizzazione sia disattivato, ti consigliamo di disattivarlo a livello di progetto. I controlli ad altri livelli (servizio, cartella o organizzazione) potrebbero apparire disabilitati, anche se l'accesso è disponibile.

Al momento, il brand è impostato su "interno"

L'accesso esterno all'organizzazione non è supportato quando il brand del client OAuth personalizzato è impostato su interno.

Per aggiornare le impostazioni relative ai brand su "esterno" e abilitare l'accesso per le entità esterne all'organizzazione con IAP, completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Pubblico della piattaforma di autenticazione di Google:

    Vai a Pubblico

  2. In Tipo di utente, fai clic su Rendi esterno.

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

Questo perché l'agente di servizio Cloud Run non è riuscito. Per risolvere il problema, attiva nuovamente IAP o imposta manualmente la policy IAM.

Passaggi successivi