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 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:

  1. Nel progetto proprietario dell'account di servizio, abilita il criterio dell'organizzazione per gli account di servizio tra progetti.

  2. Concedi all'agente di servizio Cloud Deploy (service-<project-number>@gcp-sa-clouddeploy.iam.gserviceaccount.com), il Autorizzazione iam.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.

  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 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.

  4. Concedi all'autore della chiamata l'autorizzazione gcloud deploy releases create e gcloud deploy rollouts create iam.serviceAccounts.actAs nell'account di servizio o il ruolo roles/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 o defaultPool).

  • 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'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 disporre dell'autorizzazione iam.serviceAccount.actAs per utilizzare l'account di servizio che esegue il deployment nei target (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 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