Account di servizio Cloud Deploy

Questo documento descrive i service account utilizzati per eseguire Cloud Deploy e per chiamarlo per l'esecuzione di varie operazioni.

Cloud Deploy utilizza i seguenti service account:

  • Il service agent Cloud Deploy

    Cloud Deploy utilizza questo account di servizio per interagire con il tuo progetto. Non puoi sostituire questo service agent con un service account alternativo, ma puoi modificarne le autorizzazioni, ad esempio quando utilizzi risorse esterne al progetto (come un account di servizio o un pool di worker Cloud Build privato).

  • Account di servizio di esecuzione Cloud Deploy

    Cloud Deploy utilizza questo account di servizio per eseguire il rendering e il deployment delle operazioni in Cloud Build. Questo account deve disporre di autorizzazioni sufficienti per leggere e scrivere nel bucket Cloud Storage e per accedere alle destinazioni di deployment.

    Il service account predefinito per l'esecuzione è l'account di servizio Compute Engine predefinito. Puoi specificare un account di servizio alternativo nella configurazione di destinazione.

  • Il account di servizio di automazione Cloud Deploy

    Questo è il account di servizio utilizzato da Cloud Deploy per eseguire le automazioni. Può trattarsi del account di servizio di esecuzione predefinito o di un altro account di servizio. Consulta Il service account di automazione per saperne di più su questo account di servizio.

Consulta Creazione e gestione dei service account per istruzioni su come modificare le autorizzazioni del service account e come creare un account di servizio alternativo.

Agente di servizio Cloud Deploy

L'agente di servizio Cloud Deploy è un account di servizio che Cloud Deploy utilizza per interagire con altri servizi Google Cloud su cui si basa Cloud Deploy. 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

Se questo account viene rimosso dal tuo progetto, puoi aggiungerlo di nuovo:

  1. Apri la pagina IAM nella console Google Cloud :

    Apri la pagina IAM

  2. Seleziona Includi concessioni di ruoli fornite da Google per visualizzare l'agente di servizio.

    Se viene visualizzato il service agent, puoi saltare il resto di questi passaggi.

  3. Se l'agente di servizio non viene visualizzato, fai clic su Concedi l'accesso.

  4. Nel campo Nuove entità, inserisci l'indirizzo del service agent nel seguente formato:

    1. service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com
  5. Fai clic sull'elenco a discesa Seleziona un ruolo e seleziona Agente di servizio Cloud Deploy.

  6. Fai clic su Salva.

Account di servizio di esecuzione di 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 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 disporre del ruolo Runner Cloud Deploy nel progetto Cloud Deploy. Se l'account di servizio di esecuzione predefinito non dispone di questo ruolo, esegui questo 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"

Il account di servizio avrà bisogno anche 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 Cloud Run Developer e Service Account User. Altri runtime utilizzati da Custom Targets potrebbero richiedere autorizzazioni proprie.

Quali service account creare

Se scegli di non utilizzare il account di servizio di esecuzione predefinito per il rendering e il deployment, devi creare uno o più service account alternativi da utilizzare. Questi sono gli 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 più service account per il deployment su target con limitazioni, ad esempio un target di produzione.

Un approccio possibile è utilizzare service account separati per ogni pipeline di distribuzione. Ogni account di servizio di questo tipo includerebbe ruoli con autorizzazioni sufficienti per il rendering e il deployment.

Per i deployment su Google Kubernetes Engine, puoi limitare il account di servizio a uno spazio dei nomi.

Utilizzo di service account 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 la destinazione:

  1. Nel progetto proprietario del account di servizio, attiva la policy dell'organizzazione per il service account tra progetti.

  2. Concedi al service agent Cloud Deploy (service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com) l'autorizzazione iam.serviceAccounts.actAs per il tuo account di servizio.

    In questo caso, project-number è il progetto in cui hai creato la destinazione.

    Puoi anche concedere il ruolo roles/iam.serviceAccountUser, che include questa autorizzazione, nel progetto e su ogni service account che si trova in un progetto diverso da quello in cui è in esecuzione Cloud Deploy.

  3. Concedi al service agent Cloud Build (service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com) il ruolo roles/iam.serviceAccountTokenCreator.

    In questo caso, project-number è il progetto in cui hai creato la destinazione e questo ruolo viene concesso nel progetto del service account.

    Devi concedere questo ruolo per ogni account di servizio configurato nell'ambiente di esecuzione di una destinazione se il account di servizio si trova in un progetto diverso da quello in cui è in esecuzione Cloud Deploy.

  4. Concedi all'autore della chiamata di gcloud deploy releases create e gcloud deploy rollouts create l'autorizzazione iam.serviceAccounts.actAs per il account di servizio o il ruolo roles/iam.serviceAccountUser.

Autorizzazioni obbligatorie

  • Il account di servizio utilizzato per il rendering delle configurazioni deve disporre di autorizzazioni sufficienti per accedere al bucket Cloud Storage in cui sono archiviate le risorse Cloud Deploy (pipeline di distribuzione, release, implementazioni).

    Il ruolo roles/clouddeploy.jobRunner include tutte le autorizzazioni necessarie per il account di servizio di rendering (privatePool o defaultPool).

  • Il account di servizio utilizzato per il deployment deve disporre delle autorizzazioni sufficienti per eseguire il deployment nel cluster di destinazione e dell'autorizzazione per accedere al bucket Cloud Storage.

  • Il account di servizio che chiama Cloud Deploy per creare una release deve disporre del ruolo clouddeploy.releaser. Deve inoltre disporre dell'autorizzazione iam.serviceAccount.actAs per utilizzare il account di servizio che esegue il rendering dei manifest (ad esempio tramite il ruolo roles/iam.serviceAccountUser).

  • Il account di servizio che chiama Cloud Deploy per promuovere una release o creare un rollout deve disporre dell'autorizzazione iam.serviceAccount.actAs per utilizzare il account di servizio che esegue il deployment sulle destinazioni (ad esempio tramite il ruolo roles/iam.serviceAccountUser).

  • Il account di servizio configurato per un'automazione deve disporre dell'autorizzazione per eseguire le operazioni che vengono automatizzate. Scopri di più.

Account di servizio di automazione

Puoi automatizzare alcune azioni in una release. Cloud Deploy esegue queste automazioni utilizzando il account di servizio di automazione, che può essere il 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