Configurare Identity-Aware Proxy per Cloud Run

Questa pagina descrive come abilitare Identity-Aware Proxy da Cloud Run e proteggere il traffico destinato a un servizio Cloud Run eseguendo il routing 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 IAP da Cloud Run

Puoi abilitare IAP da Cloud Run.

Se utilizzi sia IAP che IAM sullo stesso servizio Cloud Run, tieni presente le seguenti condizioni:

  • Vengono eseguiti sia i controlli IAP che 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

Per abilitare IAP da Cloud Run:

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

    Vai a Cloud Run

  2. Se stai configurando un nuovo servizio di cui stai eseguendo il deployment, seleziona Esegui il deployment del contenitore > Servizio. Se stai configurando ed eseguendo il deployment di un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment della nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio in base alle esigenze, quindi seleziona Autenticazione avanzata con Identity Aware Proxy (IAP).

  4. Se stai configurando e implementando un servizio esistente, fai clic sul servizio e poi seleziona Autenticazione avanzata con Identity Aware Proxy (IAP).

  5. Fai clic su Modifica policy per creare una policy di accesso sensibile al contesto:

    • Aggiungi una o più entità e, facoltativamente, il livello di accesso che ogni entità deve soddisfare per l'accesso all'applicazione.

    • Fai clic su Salva.

  6. Fai clic su Salva.

gcloud

Per abilitare IAP direttamente da Cloud Run, aggiungi il flag --iap quando esegui il deployment dell'app:

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

    • SERVICE_NAME con il nome del tuo servizio Cloud Run.
    • REGION con il nome della tua regione Cloud Run. Ad esempio, europe-west1.
    • IMAGE_URL con 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 ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  2. 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.

Aggiungi il criterio IAM per concedere il ruolo Invoker di Cloud Run (roles/run.invoker) all'agente di servizio IAP. Per saperne di più, vedi Gestire l'accesso alle risorse protette da IAP.

  1. 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
    }
    
  2. Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform.

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

Disabilita IAP da Cloud Run

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

Console

Per disattivare IAP da Cloud Run:

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

    Vai a Cloud Run

  2. Fai clic sul servizio esistente che vuoi modificare.

  3. Fai clic su Sicurezza e poi deseleziona Autenticazione avanzata con Identity Aware Proxy (IAP).

  4. Fai clic su Salva.

gcloud

Per disattivare IAP direttamente da Cloud Run, aggiungi il flag --no-iap durante il deployment dell'app:

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

    • SERVICE_NAME con il nome del tuo servizio Cloud Run.
    • REGION con il nome della tua regione Cloud Run.
    • IMAGE_URL con 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 ha la forma 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 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 Google Cloud CLI.

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 e poi su Sicurezza.

  3. In IAP, fai clic su Modifica policy.

  4. Per aggiungere l'accesso, inserisci l'entità e, facoltativamente, il livello o i livelli di accesso che vuoi aggiungere.

  5. Per rimuovere l'accesso da un principal esistente, fai clic sull'icona Elimina policy accanto a Livelli di accesso.

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

  • USER_EMAIL con l'indirizzo email dell'utente.
  • REGION con il nome della tua regione Cloud Run.
  • SERVICE_NAME con il nome del tuo servizio Cloud Run.

Risoluzione dei problemi

L'errore dell'agente di servizio 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