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 con il 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
Si tratta dell'account di servizio utilizzato da Cloud Deploy per eseguire automazioni. Può essere l'account di servizio di esecuzione predefinito o un altro account di servizio. Per ulteriori informazioni su questo account di servizio, consulta L'account di servizio di automazione.
Consulta Creare e gestire gli account di servizio per istruzioni su come modificare le autorizzazioni degli account di servizio e come 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. Tuttavia, potrebbe essere necessario aggiungere autorizzazioni, ad esempio per consentire l'accesso a un pool privato in un altro progetto, configurato nell'ambito di un ambiente di esecuzione.
Account di servizio di esecuzione Cloud Deploy
Per impostazione predefinita, Cloud Deploy viene eseguito utilizzando l'account di servizio predefinito di Compute Engine.
Il nome di questo account di servizio segue questo pattern:
[project-number]-compute@developer.gserviceaccount.com
Poiché questo account di servizio viene utilizzato da molti prodotti, potrebbe avere autorizzazioni ampie. La best practice consiste nel modificare l'ambiente di esecuzione in modo che Cloud Deploy venga eseguito come un altro account di servizio.
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 il ruolo Cloud Deploy Runner nel progetto Cloud Deploy. Se l'account di servizio di esecuzione predefinito non ha questo ruolo, 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"
L'account di servizio avrà inoltre bisogno di autorizzazioni specifiche per il runtime per eseguire il deployment nel runtime scelto. Per Google Kubernetes Engine, puoi scegliere i ruoli Sviluppatore di container e Utente account di servizio. Per Cloud Run, puoi scegliere i ruoli Sviluppatore Cloud Run e Utente account di servizio. Altri runtime utilizzati dai target personalizzati potrebbero richiedere le proprie autorizzazioni.
Quali account di servizio 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 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 o account di servizio specifici per il deployment in target con limitazioni, ad esempio un target di produzione.
Un possibile approccio è utilizzare account di servizio separati per ogni pipeline di importazione. 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 l'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
) l'autorizzazioneiam.serviceAccounts.actAs
per il tuo account di servizio.In questo caso,
project-number
è il progetto in cui hai creato il target.Puoi anche assegnare il ruolo
roles/iam.serviceAccountUser
, che include questa autorizzazione, nel progetto e in ogni account di servizio che si trova in un progetto diverso da quello in cui è in esecuzione Cloud Deploy.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 a ogni account di servizio configurato nell'ambiente di esecuzione di un target 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
iam.serviceAccounts.actAs
pergcloud deploy releases create
egcloud deploy rollouts create
sull'account di servizio o il ruoloroles/iam.serviceAccountUser
.
Autorizzazioni obbligatorie
L'account di servizio utilizzato per il rendering delle configurazioni deve disporre delle autorizzazioni sufficienti per accedere al bucket Cloud Storage in cui sono archiviate le risorse Cloud Deploy (pipeline di importazione, 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 queste automazioni utilizzando l'account di servizio di automazione, che può essere l'account di servizio di esecuzione predefinito, un account di servizio non predefinito utilizzato come account di servizio di esecuzione 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.