Controllo dell'accesso con IAM

Per impostazione predefinita, solo i Project Owner e gli editor possono creare, aggiornare, eliminare o richiamare le risorse Cloud Run e solo i Project Owner e gli amministratori di Cloud Run possono modificare le policy di Identity and Access Management (IAM), ad esempio per rendere pubblico un servizio. Per maggiori dettagli, consulta Ruoli IAM di Cloud Run.

Per concedere ad altre entità o gruppi la possibilità di eseguire queste azioni, utilizza IAM per concedere ruoli a diverse entità.

Se hai creato o eseguito il deployment di funzioni utilizzando i comandi gcloud functions o le API Cloud Functions v2 e devi utilizzare queste opzioni per la compatibilità con le versioni precedenti, consulta Controllo degli accessi con IAM.

Ruoli predefiniti di Cloud Run

Rispetto ai ruoli di base (Proprietario, Editor e Visualizzatore), i seguenti ruoli predefiniti hanno controllo dell'accesso più granulare per l'accesso alle risorse Cloud Run:

Ruolo Descrizione
Cloud Run Admin (roles/run.admin) Può creare, aggiornare ed eliminare servizi, job e pool di worker, può ottenere ed elencare le esecuzioni dei job ed eliminarle.
Può richiamare servizi e job, può annullare le esecuzioni dei job.
Può ottenere e impostare policy IAM.
Può visualizzare, applicare e ignorare i suggerimenti.
Richiede una configurazione aggiuntiva per eseguire il deployment dei servizi.
Cloud Run Developer (roles/run.developer) Può creare, aggiornare ed eliminare servizi, job e pool di worker, nonché ottenere, elencare ed eliminare esecuzioni di job.
Può ottenere, ma non impostare, policy IAM.
Può visualizzare, applicare e ignorare i suggerimenti.
Cloud Run Viewer (roles/run.viewer) Può visualizzare servizi, job, esecuzioni di job e pool di worker.
Può ottenere policy IAM.
Può visualizzare i suggerimenti.
Cloud Run Invoker (roles/run.invoker) Può richiamare servizi e job, può annullare le esecuzioni dei job.
Cloud Run Source Developer (roles/run.sourceDeveloper) Può eseguire il deployment e gestire le risorse di cui è stato eseguito il deployment nell'origine Cloud Run.
Cloud Run Builder (roles/run.builder) Può creare funzioni Cloud Run e servizi di cui è stato eseguito il deployment nell'origine.
Cloud Run Service Invoker (roles/run.servicesInvoker) Può richiamare servizi Cloud Run.
Cloud Run Jobs Executor (roles/run.jobsExecutor) Può eseguire e annullare i job Cloud Run.
Cloud Run Jobs Executor With Overrides (roles/run.jobsExecutorWithOverrides) Può eseguire e annullare job Cloud Run con override.

Controlla l'accesso a una singola risorsa Cloud Run

Puoi controllare l'accesso per servizio o per job utilizzando IAM.

Aggiungi entità

Per aggiungere entità a un servizio:

Console

  1. Nella console Cloud de Confiance , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. Fai clic sulla casella di controllo accanto al servizio a cui vuoi aggiungere entità. Non fare clic sul servizio stesso.
  3. Nel riquadro delle informazioni nell'angolo in alto a destra, fai clic sulla scheda Autorizzazioni. Se il riquadro informazioni non è visibile, potresti dover fare clic su Mostra riquadro informazioni, quindi su Autorizzazioni.
  4. Fai clic su Aggiungi entità.
  5. Nel campo Nuove entità, inserisci una o più identità che devono accedere al tuo servizio.
  6. Dal menu a discesa Assegna i ruoli, seleziona uno o più ruoli. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni che concedono.
  7. Fai clic su Salva.

gcloud

Utilizza il seguente comando:

gcloud run services add-iam-policy-binding SERVICE_NAME \
  --member=PRINCIPAL \
  --role=ROLE

Sostituisci quanto segue:

  • SERVICE_NAME: il nome del servizio.
  • PRINCIPAL: il tipo di entità (ad es. user:email@domain.com). Per un elenco dei valori accettabili per PRINCIPAL, consulta Identificatori delle entità.
  • ROLE: il ruolo. Per un elenco dei valori accettabili per ROLE, consulta Ruoli IAM di Cloud Run.

Rimuovi le entità da un ruolo

Per rimuovere le entità da un ruolo per un servizio:

Console

  1. Nella console Cloud de Confiance , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. Fai clic sulla casella di controllo accanto al servizio da cui vuoi rimuovere le entità. Non fare clic sul servizio stesso.
  3. Nel riquadro delle informazioni nell'angolo in alto a destra, fai clic sulla scheda Autorizzazioni. Se il riquadro informazioni non è visibile, potresti dover fare clic su Mostra riquadro informazioni, quindi su Autorizzazioni.
  4. Inserisci l'entità che vuoi rimuovere nel filtro dell'elenco dei ruoli, che mostra tutti i ruoli concessi a quell'entità.
  5. Fai clic sull'icona del cestino Elimina accanto all'entità all'interno del ruolo desiderato per rimuovere il ruolo dall'entità.
  6. Nella finestra di dialogo di conferma, puoi rimuovere l'entità da tutti i ruoli del servizio. Fai clic su Rimuovi per rimuovere l'entità dal ruolo.

gcloud

Utilizza il seguente comando:

gcloud run services remove-iam-policy-binding SERVICE_NAME \
  --member=PRINCIPAL \
  --role=ROLE

Sostituisci quanto segue:

  • SERVICE_NAME: il nome del servizio.
  • PRINCIPAL: il tipo di entità (ad es. user:email@domain.com). Per un elenco dei valori accettabili per PRINCIPAL, consulta Identificatori delle entità.
  • ROLE: il ruolo. Per un elenco dei valori accettabili per ROLE, consulta Ruoli IAM di Cloud Run.

Aggiunta o rimozione collettiva di entità

Per aggiungere o rimuovere in blocco un servizio:

Console

  1. Nella console Cloud de Confiance , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. Fai clic sulla casella di controllo a sinistra del servizio a cui vuoi aggiungere o da cui vuoi rimuovere le entità. Non fare clic sul servizio stesso.
  3. Seleziona il servizio a cui vuoi aggiungere o da cui vuoi rimuovere le entità.
  4. Nel riquadro delle informazioni nell'angolo in alto a destra, fai clic sulla scheda Autorizzazioni. Se il riquadro informazioni non è visibile, potrebbe essere necessario fare clic su Mostra riquadro informazioni, quindi su Autorizzazioni.

Se vuoi aggiungere entità:

  1. Fai clic su Aggiungi entità.
  2. Nel campo Nuove entità, inserisci una o più identità che devono accedere al tuo servizio.
  3. Dal menu Assegna ruoli, seleziona uno o più ruoli. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni che concedono.
  4. Fai clic su Salva.

Se vuoi rimuovere le entità:

  1. Inserisci l'entità che vuoi rimuovere nel filtro dell'elenco dei ruoli, che mostra tutti i ruoli concessi a quell'entità.
  2. Fai clic sull'icona del cestino Elimina nella riga dell'entità.
  3. Nella finestra di dialogo di conferma, puoi rimuovere l'entità da tutti i ruoli del servizio. Fai clic su Rimuovi per rimuovere l'entità dal ruolo.

gcloud

Crea una policy IAM:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        PRINCIPAL
      ]
    }
  ]
}
EOF

Utilizza il comando gcloud run services set-iam-policy:

gcloud run services set-iam-policy SERVICE_NAME policy.json

Per un elenco dei valori accettabili per PRINCIPAL, consulta Identificatori delle entità. Per un elenco dei valori accettabili per ROLE, consulta Ruoli IAM di Cloud Run.

Visualizza entità

Per visualizzare le entità per un servizio:

Console

  1. Nella console Cloud de Confiance , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. Fai clic sulla casella di controllo a sinistra del servizio per cui vuoi visualizzare entità e ruoli. Non fare clic sul servizio stesso.
  3. Seleziona il servizio per cui vuoi visualizzare le entità e i ruoli.
  4. Nel riquadro delle informazioni nell'angolo in alto a destra, fai clic sulla scheda Autorizzazioni. Se il riquadro informazioni non è visibile, potrebbe essere necessario fare clic su Mostra riquadro informazioni, quindi su Autorizzazioni.
  5. Verrà visualizzato l'elenco dei ruoli e delle entità, raggruppati per ruolo concesso.

gcloud

Utilizza il seguente comando:

gcloud run services get-iam-policy SERVICE_NAME

Controlla l'accesso a tutte le risorse Cloud Run in un progetto

Se vuoi concedere ruoli alle entità su tutte le risorse di un progetto, puoi utilizzare IAM a livello di progetto.

Console

  1. Nella console Cloud de Confiance , vai alla pagina IAM:

    Vai a IAM

  2. Trova l'entità a cui vuoi concedere un ruolo a livello di progetto.

  3. Fai clic sull'icona di modifica a forma di matita sul lato destro della riga dell'entità.

  4. Fai clic su Aggiungi un altro ruolo e scegli il ruolo necessario.

  5. Fai clic su Salva.

gcloud

Utilizza il comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=PRINCIPAL \
  --role=ROLE

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Cloud de Confiance.
  • PRINCIPAL: l'entità (ad esempio user:email@domain.com).
  • ROLE: il ruolo (ad esempio roles/run.admin).

I tipi di entità allUsers e allAuthenticatedUsers non possono essere applicati a livello di progetto, ma devono essere aggiunti singolarmente a ogni servizio.

Rendi pubblico un servizio

Esistono due modi per creare un servizio Cloud Run pubblico:

  • Disabilita il controllo IAM di Cloud Run Invoker (opzione consigliata).
  • Assegna il ruolo IAM Invoker di Cloud Run al tipo di membro allUsers.

Ruoli obbligatori

Per disattivare o riattivare il controllo IAM Invoker su un servizio, devi disporre delle seguenti autorizzazioni:

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

Queste autorizzazioni sono incluse nel ruolo Cloud Run Admin (roles/run.admin). Consulta Ruoli IAM di Cloud Run per l'elenco completo dei ruoli e delle relative autorizzazioni.

Disabilita il controllo IAM di Cloud Run Invoker

Il modo consigliato per creare un servizio pubblico è disabilitare il controllo IAM di Cloud Run Invoker. Cloud Run applica questo controllo per impostazione predefinita. Utilizza questa soluzione quando il progetto è soggetto al vincolo di limitazione del dominio in una policy dell'organizzazione.

Per disattivare il controllo:

Console

  1. Nella console Cloud de Confiance by S3NS , 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 Consenti accesso pubblico.

  4. 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 un nuovo servizio, utilizza il comando gcloud run deploy con il flag --no-invoker-iam-check:

    gcloud run deploy SERVICE_NAME --no-invoker-iam-check

    Sostituisci SERVICE_NAME con il nome del servizio.

  • Per un servizio esistente, utilizza il comando gcloud run services update con il flag --no-invoker-iam-check:

    gcloud run services update SERVICE_NAME --no-invoker-iam-check

Sostituisci SERVICE_NAME con il nome del servizio.

YAML

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna l'annotazione run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
        annotations:
          run.googleapis.com/invoker-iam-disabled: 'true'
        name: SERVICE_NAME

    Sostituisci SERVICE_NAME con il nome del tuo servizio Cloud Run.

  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

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

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform:
resource "google_cloud_run_v2_service" "default" {
   name     = "SERVICE"
   location = "REGION"
   invoker_iam_disabled = true

   template {
      containers {
      image = "IMAGE_URL"
      }
   }
}

Sostituisci quanto segue:

  • SERVICE: il nome del servizio Cloud Run.
  • REGION: la regione Cloud de Confiance , 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

Verifica che il controllo sia disabilitato dopo il deployment andando all'endpoint HTTPS del servizio.

Riattiva il controllo IAM di Cloud Run Invoker

Per riattivare il controllo:

Console

  1. Nella console Cloud de Confiance , vai alla pagina Servizi di Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio, quindi sulla scheda Sicurezza.

  3. Seleziona Richiedi autenticazione e seleziona Identity and Access Management (IAM).

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

gcloud

  • Aggiorna il servizio passando il flag --invoker-iam-check:

    gcloud run services update SERVICE_NAME --invoker-iam-check

    Sostituisci SERVICE_NAME con il nome del servizio.

YAML

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna l'annotazione run.googleapis.com/invoker-iam-disabled::

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invoker-iam-disabled: 'false'
        name: SERVICE_NAME

    Sostituisci SERVICE_NAME con il nome del tuo servizio Cloud Run.

Terraform

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

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform:
resource "google_cloud_run_v2_service" "default" {
   name     = "SERVICE"
   location = "REGION"
   invoker_iam_disabled = false

   template {
      containers {
      image = "IMAGE_URL"
      }
   }
}

Sostituisci quanto segue:

  • SERVICE: il nome del servizio Cloud Run.
  • REGION: la regione Cloud de Confiance , 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

Verifica che il controllo sia stato riattivato dopo il deployment andando all'endpoint HTTPS del servizio.

Configura la policy dell'organizzazione per il controllo IAM dell'invoker di Cloud Run

Se sei un amministratore, puoi limitare la possibilità di disabilitare il controllo IAM Invoker utilizzando il vincolo gestito constraints/run.managed.requireInvokerIam. Questo vincolo non viene applicato per impostazione predefinita.

Assegna il ruolo Cloud Run IAM Invoker al tipo di iscrizione allUsers

Puoi consentire l'accesso pubblico a un servizio assegnando il ruolo IAM Invoker di Cloud Run al tipo di membro allUsers.

Devi disporre dell'autorizzazione run.services.setIamPolicy per configurare l'autenticazione su un servizio Cloud Run. Questa autorizzazione è inclusa nel ruolo Amministratore Cloud Run. Consulta Ruoli IAM di Cloud Run per l'elenco completo dei ruoli e delle relative autorizzazioni.

Console

Per un servizio Cloud Run esistente:

  1. Nella console Cloud de Confiance , vai alla pagina Servizi di Cloud Run:

    Vai alla console Cloud de Confiance

  2. A sinistra del servizio che vuoi rendere pubblico, fai clic sulla casella di controllo. Non fare clic sul servizio stesso.

  3. Nel riquadro delle informazioni nell'angolo in alto a destra, fai clic sulla scheda Autorizzazioni. Se il riquadro informazioni non è visibile, potresti dover fare clic su Mostra riquadro informazioni, quindi su Autorizzazioni.

  4. Fai clic su Aggiungi entità.

Nel campo Nuove entità, inserisci il valore allUsers.

  1. Nel menu Seleziona un ruolo, seleziona il ruolo Cloud Run Invoker.

  2. Fai clic su Salva.

  3. Ti verrà chiesto di confermare che vuoi rendere pubblica questa risorsa. Fai clic su Consenti accesso pubblico per applicare la modifica alle impostazioni IAM del servizio.

Per un nuovo servizio che stai creando, crea il servizio e seleziona Consenti accesso pubblico nella sezione Autenticazione per renderlo disponibile pubblicamente. Per rendere privato un servizio, seleziona Richiedi autenticazione.

gcloud

Per rendere un servizio accessibile pubblicamente, utilizza il comando gcloud run services per aggiungere il tipo di membro speciale allUsers a un servizio e concedergli il ruolo roles/run.invoker:

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

Esegui il comando gcloud run deploy per rendere il servizio accessibile pubblicamente quando ne esegui il deployment:

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

Crea un file denominato policy.yaml con i seguenti contenuti:

bindings:
- members:
  - allUsers
  role: roles/run.invoker

Consenti l'accesso pubblico per SERVICE esistente utilizzando:

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

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

Aggiungi quanto segue a una risorsa google_cloud_run_v2_service nella configurazione Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

Per aggiornare l'associazione IAM del servizio per roles/run.invoker, aggiungi la seguente risorsa che fa riferimento al tuo servizio Cloud Run:

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

Questa associazione è autorevole solo per il ruolo specificato. Le altre associazioni IAM all'interno della policy IAM del servizio vengono conservate.

Utilizza le condizioni IAM

Puoi utilizzare le condizioni IAM per definire e applicare controllo dell'accesso condizionale basato su attributi per determinate risorse Cloud Run. Cloud Run supporta gli attributi di condizione (request.host) e (request.path) per concedere l'accesso condizionale quando vengono richiamati i servizi e i pool di worker Cloud Run.

Ad esempio, per concedere l'accesso condizionale con gli attributi request.host e request.path quando richiami i servizi Cloud Run, aggiungi il campo condition quando esegui il seguente comando:

gcloud run services add-iam-policy-binding SERVICE_NAME \
    --member=PRINCIPAL \
    --role=ROLE \
    --region=REGION \
    --condition=[KEY=VALUE,...]

Sostituisci quanto segue:

  • SERVICE_NAME: il nome del servizio (ad esempio, my-service).
  • PRINCIPAL: l'entità (ad esempio, user:email@domain.com).
  • ROLE: il ruolo (ad esempio roles/run.invoker).
  • REGION: la regione (ad esempio, europe-west1).
  • KEY=VALUE: una condizione da includere nell'associazione. Il flag --condition deve includere le coppie chiave-valore expression e title.

Passaggi successivi

Scopri come autenticare in modo sicuro sviluppatori, servizi e utenti per i servizi che hai appena protetto.