Account di servizio Google Cloud Deploy

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

Google Cloud Deploy utilizza due account di servizio:

  • L'agente di servizio Google Cloud Deploy

    Google Cloud Deploy utilizza questo account di servizio per interagire con il tuo 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 worker Cloud Build privato).

  • L'account di servizio di esecuzione di Google Cloud Deploy

    Google Cloud Deploy utilizza questo account di servizio per eseguire operazioni di rendering e deployment in Cloud Build. Questo account ha bisogno di 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.

Consulta la sezione 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 Google Cloud Deploy

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

Per impostazione predefinita, Google 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 il rendering dei manifest e 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 ha autorizzazioni generiche. La best practice consiste nel modificare l'ambiente di esecuzione in modo che Google 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 il comando seguente:

 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. Questi sono account di servizio su cui viene eseguito Google Cloud Deploy e sono configurati nella configurazione di destinazione.

Uno dei motivi per crearne più di uno è creare uno o più account di servizio specifici per il deployment in destinazioni con limitazioni, ad esempio un target di produzione.

Un possibile approccio è l'utilizzo di account di servizio separati per pipeline di distribuzione. Ogni account di servizio di questo tipo include ruoli con autorizzazioni sufficienti per eseguire il rendering e il deployment.

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

Sono in uso account di servizio di un altro progetto

Per l'ambiente di esecuzione, puoi specificare un account di servizio in un progetto diverso da quello in cui crei la pipeline di distribuzione:

  1. Per il progetto proprietario dell'account di servizio, attiva il criterio dell'organizzazione per i progetti tra progetti.

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

    Puoi anche concedere il ruolo roles/iam.serviceAccountUser, che include questa autorizzazione.

  3. Concedi all'agente di servizio Cloud Build (service-<project-number>@gcp-sa-cloudbuild.iam.gserviceaccount.com) il ruolo roles/iam.serviceAccountTokenCreator.

  4. Concedi al chiamante delle autorizzazioni gcloud deploy releases create e gcloud deploy rollouts create iam.serviceAccounts.actAs per l'account di servizio.

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 Google Cloud Deploy (pipeline di distribuzione, release, lanci).

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

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

  • L'account di servizio che chiama Google Cloud Deploy per creare una release deve avere il ruolo clouddeploy.releaser. Deve inoltre avere l'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 Google Cloud Deploy per promuovere una release o creare un rollout deve avere l'autorizzazione iam.serviceAccount.actAs per utilizzare l'account di servizio che esegue il deployment nelle destinazioni.

Passaggi successivi