Questo documento descrive gli account di servizio utilizzati per eseguire Cloud Deploy e per chiamare Cloud Deploy per eseguire varie operazioni.
Cloud Deploy utilizza i seguenti account di servizio:
L'agente di servizio Cloud Deploy
Cloud Deploy utilizza questo account di servizio per interagire 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 lavoratori Cloud Build privato).
L'account di servizio di esecuzione Cloud Deploy
Cloud Deploy utilizza questo account di servizio per eseguire operazioni di rendering e deployment in Cloud Build. Questo account deve disporre delle autorizzazioni sufficienti per leggere e scrivere nel bucket Cloud Storage e per accedere alle destinazioni di 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.
L'account di servizio di automazione Cloud Deploy
Questo è l'account di servizio che Cloud Deploy utilizza per eseguire automazioni. Può essere l'esecuzione predefinita o un altro account di servizio. Consulta: L'account di servizio di automazione Per ulteriori informazioni su questo account di servizio.
Consulta Creare e gestire gli account di servizio per istruzioni su come modificare le autorizzazioni dell'account di servizio e creare un account di servizio alternativo.
Agente di servizio Cloud Deploy
L'agente di servizio Cloud Deploy è un account di servizio utilizzato da Cloud Deploy per interagire con altri servizi Google Cloud di cui si serve. 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. Ma potrebbe essere necessario aggiungere autorizzazioni, ad esempio per consentire l'accesso a un pool in un altro progetto, configurato come parte ambiente di esecuzione.
Account di servizio di esecuzione di Cloud Deploy
Per impostazione predefinita, Cloud Deploy viene eseguito utilizzando l'account di servizio predefinito di Compute Engine. Questo account di servizio deve disporre delle autorizzazioni sufficienti nel progetto che lo contiene per eseguire il rendering dei manifest e il relativo deployment nelle destinazioni.
Il nome di questo account di servizio segue questo pattern:
[project-number]-compute@developer.gserviceaccount.com
Questo account di servizio predefinito dispone di autorizzazioni ampie. La best practice consiste nel
modificare l'ambiente di esecuzione in modo che
che Cloud Deploy viene eseguito con un 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 del target.
Qualsiasi account di servizio impostato per queste proprietà deve avere
Ruolo roles/clouddeploy.jobRunner
nel progetto Cloud Deploy. Se l'account di servizio di esecuzione predefinito non dispone di questa autorizzazione, esegui il seguente comando:
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"
Quali account di servizio creare
Se scegli di non utilizzare l'account di servizio di esecuzione predefinito per il rendering e devi creare uno o più account di servizio alternativi da utilizzare. Si tratta degli account di servizio con cui viene eseguito Cloud Deploy e sono configurati nella configurazione di destinazione.
Un motivo per crearne più di uno è avere un account di servizio specifico o account per il deployment in destinazioni con restrizioni, ad esempio un target di produzione.
Un possibile approccio è quello di utilizzare account di servizio separati per ogni pipeline di distribuzione. Ciascuno di questi account di servizio includerà ruoli con autorizzazioni sufficienti per eseguire 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 di un altro progetto
Per il tuo ambiente di esecuzione, puoi specificare un account di servizio che si trova in un progetto diverso da quello in cui crei il target:
Nel progetto proprietario dell'account di servizio, abilita il criterio dell'organizzazione per gli account di servizio tra progetti.
Concedi all'agente di servizio Cloud Deploy (
service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
), il Autorizzazioneiam.serviceAccounts.actAs
per il tuo account di servizio.In questo caso,
project-number
è il progetto in cui hai creato target.Puoi anche concedere alla
roles/iam.serviceAccountUser
che include tale autorizzazione, nel progetto di e su ogni servizio che si trova in un progetto diverso da quello in cui Cloud Deploy è in esecuzione.Concedi all'agente di servizio Cloud Build (
service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com
) il ruoloroles/iam.serviceAccountTokenCreator
.In questo caso,
project-number
è il progetto in cui hai creato il target e questo ruolo viene concesso nel progetto dell'account di servizio.Devi concedere questo ruolo per ogni account di servizio configurato nel dell'ambiente di esecuzione se l'account di servizio si trova in un progetto diverso da quello in cui è in esecuzione Cloud Deploy.
Concedi all'autore della chiamata l'autorizzazione
gcloud deploy releases create
egcloud deploy rollouts create
iam.serviceAccounts.actAs
nell'account di servizio o il ruoloroles/iam.serviceAccountUser
.
Autorizzazioni obbligatorie
L'account di servizio utilizzato per le configurazioni di rendering deve avere un numero sufficiente di per accedere al bucket Cloud Storage in cui Cloud Deploy per l'archiviazione delle risorse (pipeline di distribuzione, release, implementazioni).
Il ruolo
roles/clouddeploy.jobRunner
include tutte le autorizzazioni di cui ha bisogno l'account di servizio di rendering (privatePool
odefaultPool
).L'account di servizio utilizzato per il deployment deve disporre delle 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 Cloud Deploy per creare una release deve avere il ruolo
clouddeploy.releaser
. Deve inoltre disporre dell'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 Cloud Deploy per promuovere una release o creare un
rollout
deve disporre dell'autorizzazioneiam.serviceAccount.actAs
per utilizzare l'account di servizio che esegue il deployment nei target (ad esempio tramite il ruoloroles/iam.serviceAccountUser
).L'account di servizio configurato per un'automazione deve disporre dell'autorizzazione per eseguire le operazioni che vengono automatizzate. Scopri di più.
L'account di servizio di automazione
Puoi automatizzare alcune azioni in una release. Cloud Deploy esegue questi utilizzando l'account di servizio di automazione, che può essere di servizio, un account di servizio non predefinito usato come o un altro account di servizio.
Scopri di più sull'account di servizio di automazione.
Passaggi successivi
- Scopri di più su IAM.
- Scopri di più sui ruoli predefiniti di Cloud Deploy.
- Scopri come creare e gestire gli account di servizio.