Controllo dell'accesso con IAM

Questa pagina fornisce informazioni supplementari sull'utilizzo dei ruoli Identity and Access Management (IAM) per impostare i controlli dell'accesso a livello di progetto, per determinare il livello di accesso al tuo progetto Google Cloud e alle funzioni create utilizzando i comandi gcloud functions o l'API Cloud Functions v2.

Se hai creato o eseguito il deployment di funzioni utilizzando Cloud Run, consulta Controllo dell'accesso con IAM e Ruoli Cloud Run per una descrizione dettagliata dei ruoli predefiniti di Cloud Run, che controllano l'accesso ai singoli servizi, rendono pubblico un servizio o configurano la policy dell'organizzazione per l'invoker IAM di Cloud Run.

Controllo dell'accesso per gli utenti

Aggiungi utenti come membri del team al tuo progetto e concedi loro ruoli utilizzando IAM.

Cloud Run Functions supporta i ruoli seguenti:

Controllo dell'accesso per i service account

Un service account è un tipo speciale di accountGoogle Cloud che funge da identità per un utente non umano che deve autenticarsi ed essere autorizzato ad accedere ai dati ed eseguire varie azioni. Alcuni di questi account sono creati e gestiti da Google e sono noti come service agent.

Per Cloud Run Functions vengono utilizzati i seguenti service account:

Nome ID membro Ruolo
Service account Compute Engine predefinito PROJECT_NUMBER-compute@developer.gserviceaccount.com Editor
Service agent Google Cloud Functions service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com Service agent Google Cloud Functions
Service account Cloud Build legacy1 PROJECT_NUMBER@cloudbuild.gserviceaccount.com Service account Cloud Build
Service account Cloud Build service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com Service agent Cloud Build
Service agent Google Container Registry service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com Service agent Container Registry
Service agent Artifact Registry service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com Service agent Artifact Registry

Service account di runtime

In fase di runtime, Cloud Run Functions utilizza per impostazione predefinita il service account predefinito di Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com), che dispone del ruolo Editor nel progetto. Puoi modificare i ruoli di questi service account per limitare o estendere le autorizzazioni per le funzioni in esecuzione. Puoi anche modificare il service account utilizzato evitando quello predefinito durante la configurazione dell'identità del servizio.

Per saperne di più sui service account, consulta la documentazione sui service account.

Service account amministrativi

Per eseguire azioni amministrative sul tuo progetto durante la creazione, l'aggiornamento o l'eliminazione delle funzioni, tutti i progetti in Cloud Run Functions richiedono il service account Service agent Google Cloud Run Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com).

Inoltre, tutti i runtime eseguono la creazione e l'archiviazione delle immagini container all'interno del tuo progetto. Per supportare questa funzionalità, devi anche eseguire il provisioning di quanto segue:

Questi service account devono disporre dei ruoli elencati nella tabella precedente.

Service account del service agent Google Cloud Functions

Per impostazione predefinita, il service account del service agent Google Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) dispone del ruolo cloudfunctions.serviceAgent nel tuo progetto.

Di seguito sono riportate alcune delle autorizzazioni più importanti utilizzate da cloudfunctions.serviceAgent:

Autorizzazione Descrizione
roles/artifactregistry.admin Per gestire i repository e archiviare le immagini di build in Artifact Registry.
roles/cloudbuild.builds.editor Obbligatoria per utilizzare Cloud Build per generare build nel progetto utente.
roles/cloudbuild.customworkers.builder Per creare build nei worker personalizzati di Cloud Build.
compute.globalOperations.get,
compute.networks.access,
vpcaccess.connectors.{get, use}
Per eseguire il provisioning delle funzioni con accesso al VPC dei progetti consumer.
roles/eventarc.developer Per gestire i trigger Eventarc per le funzioni.
firebasedatabase.instances.{get, update} Per creare funzioni attivate da Firebase Realtime Database.
iam.serviceAccounts.{actAs, getAccessToken, signBlob} Consente di ottenere le credenziali del service account di runtime.
iam.serviceAccounts.getOpenIdToken Necessaria per consentire all'agente di ottenere un token OpenID su un'autorità specificata dall'utente. Il token OpenID viene utilizzato per richiamare le funzioni abilitate per IAM.
pubsub.subscriptions Per gestire le sottoscrizioni nel progetto dell'utente.
pubsub.topics Per gestire gli argomenti nel progetto dell'utente.
roles/run.developer Per gestire il servizio Cloud Run per le funzioni.
storage.buckets.create,
storage.objects.{delete, get, create, list}
Obbligatoria per archiviare il codice sorgente nel progetto utente.

Puoi visualizzare l'intero insieme di autorizzazioni nei ruoli IAM predefiniti o eseguendo questo comando:

gcloud iam roles describe roles/cloudfunctions.serviceAgent

Reimposta questo service account al ruolo predefinito rimuovendo il ruolo attuale e aggiungendo il ruolo Cloud Functions Service Agent:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member serviceAccount:service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \
  --role roles/cloudfunctions.serviceAgent

Risoluzione dei problemi relativi agli errori di autorizzazione

Se ricevi errori di autorizzazione quando esegui il deployment, aggiorni, elimini o esegui funzioni nel tuo progetto, segui questi passaggi:

  1. Assicurati di disporre del ruolo Editor o Owner sul progetto oppure di utilizzare il ruolo Cloud Functions Developer.

    Se utilizzi il ruolo Cloud Functions Developer a livello di progetto, assicurati anche di aver concesso all'utente il ruolo IAM Service Account User.

    Al momento, sono consentite solo le autorizzazioni di esecuzione a livello di funzione.

  2. Verifica che il service account del service agent Cloud Functions (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) disponga del ruolo Cloud Functions Service Agent (cloudfunctions.serviceAgent) per il tuo progetto.

    Per visualizzare questo account, assicurati che sia selezionata la casella Includi concessioni di ruoli fornite da Google nella scheda Autorizzazioni della pagina Console IAM. In alternativa, puoi utilizzare gcloud projects add-iam-policy-binding PROJECT_ID.

  3. Assicurati di disporre delle autorizzazioni per le origini dei trigger, ad esempio Pub/Sub o Cloud Storage.

Se ricevi un errore "Autorizzazioni insufficienti" o riscontri altri problemi di autenticazione quando esegui le funzioni, assicurati che il service account di runtime disponga delle autorizzazioni corrette per accedere alle risorse necessarie alle tue funzioni. Poi ripeti i passaggi 2 e 3.

Se durante il deployment viene visualizzato l'errore "Servizio non disponibile", assicurati che il service account di runtime PROJECT_ID@appspot.gserviceaccount.com esista nel tuo progetto. Se questo service account è stato eliminato e desideri ricrearlo, consulta Annullamento dell'eliminazione di un service account.

Vedi anche Risolvi i problemi relativi a Cloud Run Functions.

1 Cloud Run Functions utilizza il service account Cloud Build legacy solo per i progetti creati prima di luglio 2024.