Controllo dell'accesso con IAM

Tu (ovvero l'account utente o di servizio che esegue il deployment della funzione) puoi impostare l'accesso usando i ruoli a livello di progetto. Assegna un ruolo a un membro del progetto o account di servizio per determinare il livello di accesso del progetto Google Cloud e delle relative risorse. Per impostazione predefinita, tutti i progetti Google Cloud con un solo utente, l'autore del progetto originale. Nessun altro utente ha accesso a al progetto e, di conseguenza, l'accesso alle funzioni, finché un utente non viene aggiunto come membro del team di progetto.

Controllo dell'accesso per gli utenti

Puoi aggiungere utenti al tuo progetto come membri del team e assegnare loro dei ruoli utilizzando Identity and Access Management (IAM).

Le funzioni di Cloud Run supportano ruoli di base di Editor, Proprietario e Visualizzatore, che concedono le seguenti autorizzazioni:

  • Editor e Proprietario: accesso in lettura e scrittura a tutti relative alle funzioni. Consente agli utenti di eseguire il deployment, l'aggiornamento e l'eliminazione funzioni. Accesso aggiuntivo ad altre risorse nel progetto.
  • Visualizzatore: accesso di sola lettura a funzioni e posizioni. Consente agli utenti le funzioni e vederne i dettagli, ma non consente di visualizzare codice sorgente. Accesso aggiuntivo ad altre risorse nel progetto.

Le funzioni di Cloud Run supportano anche le funzioni di Cloud Run Ruoli predefiniti di Sviluppatore e Visualizzatore, che concedono le seguenti autorizzazioni:

  • Sviluppatore: accesso in lettura e scrittura a tutti. relative alle funzioni. Consente agli utenti di eseguire il deployment, l'aggiornamento e l'eliminazione funzioni. Nessun accesso ad altre risorse nel progetto.
  • Visualizzatore: accesso di sola lettura a funzioni e posizioni. Consente agli utenti le funzioni e vederne i dettagli, ma non consente di visualizzare codice sorgente. Nessun accesso ad altre risorse nel progetto.
di Gemini Advanced.

Controllo dell'accesso per gli account di servizio

R service account è un tipo speciale di Account Google Cloud che funge da identità per un utente "non umano" che deve autenticarsi e avere l'autorizzazione ad accedere ai dati ed eseguire varie azioni. Alcune di questi account sono creati e gestiti da Google stessa e sono noti come agenti di servizio.

Per le funzioni di Cloud Run vengono utilizzati i seguenti account di servizio:

Nome ID membro Ruolo
Account di servizio predefinito Compute Engine PROJECT_NUMBER-compute@developer.gserviceaccount.com Editor
Agente di servizio funzioni Google Cloud Run service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com Agente di servizio funzioni Cloud Run
PROJECT_NUMBER@cloudbuild.gserviceaccount.com Account di servizio Cloud Build
Account di servizio Cloud Build service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com Cloud Build Service Agent
Agente di servizio Google Container Registry service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com Container Registry Service Agent
Artifact Registry Service Agent service-PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com Artifact Registry Service Agent

Account di servizio di runtime

In fase di runtime, le impostazioni predefinite delle funzioni di Cloud Run all'utilizzo dell'account di servizio predefinito (PROJECT_NUMBER-compute@developer.gserviceaccount.com), che ha a sua volta il ruolo Editor per il progetto. Puoi modificare i ruoli di questo servizio per limitare o estendere le autorizzazioni per le funzioni in esecuzione. Puoi cambiare anche l'account di servizio utilizzato fornisci un account di servizio individuale non predefinito.

Per saperne di più sugli account di servizio, consulta documentazione sugli account di servizio.

Account di servizio amministrativi

Per eseguire azioni amministrative sul progetto durante la creazione: Aggiornamento o eliminazione di funzioni in tutti i progetti in funzioni di Cloud Run richiede l'account di servizio dell'agente di servizio per le funzioni Google Cloud Run (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)

Inoltre, tutti i runtime eseguono la creazione e l'archiviazione di immagini container del progetto. A questo scopo, dovrai anche eseguire il provisioning di quanto segue:

Questi account di servizio devono avere i ruoli elencati nella table.

Account di servizio dell'agente di servizio per le funzioni di Google Cloud Run

Per impostazione predefinita, l'account di servizio dell'agente di servizio per le funzioni Google Cloud Run (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com ha il ruolo cloudfunctions.serviceAgent sul tuo progetto.

Ecco alcune delle autorizzazioni più importanti che cloudfunctions.serviceAgent usa:

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

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

gcloud iam roles describe roles/cloudfunctions.serviceAgent

Puoi reimpostare il ruolo predefinito per questo account di servizio rimuovendo qualsiasi ruolo abbia e aggiungendo il ruolo Agente di servizio per le funzioni Cloud Run:

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

Risoluzione degli errori relativi alle autorizzazioni

Se ricevi errori di autorizzazione durante il deployment, l'aggiornamento, l'eliminazione o l'esecuzione nel tuo progetto, segui questi passaggi:

  1. Assicurati di disporre del ruolo Editor o Proprietario per il progetto. che utilizzi il ruolo Sviluppatore funzioni Cloud Run.

    Se utilizzi il ruolo Sviluppatore funzioni Cloud Run nel progetto livello, assicurati inoltre di avere ha concesso all'utente il ruolo Utente account di servizio IAM.

    Attualmente, sono consentite solo autorizzazioni di esecuzione a livello di funzione.

  2. Verifica che l'account di servizio dell'agente di servizio funzioni di Cloud Run (service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com) ha il ruolo cloudfunctions.serviceAgent del tuo progetto.

    Assicurati che la casella Includi concessioni dei ruoli fornite da Google nella Scheda Autorizzazioni della pagina Console IAM viene controllato per vedere questo account. In alternativa, puoi utilizzare gcloud projects add-iam-policy-binding PROJECT_ID.

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

Se ricevi un errore di "autorizzazioni insufficienti" o hai altri i problemi di autenticazione quando esegui le funzioni, assicurati che il runtime che l'account di servizio disponga delle autorizzazioni corrette per accedere alle risorse le funzioni necessarie. Quindi, ripeti i passaggi 2 e 3.

Se ricevi un errore di tipo "servizio non disponibile" durante il deployment,: assicurati che l'account di servizio di runtime PROJECT_ID@appspot.gserviceaccount.com esiste nel tuo progetto. Per ricreare questo account di servizio se è stato eliminato, consulta Annullare l'eliminazione di un account di servizio.

Vedi anche Risoluzione dei problemi delle funzioni di Cloud Run.