Account di servizio personalizzato per Cloud Build

Cloud Functions sfrutta Cloud Build durante la creazione e il deployment della funzione Cloud Function. Per impostazione predefinita, Cloud Functions utilizza il tipo Account di servizio Cloud Build come entità quando esegui la build. Questo documento descrive come trasferire un account di servizio creato dall'utente per l'utilizzo in Cloud Build, quando esegui il deployment della funzione.

Puoi eseguire il deployment delle funzioni con account di servizio personalizzati utilizzando Google Cloud CLI, console Google Cloud o API Cloud Functions.

Di seguito sono riportati alcuni scenari in cui potresti voler fornire un servizio diverso da utilizzare quando Cloud Build crea la tua funzione:

  • Vuoi avere un maggiore controllo su quali account di servizio aggiungere alla tua rete VPC-SC perimetrale.

  • Vuoi che Cloud Build venga eseguito con autorizzazioni rispetto a quelle dell'account di servizio predefinito senza dover revocare ogni l'autorizzazione singolarmente.

  • Vuoi impostare autorizzazioni Cloud Build granulari specifiche per il tuo di Google Cloud, non condividere un account di servizio Cloud Build ottimizzato per per altri scopi.

Abilita API

Questa funzionalità richiede l'abilitazione dell'API IAM.

Utilizza Google Cloud CLI per abilitare le API necessarie per eseguire il deployment di una Cloud Function 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, ti servirà l'indirizzo email dell'account di servizio che intendi utilizzare. Consulta configurazione di account di servizio specificati dall'utente per maggiori dettagli.

Puoi visualizzare gli account di servizio esistenti come segue oppure utilizzare Console Google Cloud:

gcloud iam service-accounts list

Crea account servizio

Utilizza Google Cloud CLI per creare il tuo account di servizio o usa 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:

Concedi i ruoli seguenti utilizzando Google Cloud CLI o usa 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 personalizzata.

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 Account di servizio IAM le cui credenziali verranno utilizzate per il passaggio di build. Se non è stato fornito un account di servizio personalizzato, la funzione utilizza il valore predefinito del progetto l'account di servizio per Cloud Build.
  • In via facoltativa, puoi utilizzare piscina privata, che specifichi usando 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 es. us-west1).
  • PROJECT_ID: il tuo ID progetto Google Cloud.
  • RUNTIME: l'ID runtime di un versione di runtime supportata per l'esecuzione la tua funzione, ad esempio nodejs18.
  • CODE_ENTRYPOINT: il punto di accesso alla tua funzione nel tuo codice sorgente. Questo è il codice che verrà eseguito quando viene eseguita la funzione.
  • SA_EMAIL: l'indirizzo email del tuo account di servizio.