Account di servizio Cloud Deploy

Questo documento descrive gli account di servizio utilizzati per eseguire Cloud Deploy e 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 servizio alternativo dell'account di servizio, ma puoi modificarne le autorizzazioni, ad esempio quando utilizzi risorse esterne al progetto (ad esempio un account di servizio o un pool di worker di Cloud Build).

  • Account di servizio di esecuzione di Cloud Deploy

    Cloud Deploy utilizza questo account di servizio per eseguire il rendering e le operazioni di deployment in Cloud Build. Questo account richiede le autorizzazioni sufficienti per leggere e scrivere sul bucket Cloud Storage e per accedere alle destinazioni del deployment.

    L'account di servizio predefinito per l'esecuzione è account di servizio Compute Engine predefinito. Puoi specificare un account di servizio alternativo nella configurazione target.

  • 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 che Cloud Deploy per interagire con altri servizi Google Cloud che Cloud Deploy su cui si basa. 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 la versione predefinita di Compute Engine dell'account di servizio. L'account di servizio ha le autorizzazioni sufficienti nel progetto che lo contiene per eseguire il rendering dei manifest il deployment nelle tue 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 con la proprietà executionConfigs.privatePool.serviceAccount o la proprietà executionConfigs.defaultPool.serviceAccount nel definizione del target.

Qualsiasi account di servizio impostato per queste proprietà deve avere Ruolo roles/clouddeploy.jobRunner nel progetto Cloud Deploy. Se l'impostazione predefinita l'account di servizio di esecuzione non dispone di questa autorizzazione, esegui questo :

 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 di account di servizio con cui viene eseguito Cloud Deploy 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, limitare l'account di servizio a un solo spazio dei nomi.

Usa 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, attiva l'SA tra progetti criterio dell'organizzazione.

  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) Ruolo roles/iam.serviceAccountTokenCreator.

    In questo caso, project-number è il progetto in cui hai creato il target e questo ruolo viene concesso nel servizio 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 al chiamante di gcloud deploy releases create e gcloud deploy rollouts create l'autorizzazione iam.serviceAccounts.actAs per l'account di servizio, o roles/iam.serviceAccountUser ruolo.

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 per il rendering account di servizio (privatePool o defaultPool) e alle esigenze aziendali.

  • L'account di servizio utilizzato per il deployment deve disporre di autorizzazioni sufficienti eseguire il deployment nel cluster di destinazione e l'autorizzazione ad accedere nel bucket Cloud Storage.

  • L'account di servizio che chiama Cloud Deploy per creare una release deve avere il ruolo clouddeploy.releaser. Deve avere anche il iam.serviceAccount.actAs l'autorizzazione a usare l'account di servizio che mostra i manifest (ad esempio tramite 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 usa l'account di servizio che esegue il deployment nelle destinazioni (ad esempio tramite la 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ù su l'account di servizio di automazione.

Passaggi successivi