Controllo dell'accesso con IAM
Tu (ovvero l'account utente o di servizio che esegue il deployment della funzione) puoi impostare il controllo accessi utilizzando i ruoli a livello di progetto. Concedi un ruolo a un membro del progetto o a un account di servizio per determinare il livello di accesso al progetto Google Cloud e alle relative risorse. Per impostazione predefinita, tutti i progetti Google Cloud sono associati a un unico utente: il creatore originale del progetto. 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 come membri del team al tuo progetto e concedere loro ruoli utilizzando Identity and Access Management (IAM).
Le funzioni Cloud Run supportano i ruoli di base di Editor, Proprietario e Visualizzatore, che concedono le seguenti autorizzazioni:
- Editor e Proprietario: accesso in lettura e scrittura a tutte le risorse correlate alle funzioni. Consente agli utenti di eseguire il deployment, l'aggiornamento e l'eliminazione funzioni. Accesso aggiuntivo ad altre risorse nel progetto.
- Visualizzatore: accesso in sola lettura a funzioni e località. Consente agli utenti di elencare le funzioni e visualizzarne i dettagli, ma non consente loro di visualizzare il codice sorgente. Accesso aggiuntivo ad altre risorse nel progetto.
Le funzioni Cloud Run supportano anche i ruoli Sviluppatore e Visualizzatore predefiniti, che concedono le seguenti autorizzazioni:
- Sviluppatore: accesso in lettura e scrittura a tutte le risorse correlate alle funzioni. Consente agli utenti di eseguire il deployment, aggiornare ed eliminare le funzioni. Nessun accesso ad altre risorse del 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 del progetto.
Controllo dell'accesso per gli account di servizio
Un account di servizio è un tipo speciale di account Google Cloud che funge da identità per un utente non umano che deve autenticarsi ed essere autorizzato 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 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 delle funzioni Google Cloud Run | service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com |
Agente di servizio Cloud Run Functions |
— | 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 |
Service account 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 questi account di 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 scoprire di più sugli account di servizio, consulta la documentazione sugli account di servizio.
Account di servizio amministrativi
Per eseguire azioni amministrative sul progetto durante la creazione, l'aggiornamento o l'eliminazione delle funzioni, tutti i progetti nelle funzioni Cloud Run richiedono l'account di servizio Agente di servizio delle 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 tuo progetto. Per supportare questa operazione, devi eseguire il provisioning di quanto segue:
- L'account di servizio Cloud Build di base (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
) - L'account di servizio dell'agente di servizio Cloud Build (
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
) - L'account di servizio dell'agente di servizio Google Container Registry (
service-PROJECT_NUMBER@containerregistry.iam.gserviceaccount.com
)
Questi account di servizio devono avere i ruoli elencati nella precedente tabella.
Account di servizio dell'agente di servizio delle funzioni Google Cloud Run
Per impostazione predefinita, l'account di servizio Agente di servizio delle funzioni Google Cloud Run
(service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com
ha
il ruolo cloudfunctions.serviceAgent nel tuo progetto.
Ecco alcune delle autorizzazioni più importanti che cloudfunctions.serviceAgent
usa:
Autorizzazione | Descrizione |
---|---|
roles/artifactregistry.admin |
Gestisci i repository e archivia le immagini di 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 gli 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 |
Obbligatorio per consentire all'agente di ottenere un token OpenID in un'autorità specificata dall'utente. Il token OpenID viene utilizzato per richiamare le 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 |
Gestisci 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 questo account di servizio sul ruolo predefinito rimuovendo il ruolo che ha e aggiungendo il ruolo Agente di servizio delle 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 del tuo progetto, segui questi passaggi:
Assicurati di avere il ruolo Editor o Proprietario nel tuo progetto oppure di utilizzare il ruolo Sviluppatore di funzioni Cloud Run.
Se utilizzi il ruolo Sviluppatore di funzioni Cloud Run a livello di progetto, assicurati inoltre di aver concesso all'utente il ruolo Utente account di servizio IAM.
Al momento, sono consentite solo le autorizzazioni di esecuzione a livello di funzione.
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.Per visualizzare questo account, assicurati che la casella Includi concessioni di ruoli fornite da Google nella scheda Autorizzazioni della pagina Console IAM sia selezionata. In alternativa, puoi utilizzare
gcloud projects add-iam-policy-binding PROJECT_ID
.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 problemi di autenticazione durante l'esecuzione delle funzioni, assicurati che l'account servizio di runtime disponga delle autorizzazioni corrette per accedere alle risorse di cui hanno bisogno le funzioni. Quindi, ripeti i passaggi 2 e 3.
Se ricevi un errore "servizio non disponibile" durante il deployment, assicurati che l'account di servizio di runtime PROJECT_ID@appspot.gserviceaccount.com
esista nel tuo progetto. Per ricreare questo account di servizio se è stato eliminato, consulta
Annullare l'eliminazione di un account di servizio.
Consulta anche la sezione Risoluzione dei problemi relativi alle funzioni Cloud Run.