Account di servizio personalizzato per Cloud Build
Cloud Functions sfrutta Cloud Build durante la creazione e il deployment dellaCloud Functions. Per impostazione predefinita, Cloud Functions utilizza l'account di servizio Cloud Build predefinito come entità quando esegui la build. Questo documento descrive come passare un account di servizio creato dall'utente per l'utilizzo da parte di Cloud Build durante il deployment della funzione.
Puoi eseguire il deployment delle funzioni con account di servizio personalizzati utilizzando Google Cloud CLI, la console Google Cloud o l'API Cloud Functions.
Di seguito sono riportati alcuni scenari in cui è consigliabile fornire un account di servizio diverso da utilizzare quando Cloud Build crea la tua funzione:
Vuoi un maggiore controllo su quali account di servizio aggiungere al tuo perimetro VPC-SC.
Cloud Build deve essere eseguito con autorizzazioni diverse rispetto a quelle dell'account di servizio predefinito, senza dover revocare ciascuna autorizzazione singolarmente.
Vuoi impostare autorizzazioni Cloud Build granulari specifiche per le tue funzioni, non condividere un account di servizio Cloud Build ottimizzato per altri scopi.
Abilita le API
Questa funzionalità richiede l'abilitazione dell'API IAM.
Utilizza Google Cloud CLI per abilitare le API necessarie per il deployment di una Cloud Function oppure utilizza la console Google Cloud:
gcloud services enable iam.googleapis.com
Configura l'account di servizio
Questo documento descrive come creare un nuovo account di servizio e concedere le autorizzazioni necessarie. Se vuoi utilizzare un account di servizio esistente, devi disporre dell'indirizzo email dell'account di servizio che intendi utilizzare. Per maggiori dettagli, consulta la pagina sulla configurazione degli account di servizio specificati dall'utente.
Puoi visualizzare gli account di servizio esistenti come segue oppure utilizzare la console Google Cloud:
gcloud iam service-accounts list
Crea account servizio
Utilizza Google Cloud CLI per creare il tuo account di servizio o utilizza la console Google Cloud:
gcloud iam service-accounts create SA_EMAIL
Sostituisci SA_EMAIL con l'indirizzo email del tuo account di servizio.
Concedi autorizzazioni
L'account di servizio che utilizzi avrà bisogno dei seguenti ruoli:
roles/iam.serviceAccountUser
: questo ruolo non è richiesto per l'account di servizio, ma l'utente che esegue il deployment della funzione ne ha bisogno.roles/logging.logWriter
: necessario per archiviare i log di build in Cloud Logging.roles/artifactregistry.writer
: necessario per archiviare le immagini build in Artifact Registry.roles/storage.objectAdmin
: necessario per recuperare l'origine della funzione dal bucket Cloud Storage e archiviare le immagini build in Container Registry.
Concedi i ruoli seguenti utilizzando Google Cloud CLI oppure utilizza la console Google Cloud.
gcloud projects add-iam-policy-binding SA_PROJECT_ID \
--member=user:DEPLOYING_USER_EMAIL \
--role=roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/artifactregistry.writer
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/storage.objectAdmin
Sostituisci quanto segue:
- PROJECT_ID: il tuo ID progetto Google Cloud.
- SA_EMAIL: l'indirizzo email del tuo account di servizio.
- SA_PROJECT_ID: l'ID progetto del tuo account di servizio.
- DEPLOYING_USER_EMAIL: l'indirizzo email dell'utente che esegue il deployment della funzione.
Esegui il deployment di una funzione con un account di servizio personalizzato
Puoi utilizzare Google Cloud CLI per eseguire il deployment di una funzione che utilizza un account di servizio personalizzato per Cloud Build:
- Il flag
--build-service-account
specifica un account di servizio IAM le cui credenziali verranno utilizzate per il passaggio di build. Se non viene fornito un account di servizio personalizzato, la funzione utilizza l'account di servizio predefinito del progetto per Cloud Build. - Facoltativamente, puoi utilizzare un pool privato, specificato mediante il flag
--build-worker-pool
.
gcloud functions deploy FUNCTION_NAME \
--gen2 \
--region=REGION \
--project=PROJECT_ID \
--runtime=RUNTIME \
--entry-point=CODE_ENTRYPOINT \
--build-service-account=projects/PROJECT_ID/serviceAccounts/SA_EMAIL \
--memory=256Mi \
--trigger-http \
--source=.
Sostituisci quanto segue:
- FUNCTION_NAME: il nome con cui hai eseguito il deployment della funzione.
- REGION: il nome della regione Google Cloud in cui vuoi eseguire il deployment della funzione
(ad esempio,
us-west1
). - PROJECT_ID: il tuo ID progetto Google Cloud.
- RUNTIME: l'ID runtime di una
versione del runtime supportata per eseguire
la funzione, ad esempio
nodejs18
. - CODE_ENTRYPOINT: il punto di ingresso della funzione nel codice sorgente. Questo è il codice che verrà eseguito quando viene eseguita la funzione.
- SA_EMAIL: l'indirizzo email del tuo account di servizio.