Account di servizio Cloud Deploy

Questo documento descrive gli account di servizio utilizzati per eseguire Cloud Deploy e per chiamare Cloud Deploy per eseguire varie operazioni.

Cloud Deploy utilizza due 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 modificare le relative autorizzazioni, ad esempio quando utilizzi risorse al di fuori del progetto (come un account di servizio o un pool di worker privato di Cloud Build).

  • L'account di servizio di esecuzione di Cloud Deploy

    Cloud Deploy utilizza questo account di servizio per eseguire operazioni di rendering e deployment in Cloud Build. Questo account deve avere le 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 utilizzato da Cloud Deploy per eseguire le automazioni. Può essere l'account di servizio di esecuzione predefinito o un altro account di servizio. Consulta L'account di servizio di automazione Per ulteriori informazioni su questo account di servizio.

Vedi Creazione e gestione degli account di servizio per istruzioni su come modificare le autorizzazioni degli 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 che Cloud Deploy utilizza per interagire con altri servizi Google Cloud su cui fa affidamento Cloud Deploy. Questi servizi includono Cloud Build, Pub/Sub e Cloud Audit Logs.

Il nome di questo account di servizio segue questo schema:

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 come parte di un ambiente di esecuzione.

Account di servizio di esecuzione Cloud Deploy

Per impostazione predefinita, Cloud Deploy viene eseguito utilizzando l'account di servizio Compute Engine predefinito. L'account di servizio dispone di autorizzazioni sufficienti nel progetto che lo contiene per eseguire il rendering dei manifest e il deployment nelle destinazioni.

Il nome di questo account di servizio segue questo schema:

[project-number]-compute@developer.gserviceaccount.com

Questo account di servizio predefinito ha autorizzazioni ampie. La best practice prevede di modificare l'ambiente di esecuzione in modo che 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 dispone di questa autorizzazione, 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"

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 di account di servizio con cui viene eseguito Cloud Deploy e che 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 limitate, come un target di produzione.

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

Per i deployment in Google Kubernetes Engine, puoi limitare l'account di servizio a uno 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 la destinazione:

  1. Nel progetto a cui appartiene l'account di servizio, abilita il criterio dell'organizzazione SA tra progetti.

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

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

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

  3. Concedi all'agente di servizio 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 dell'account di servizio.

    Devi concedere questo ruolo per 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.

  4. Concedi al chiamante di gcloud deploy releases create e gcloud deploy rollouts create l'autorizzazione iam.serviceAccounts.actAs per l'account di servizio o il ruolo [roles/iam.serviceAccountUser](/iam/docs/understanding-roles#service-accounts-roles).

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 Cloud Deploy (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 o defaultPool).

  • L'account di servizio utilizzato per il deployment deve avere autorizzazioni sufficienti per eseguire il deployment nel cluster di destinazione e 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'autorizzazione iam.serviceAccount.actAs per utilizzare l'account di servizio che esegue il rendering dei manifest (ad esempio tramite il ruolo roles/iam.serviceAccountUser).

  • L'account di servizio che chiama Cloud Deploy per promuovere una release o creare un rollout deve avere l'autorizzazione iam.serviceAccount.actAs per utilizzare l'account di servizio di cui viene eseguito il deployment nelle destinazioni (ad esempio tramite il ruolo roles/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.

Questo account di servizio è descritto nella sezione L'account di servizio di automazione.

Passaggi successivi