Modifica dell'account di servizio Cloud Build

Cloud Build seleziona automaticamente l'account di servizio Cloud Build per eseguire le build per tuo conto, a meno che non sostituisci questo comportamento. Questo account di servizio potrebbe avere autorizzazioni inutilmente ampie per il tuo caso d'uso, come l'accesso a Cloud Source Repositories e a qualsiasi bucket Cloud Storage nel tuo progetto

Il comportamento predefinito relativo al modo in cui Cloud Build utilizza gli account di servizio nei nuovi progetti è stato modificato nell'arco di diverse settimane a maggio e giugno 2024. In futuro, queste modifiche migliorano la security posture predefinita dei nostri clienti. Puoi disattivare queste modifiche configurando il vincolo dei criteri dell'organizzazione.

L'impatto sui tuoi progetti dipende dal fatto che tu faccia parte o meno di un'organizzazione:

  • Progetti senza un'organizzazione. Se abiliti l'API Cloud Build sui tuoi progetti dopo la modifica, utilizzerai l'account di servizio Compute Engine per impostazione predefinita per le build inviate tramite l'API Cloud Build o Google Cloud CLI. Questi progetti non avranno la possibilità di utilizzare l'account di servizio legacy di Cloud Build, ma possono utilizzare un account di servizio specificato dall'utente.

  • Progetti con un'organizzazione. Se abiliti l'API Cloud Build sui tuoi progetti dopo la modifica, utilizzerai l'account di servizio Compute Engine per impostazione predefinita per le build inviate utilizzando l'API Cloud Build o Google Cloud CLI. Puoi utilizzare un account di servizio specificato dall'utente o disattivare la modifica abilitando l'account di servizio Cloud Build nella tua organizzazione.

  • Progetti esistenti senza un'organizzazione. Se hai abilitato l'API Cloud Build sui tuoi progetti prima della modifica, continuerai con il comportamento precedente, utilizzando per impostazione predefinita l'account di servizio Cloud Build legacy per tutte le tue build. Puoi continuare a utilizzare un account di servizio specificato dall'utente selezionando l'account di servizio Compute Engine o creandone uno personalizzato.

  • Progetti esistenti con un'organizzazione. Se hai abilitato l'API Cloud Build sui tuoi progetti prima della modifica, continuerai con il comportamento precedente, utilizzando per impostazione predefinita l'account di servizio Cloud Build legacy. Puoi anche continuare a utilizzare un account di servizio specificato dall'utente.

  • Attivazione. Dovrai specificare un account di servizio quando crei o aggiorni un trigger, a meno che l'account di servizio predefinito per il progetto non sia l'account di servizio Cloud Build legacy.

  • API. L'abilitazione dell'API Cloud Build abilita anche l'API Identity and Access Management.

  • Nome dell'account di servizio Cloud Build: l'account di servizio Cloud Build sarà indicato come account di servizio Cloud Build legacy.

Cosa occorre fare?

Se fai parte di un'organizzazione, quest'ultima può configurare il comportamento di tutti i progetti impostando un criterio dell'organizzazione con i vincoli scelti.

La tua organizzazione può disattivare queste modifiche impostando i seguenti boolean constraints dei criteri dell'organizzazione:

  • Non applicata: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Non applicato: constraints/cloudbuild.useComputeServiceAccount
  • Data applicazione: constraints/cloudbuild.useBuildServiceAccount

Se non puoi o non vuoi modificare il criterio dell'organizzazione e abiliti l'API Cloud Build dopo la modifica, verifica che l'account di servizio predefinito di Compute Engine o l'account di servizio creato dall'utente disponga di autorizzazioni sufficienti per la build. In particolare, l'utente che invia la build deve avere l'autorizzazione iam.serviceAccounts.actAs per l'account di servizio.

Nuovi vincoli dei criteri dell'organizzazione

Cloud Build ha introdotto nuovi vincoli booleani dei criteri dell'organizzazione per configurare:

  • La possibilità di utilizzare l'account di servizio Cloud Build legacy.
  • L'account di servizio predefinito per tutti i progetti in un'organizzazione.

Per modificare i criteri dell'organizzazione, puoi utilizzare la console Google Cloud o Google Cloud CLI:

Per ulteriori informazioni sui criteri dell'organizzazione, consulta Introduzione al servizio Criteri dell'organizzazione.

Configura la disponibilità dell'account di servizio Cloud Build legacy

Per configurare la disponibilità dell'account di servizio legacy di Cloud Build quando abiliti l'API Cloud Build, Cloud Build introdurrà il seguente vincolo di criterio booleano:

  • Non applicato: constraints/cloudbuild.disableCreateDefaultServiceAccount. Consente di utilizzare il servizio Cloud Build legacy nei nuovi progetti.

  • Data applicazione: constraints/cloudbuild.disableCreateDefaultServiceAccount. Disabilita l'utilizzo dell'account di servizio Cloud Build legacy nei nuovi progetti. Questo è il valore predefinito del vincolo.

Questo vincolo riguarda solo i progetti che abilitano l'API Cloud Build dopo l'implementazione della modifica. Se decidi di non applicare il vincolo del criterio, la modifica è definitiva per tutti i progetti che abilitano l'API quando la configurazione è attiva. Non puoi disattivare la disponibilità dell'account di servizio Cloud Build legacy in un progetto in cui l'account di servizio era precedentemente disponibile. Tuttavia, anche se l'account di servizio è disponibile, puoi impedire agli utenti della tua organizzazione di utilizzarlo, come descritto nella sezione seguente.

Configurare l'account di servizio predefinito per un'organizzazione

Per configurare quale account di servizio predefinito viene utilizzato in un'organizzazione, Cloud Build sta introducendo due nuovi vincoli booleani di criteri:

Puoi configurare questi criteri in modo indipendente l'uno dall'altro, ma sono particolarmente utili quando le regole di applicazione vengono combinate nei seguenti scenari:

  • Utilizza l'account di servizio predefinito di Compute Engine per le build inviate manualmente e quelle attivate. Imposta i seguenti vincoli nel criterio dell'organizzazione:

    • Non applicato: constraints/cloudbuild.useBuildServiceAccount
    • Data applicazione: constraints/cloudbuild.useComputeServiceAccount
  • Usa un account di servizio specificato dall'utente sia per le build inviate manualmente che per le build attivate. Questa è in genere l'opzione più sicura. Imposta i seguenti vincoli nel criterio dell'organizzazione:

    • Non applicato: constraints/cloudbuild.useBuildServiceAccount
    • Non applicato: constraints/cloudbuild.useComputeServiceAccount
  • Continua a utilizzare l'account di servizio legacy di Cloud Build. Se sei consapevole dei compromessi che ne derivano per la sicurezza, imposta i seguenti vincoli nel criterio dell'organizzazione:

    • Non applicata: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Non applicato: constraints/cloudbuild.useComputeServiceAccount
    • Data applicazione: constraints/cloudbuild.useBuildServiceAccount
  • Continua a utilizzare l'account di servizio legacy di Cloud Build per i progetti che hanno abilitato l'API Cloud Build prima della modifica e inizia a utilizzare l'account di servizio predefinito di Compute Engine per i nuovi progetti. Assicurati di comprendere i compromessi di sicurezza che ne derivano, imposta i seguenti vincoli nei criteri della tua organizzazione:

    • Data applicazione: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Data applicazione: constraints/cloudbuild.useComputeServiceAccount
    • Data applicazione: constraints/cloudbuild.useBuildServiceAccount

recupera l'account di servizio predefinito attuale per un progetto

Per determinare quale account di servizio Cloud Build utilizza come predefinito per un progetto, puoi utilizzare Google Cloud CLI o l'API Cloud Build:

Interfaccia a riga di comando gcloud

Esegui questo comando per ottenere l'account di servizio predefinito per il progetto attuale:

gcloud builds get-default-service-account

API Cloud Build

Utilizza cURL per chiamare l'API Cloud Build:

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccount

Sostituisci i valori segnaposto con i seguenti: