Questo documento descrive gli account di servizio utilizzati per eseguire Google Cloud Deploy e per chiamare Google Cloud Deploy per eseguire varie operazioni.
Google Cloud Deploy utilizza due account di servizio:
L'agente di servizio Google Cloud Deploy
Google Cloud Deploy utilizza questo account di servizio per interagire con il tuo progetto. Non puoi sostituire questo agente di servizio con un account di servizio alternativo, ma puoi modificarne le autorizzazioni, ad esempio quando utilizzi risorse esterne al progetto (ad esempio un account di servizio o un pool di worker privato di Cloud Build).
L'account di servizio di esecuzione di Google Cloud Deploy
Google Cloud Deploy utilizza questo account di servizio per eseguire operazioni di rendering e deployment in Cloud Build. Questo account ha bisogno di autorizzazioni sufficienti per leggere e scrivere nel bucket Cloud Storage e per accedere alle destinazioni del deployment.
L'account di servizio predefinito per l'esecuzione è l'account di servizio Compute Engine predefinito. Puoi specificare un account di servizio alternativo nella configurazione di destinazione.
Vedi Creazione e gestione degli account di servizio per istruzioni su come modificare le autorizzazioni degli account di servizio e su come creare un account di servizio alternativo.
Agente di servizio Google Cloud Deploy
L'agente di servizio Google Cloud Deploy è un account di servizio che Google Cloud Deploy utilizza per interagire con altri servizi Google Cloud su cui Google Cloud Deploy fa affidamento. Questi servizi includono Cloud Build, Pub/Sub e Cloud Audit Logs.
Il nome di questo account di servizio segue questo pattern:
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
Non puoi sostituire l'agente di servizio con un account di servizio alternativo. Tuttavia, potresti dover aggiungere autorizzazioni, ad esempio per consentire l'accesso a un pool privato in un altro progetto, configurato come parte di un ambiente di esecuzione.
Account di servizio di esecuzione Google Cloud Deploy
Per impostazione predefinita, Google Cloud Deploy viene eseguito utilizzando l'account di servizio predefinito di Compute Engine. L'account di servizio dispone di autorizzazioni sufficienti nel progetto che lo contiene per il rendering dei manifest e il loro deployment nei tuoi target.
Il nome di questo account di servizio segue questo pattern:
[project-number]-compute@developer.gserviceaccount.com
Questo account di servizio predefinito dispone di ampie autorizzazioni. La best practice prevede la modifica dell'ambiente di esecuzione in modo che Google Cloud Deploy venga eseguito come account di servizio diverso.
Puoi modificare l'account di servizio di esecuzione per ogni target utilizzando la proprietà executionConfigs.privatePool.serviceAccount
o la proprietà executionConfigs.defaultPool.serviceAccount
nella definizione di target.
Qualsiasi account di servizio impostato per queste proprietà deve avere il ruolo roles/clouddeploy.jobRunner
nel progetto Cloud Deploy. Se l'account di servizio di esecuzione predefinito non ha questa autorizzazione, esegui il comando seguente:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:$(gcloud projects describe PROJECT_ID \
--format="value(projectNumber)")-compute@developer.gserviceaccount.com \
--role="roles/clouddeploy.jobRunner"
Account di servizio da creare
Se scegli di non utilizzare l'account di servizio di esecuzione predefinito per il rendering e il deployment, devi creare uno o più account di servizio alternativi da utilizzare. Si tratta di account di servizio utilizzati da Google Cloud Deploy e sono configurati nella configurazione di destinazione.
Un motivo per creare più di un account potrebbe essere quello di avere uno o più account di servizio specifici per il deployment in destinazioni limitate, ad esempio un target di produzione.
Un possibile approccio consiste nell'utilizzare account di servizio separati per ogni pipeline di distribuzione. Ciascun account di servizio deve includere ruoli con autorizzazioni sufficienti per il rendering e il deployment.
Per i deployment in Google Kubernetes Engine, puoi limitare l'account di servizio a un solo spazio dei nomi.
Utilizzo di account di servizio da un progetto diverso
Per il tuo ambiente di esecuzione, puoi specificare un account di servizio in un progetto diverso da quello in cui crei la tua pipeline di distribuzione:
Sul progetto proprietario dell'account di servizio, attiva il criterio dell'organizzazione SA tra progetti.
Concedi all'agente di servizio Google Cloud Deploy (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
) l'autorizzazioneiam.serviceAccounts.actAs
per il tuo account di servizio.Puoi anche concedere il ruolo
roles/iam.serviceAccountUser
, che include questa autorizzazione.Concedi all'agente di servizio Cloud Build (
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
) il ruoloroles/iam.serviceAccountTokenCreator
.Concedi al chiamante le autorizzazioni
gcloud deploy releases create
egcloud deploy rollouts create
iam.serviceAccounts.actAs
per l'account di servizio.
Autorizzazioni obbligatorie
L'account di servizio utilizzato per le configurazioni di rendering deve avere autorizzazioni sufficienti per accedere al bucket Cloud Storage in cui sono archiviate le risorse Google Cloud Deploy (pipeline di distribuzione, release, implementazioni).
Il ruolo
roles/clouddeploy.jobRunner
include tutte le autorizzazioni necessarie all'account di servizio di rendering (privatePool
odefaultPool
).L'account di servizio utilizzato per il deployment deve avere autorizzazioni sufficienti per eseguire il deployment nel cluster di destinazione e l'autorizzazione per accedere al bucket Cloud Storage.
L'account di servizio che chiama Google Cloud Deploy per creare una release deve avere il ruolo
clouddeploy.releaser
. Deve inoltre avere l'autorizzazioneiam.serviceAccount.actAs
per utilizzare l'account di servizio che esegue il rendering dei manifest (ad esempio tramite il ruoloroles/iam.serviceAccountUser
).L'account di servizio che chiama Google Cloud Deploy per promuovere una release o creare un
rollout
deve avere l'autorizzazioneiam.serviceAccount.actAs
per utilizzare l'account di servizio di cui viene eseguito il deployment nel target.
Passaggi successivi
- Scopri di più su IAM.
- Scopri i ruoli predefiniti di Google Cloud Deploy.
- Scopri come creare e gestire gli account di servizio.