Controllo dell'accesso con IAM

Per impostazione predefinita, solo i proprietari e gli editor dei progetti possono creare, aggiornare, eliminare o invocare servizi e job e solo i proprietari dei progetti e gli amministratori di Cloud Run possono modificare i criteri IAM (Identity and Access Management), ad esempio per rendere pubblico un servizio. Per maggiori dettagli, consulta Ruoli IAM di Cloud Run.

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

Ruoli predefiniti di Cloud Run

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

Ruolo Descrizione
Amministratore di Cloud Run (roles/run.admin) Può creare, aggiornare ed eliminare servizi e job, nonché recuperare, elencare ed eliminare le esecuzioni dei job.
Può invocare servizi e job, nonché annullare le esecuzioni dei job.
Può recuperare e impostare i criteri IAM.
Può visualizzare, applicare e ignorare i consigli.
Richiede una configurazione aggiuntiva per eseguire il deployment dei servizi.
Cloud Run Developer (roles/run.developer) Può creare, aggiornare ed eliminare servizi e job, nonché recuperare, elencare ed eliminare le esecuzioni dei job.
Può recuperare, ma non impostare i criteri IAM.
Può visualizzare, applicare e ignorare i consigli.
Visualizzatore di Cloud Run (roles/run.viewer) Può visualizzare servizi, job ed esecuzioni di job.
Può ottenere criteri IAM.
Può visualizzare i consigli.
Invoker di Cloud Run (roles/run.invoker) Può richiamare servizi e job, può annullare le esecuzioni dei job.

Controllare l'accesso a un singolo servizio o job

Puoi controllare l'accesso in base a servizio o job utilizzando IAM.

Rendere pubblico un servizio

Questa opzione è per un servizio Cloud Run che è un'API o un sito web pubblici.

Puoi consentire chiamate non autenticate a un servizio assegnando il ruolo IAM Invoker di Cloud Run al tipo di membro allUsers.

Per configurare l'autenticazione su un servizio Cloud Run, devi disporre dell'autorizzazione run.services.setIamPolicy. Questa autorizzazione è inclusa nei ruoli Proprietario e Amministratore di Cloud Run. Consulta Ruoli IAM di Cloud Run per l'elenco completo dei ruoli e delle relative autorizzazioni associate.

Interfaccia utente della console

Per un servizio Cloud Run esistente:

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del servizio che vuoi rendere pubblico. (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 delle informazioni non è visibile, potresti dover fare clic su Mostra riquadro informazioni e poi su Autorizzazioni.

  4. Fai clic su Aggiungi entità.

Nel campo Nuove entità, inserisci il valore allUsers

  1. Dal menu a discesa Ruolo, seleziona il ruolo Cloud Run Invoker.

  2. Fai clic su Salva.

  3. Ti verrà chiesto di verificare di voler 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, ma assicurati di selezionare Consenti chiamate non autenticate nella scheda Autenticazione per renderlo disponibile pubblicamente. Se selezioni Richiedi l'autenticazione, il servizio diventerà privato.

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 pubblicamente accessibile quando 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 le chiamate non autenticate per l'SERVICE esistente utilizzando:

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

Terraform

Per creare un servizio Cloud Run, aggiungi quanto segue al file main.tf esistente:

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 il vincolo 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 del criterio IAM del servizio vengono conservate.

Condivisione limitata per i domini

Se il progetto è soggetto al vincolo di condivisione limitata per i domini in un criterio dell'organizzazione, non potrai creare servizi pubblici per impostazione predefinita. Puoi utilizzare i tag e i criteri condizionali per esentare servizi specifici da questo vincolo. Per maggiori dettagli, consulta il post del blog sulla creazione di servizi Cloud Run pubblici quando viene applicata la condivisione con restrizioni del dominio.

Aggiungi entità

Puoi aggiungere entità a un job o a un servizio.

Aggiungere entità a un servizio

Per aggiungere entità a un servizio:

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo accanto al servizio a cui vuoi aggiungere i principali. (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 delle informazioni non è visibile, potresti dover fare clic su Mostra riquadro informazioni e poi 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. Nel menu a discesa Ruolo, 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 comando gcloud run services add-iam-policy-binding:

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

dove SERVICE_NAME è il nome del servizio, MEMBER_TYPE è il tipo di entità (ad es. user:email@domain.com) e ROLE è il ruolo.

Per un elenco dei valori accettabili per MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettabili per ROLE, consulta Ruoli Cloud IAM di Cloud Run.

Aggiungere entità a un job

Per aggiungere entità a un job:

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del job a cui vuoi aggiungere i principali. Non fare clic sul job stesso.

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

  4. Fai clic su Aggiungi entità.

  5. Nella casella di testo Nuove entità, inserisci una o più identità che devono avere accesso al tuo job.

  6. Nel menu a discesa Ruolo, 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 comando gcloud run jobs add-iam-policy-binding:

gcloud run jobs add-iam-policy-binding JOB_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

dove JOB_NAME è il nome del job, MEMBER_TYPE è il tipo di entità (ad es. user:email@domain.com) e ROLE è il ruolo.

Per un elenco dei valori accettabili per MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettabili per ROLE, consulta Ruoli Cloud IAM di Cloud Run.

Rimuovere le entità da un ruolo

Puoi rimuovere i principali da un servizio o da un job.

Rimuovere le entità da un ruolo per un servizio

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

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del servizio da cui vuoi rimuovere i principali. (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 delle informazioni non è visibile, potresti dover fare clic su Mostra riquadro informazioni e poi su Autorizzazioni.

  4. Inserisci l'entità che vuoi rimuovere nel filtro dell'elenco dei ruoli, che visualizza tutti i ruoli concessi a quell'entità.

  5. Fai clic sul cestino Elimina accanto all'entità nel ruolo desiderato per rimuoverlo dall'entità.

  6. Nella finestra di dialogo di conferma, hai la possibilità di rimuovere l'entità da tutti i ruoli del servizio. Fai clic su Rimuovi per rimuovere il principale dal ruolo.

gcloud

Utilizza il comando gcloud run services remove-iam-policy-binding:

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

dove SERVICE_NAME è il nome del servizio, MEMBER_TYPE è il tipo di entità (ad es. user:email@domain.com) e ROLE è il ruolo.

Per un elenco dei valori accettabili per MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettabili per ROLE, consulta Ruoli Cloud IAM di Cloud Run.

Rimuovere le entità da un ruolo per un job

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

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del job a cui vuoi aggiungere i principali. Non fare clic sul job stesso.

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

  4. Inserisci l'entità che vuoi rimuovere nel filtro dell'elenco dei ruoli, che visualizza tutti i ruoli concessi a quell'entità.

  5. Fai clic sul cestino Elimina accanto all'entità nel ruolo desiderato per rimuoverlo dall'entità.

  6. Nella finestra di dialogo di conferma, hai la possibilità di rimuovere l'entità da tutti i ruoli del job. Fai clic su Rimuovi per rimuovere il principale dal ruolo.

gcloud

Utilizza il comando gcloud run jobs remove-iam-policy-binding:

  gcloud run jobs remove-iam-policy-binding JOB_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

dove JOB_NAME è il nome del job, MEMBER_TYPE è il tipo di entità (ad es. user:email@domain.com) e ROLE è il ruolo.

Per un elenco dei valori accettabili per MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettabili per ROLE, consulta Ruoli Cloud IAM di Cloud Run.

Aggiunta o rimozione collettiva di principali

Puoi eseguire un'aggiunta o una rimozione collettiva per i servizi e i job.

Aggiunta e rimozione collettive di principali per i servizi

Per aggiungere o rimuovere più elementi contemporaneamente per un servizio:

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del servizio a cui vuoi aggiungere o rimuovere i principali. (non fare clic sul servizio stesso).

  3. Seleziona il servizio a cui vuoi aggiungere o rimuovere entità.

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

Se vuoi aggiungere entità:

  1. Fai clic su Aggiungi entità.

  2. Nella casella di testo Nuove entità, inserisci una o più identità che devono accedere al tuo servizio.

  3. Nel menu a discesa Ruolo, 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 visualizza tutti i ruoli concessi a quell'entità.

  2. Fai clic sul cestino Elimina accanto all'entità nel ruolo desiderato per rimuoverlo dall'entità.

  3. Nella finestra di dialogo di conferma, hai la possibilità di rimuovere l'entità da tutti i ruoli del servizio. Fai clic su Rimuovi per rimuovere il principale dal ruolo.

gcloud

Crea un criterio IAM:

cat <<EOF > policy.json
{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}
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 MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettabili per ROLE, consulta Ruoli Cloud IAM di Cloud Run.

Aggiunta e rimozione collettiva dei principali per i job

Per aggiungere o rimuovere in blocco gli elementi di un job:

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del job a cui vuoi aggiungere i principali. Non fare clic sul job stesso.

  3. Seleziona il job a cui vuoi aggiungere o rimuovere entità.

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

Se vuoi aggiungere entità:

  1. Fai clic su Aggiungi entità.

  2. Nella casella di testo Nuove entità, inserisci una o più identità che devono accedere al tuo servizio.

  3. Nel menu a discesa Ruolo, 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 visualizza tutti i ruoli concessi a quell'entità.

  2. Fai clic sul cestino Elimina accanto all'entità nel ruolo desiderato per rimuoverlo dall'entità.

  3. Nella finestra di dialogo di conferma, hai la possibilità di rimuovere l'entità da tutti i ruoli del job. Fai clic su Rimuovi per rimuovere il principale dal ruolo.

gcloud

Crea un criterio IAM:

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

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

gcloud run jobs set-iam-policy JOB_NAME policy.json

Per un elenco dei valori accettabili per MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettabili per ROLE, consulta Ruoli Cloud IAM di Cloud Run.

Visualizza entità

Puoi visualizzare le entità per i servizi e i job.

Visualizzare i principali per un servizio

Per visualizzare le entità per un servizio:

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del servizio per visualizzare i principali e i ruoli. (non fare clic sul servizio stesso).

  3. Seleziona il servizio che vuoi visualizzare per gli amministratori e i ruoli.

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

  5. Verrà visualizzato l'elenco dei ruoli e delle entità, raggruppati per ruolo concesso.

gcloud

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

gcloud run services get-iam-policy SERVICE_NAME

Visualizzare i principali per un job

Per visualizzare i principali per un job:

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del job a cui vuoi aggiungere i principali. Non fare clic sul job stesso.

  3. Seleziona il job che vuoi visualizzare per gli entità e i ruoli.

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

  5. Verrà visualizzato l'elenco dei ruoli e delle entità, raggruppati per ruolo concesso.

gcloud

Utilizza il comando gcloud run jobs get-iam-policy:

gcloud run jobs get-iam-policy JOB_NAME

Controllare l'accesso a tutti i servizi e i job di un progetto

Se vuoi concedere ruoli alle entità su tutti i servizi e i job di un progetto, puoi utilizzare IAM a livello di progetto.

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

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

  3. Fai clic sulla Matita di modifica sul lato destro della riga del preside.

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

  5. Fai clic su Salva.

gcloud

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

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

dove MEMBER_TYPE è il tipo di entità (ad es. user:email@domain.com) e ROLE è il ruolo (ad es. roles/run.admin).

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

Disattivare Cloud Run Invoker per i servizi

Puoi disattivare o riattivare il controllo IAM Invoker di Cloud Run per qualsiasi servizio Cloud Run. Il controllo viene applicato per impostazione predefinita.

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

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

Queste autorizzazioni sono incluse nei ruoli Proprietario e Amministratore di Cloud Run. Consulta Ruoli IAM di Cloud Run per l'elenco completo dei ruoli e delle relative autorizzazioni associate.

Disattivare il controllo IAM dell'invoker Cloud Run

  1. Ignora il vincolo dei criteri dell'organizzazione constraints/run.requireInvokerIam a livello di organizzazione o di progetto, se necessario. Puoi utilizzare i tag per impostare regole più granulari per determinati servizi Cloud Run.

    Per rimuovere la limitazione delle norme dalla console Google Cloud:

    1. Vai a IAM

    2. Fai clic sulla scheda Norme dell'organizzazione.

    3. Individua il criterio Consenti esecuzione di codice IAM disabilitata (Cloud Run) e seleziona Modifica criterio dal menu Azioni.

    4. Assicurati che il criterio sia configurato su Non applicato.

    5. Fai clic su Imposta criterio.

  2. Disattiva il controllo:

    Console

    1. Vai a Cloud Run

    2. Fai clic su Crea servizio se stai configurando un nuovo servizio, quindi compila la pagina delle impostazioni iniziali del servizio in base alle tue esigenze. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Sicurezza.

    3. Deseleziona Utilizza Cloud IAM per autenticare le richieste in entrata.

    4. Fai clic su Crea o Salva.

    gcloud

    • Utilizza il flag --no-invoker-iam-check:

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

      dove SERVICE_NAME è 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

      dove SERVICE_NAME è il nome del servizio Cloud Run.

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

      gcloud run services replace service.yaml

Verifica che il controllo sia disattivato dopo il deployment accedendo all'endpoint HTTPS del servizio.

Riattivare il controllo IAM dell'invoker Cloud Run

Per riattivare il controllo:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio e poi su Sicurezza.

  3. Seleziona Utilizza Cloud IAM per autenticare le richieste in entrata.

  4. Fai clic su Salva.

gcloud

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

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

    dove SERVICE_NAME è 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/invokerIamCheckDisabled::

    apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
        annotations:
           run.googleapis.com/invokerIamCheckDisabled: false
        name: SERVICE_NAME

    dove SERVICE_NAME è il nome del servizio Cloud Run.

Verifica che il controllo venga riattivato dopo il deployment accedendo all'endpoint HTTPS del servizio.

Passaggi successivi

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