Controllo dell'accesso con IAM

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Per impostazione predefinita, solo i proprietari e gli editor del progetto possono creare, aggiornare, eliminare o richiamare i servizi e solo i proprietari del progetto e gli amministratori di Cloud Run possono modificare i criteri di Identity and Access Management (IAM), ad esempio rendere pubblico un servizio. Scopri di più sui ruoli IAM di Cloud Run.

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

Controllare l'accesso su un singolo servizio

Se vuoi controllare l'accesso in base al servizio, puoi utilizzare IAM per servizio.

Rendere pubblico un servizio

Devi avere l'autorizzazione run.services.setIamPolicy per configurare l'autenticazione in un servizio Cloud Run. Questa autorizzazione è inclusa nei ruoli Proprietario e Amministratore Cloud Run. Consulta Ruoli IAM di Cloud Run per l'elenco completo dei ruoli e le relative autorizzazioni associate.

Interfaccia utente della console

Per un servizio Cloud Run esistente:

  1. Vai alla console Google Cloud:

    Vai a Google Cloud Console

  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 quindi su Autorizzazioni.

  4. Fai clic su Aggiungi entità.

Nella casella di testo Nuove entità, inserisci il valore allUsers

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

  2. Fai clic su Salva.

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

gcloud

Puoi rendere un servizio accessibile pubblicamente aggiungendo il tipo speciale allUsers membro a un servizio e concedendogli il ruolo roles/run.invoker:

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

Inoltre, quando esegui il deployment del tuo servizio con il comando gcloud run deploy, puoi specificare se rendere il servizio accessibile pubblicamente:

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

Terraform

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

resource "google_cloud_run_service" "default" {
  name     = "cloud-run-srv"
  location = "us-central1"

  template {
    spec {
      containers {
        image = "gcr.io/cloudrun/hello"
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }
}

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_service.default.location
  service  = google_cloud_run_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

Questa associazione è autorevole solo per il ruolo specificato. Altre associazioni IAM all'interno del criterio IAM del servizio vengono mantenute.

Condivisione limitata dei domini

Se il progetto è soggetto al vincolo di condivisione limitata nel dominio in un criterio dell'organizzazione, non potrai creare servizi pubblici. Google consiglia di creare tutti i progetti in una cartella non soggetta a questa limitazione e di rimuoverli dai progetti esistenti ripristinando il vincolo predefinito sul progetto.

Aggiungi entità

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai a Google Cloud Console

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

  4. Fai clic su Aggiungi entità.

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

  6. Dal menu a discesa Ruolo, seleziona uno o più ruoli I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni concesse.

  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 principale (ad esempio user:email@domain.com) e ROLE è il ruolo.

Per un elenco dei valori accettati per MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettati per ROLE, consulta i ruoli IAM di Cloud Run.

Rimuovi entità da un ruolo

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai a Google Cloud Console

  2. Fai clic sulla casella di controllo a sinistra del servizio da cui vuoi rimuovere i provider. (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 quindi su Autorizzazioni.

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

  5. Fai clic sul cestino elimina accanto all'entità all'interno del ruolo desiderato per rimuovere il ruolo dall'entità.

  6. Nella finestra di dialogo di conferma, hai la possibilità di rimuovere tale entità da tutti i ruoli nel servizio. Fai clic su Rimuovi per rimuovere l'entità 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 principale (ad esempio user:email@domain.com) e ROLE è il ruolo.

Per un elenco dei valori accettati per MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettati per ROLE, consulta i ruoli IAM di Cloud Run.

Aggiunta o rimozione collettiva delle entità

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai a Google Cloud Console

  2. Fai clic sulla casella di controllo a sinistra del servizio a cui vuoi aggiungere entità o da cui vuoi rimuovere le entità. (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 quindi 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. Dal menu a discesa Ruolo, seleziona uno o più ruoli. I ruoli selezionati vengono visualizzati nel riquadro con una breve descrizione delle autorizzazioni concesse.

  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 tale entità.

  2. Fai clic sul cestino elimina accanto all'entità all'interno del ruolo desiderato per rimuovere il ruolo dall'entità.

  3. Nella finestra di dialogo di conferma, hai la possibilità di rimuovere tale entità da tutti i ruoli nel servizio. Fai clic su Rimuovi per rimuovere l'entità 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 accettati per MEMBER_TYPE, consulta la pagina dei concetti IAM. Per un elenco dei valori accettati per ROLE, consulta i ruoli IAM di Cloud Run.

Visualizza entità

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai a Google Cloud Console

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

  3. Seleziona il servizio che vuoi visualizzare per le 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 quindi 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

Controlla l'accesso su tutti i servizi di un progetto

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

Interfaccia utente della console

  1. Vai alla console Google Cloud:

    Vai a Google Cloud Console

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

  3. Fai clic sulla modifica Matita a destra della riga dell'entità.

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

  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 principale (ad esempio user:email@domain.com) e ROLE è il ruolo (ad esempio roles/run.admin).

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

Passaggi successivi

Scopri come autenticare sviluppatori, servizi e utenti ai servizi appena protetti.