Modifica del account di servizio predefinito di Cloud Build

Cloud Build seleziona automaticamente il service account Cloud Build per eseguire le build per tuo conto, a meno che tu non sostituisca questo comportamento. Questo account di servizio predefinito potrebbe avere autorizzazioni inutilmente ampie per il tuo caso d'uso, ad esempio l'accesso a qualsiasi bucket Cloud Storage nel tuo progetto.

Il comportamento predefinito di utilizzo dei service account di Cloud Build nei nuovi progetti è stato modificato nel corso di diverse settimane a maggio e giugno 2024. Queste modifiche migliorano la security posture predefinita dei nostri clienti in futuro. Puoi disattivare queste modifiche configurando il vincolo delle policy dell'organizzazione.

Prima di questa modifica, Cloud Build utilizzava un account di servizio specifico di Cloud Build come predefinito, ora denominato account di servizio Cloud Build legacy.

Dopo questa modifica, Cloud Build utilizza il service account predefinito di Compute Engine come account di servizio predefinito.

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

Cosa occorre fare?

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

La tua organizzazione può disattivare queste modifiche impostando i seguenti vincoli booleani delle policy dell'organizzazione:

  • Non applicato: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Non applicato: constraints/cloudbuild.useComputeServiceAccount
  • Applicato: constraints/cloudbuild.useBuildServiceAccount

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

Nuovi vincoli delle policy dell'organizzazione

Cloud Build ha introdotto nuovi vincoli booleani delle policy dell'organizzazione da configurare:

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

Per modificare le policy dell'organizzazione, puoi utilizzare Google Cloud la console o il Google Cloud CLI:

Per saperne di più sulle policy dell'organizzazione, consulta la pagina Introduzione al servizio Policy dell'organizzazione.

Configurare la disponibilità del account di servizio Cloud Build legacy

Per configurare la disponibilità del service account Cloud Build legacy quando abiliti l'API Cloud Build, Cloud Build introdurrà il seguente vincolo booleano delle policy:

  • Non applicato: constraints/cloudbuild.disableCreateDefaultServiceAccount. Consente l'utilizzo del account di servizio Cloud Build legacy nei nuovi progetti.

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

Questo vincolo influisce solo sui progetti che eseguono la prima build dopo l'implementazione della modifica. Se decidi di non applicare il vincolo delle policy, la modifica è permanente per tutti i progetti che eseguono la prima build quando la configurazione è attiva. Non puoi disattivare la disponibilità del account di servizio Cloud Build legacy in un progetto in cui il account di servizio era disponibile in precedenza. Tuttavia, anche se il service account è disponibile, puoi impedire agli utenti della tua organizzazione di utilizzarlo, come descritto nella sezione seguente.

Come per tutte le policy e i vincoli dell'organizzazione, puoi impostare queste policy a livello di organizzazione o di progetto.

Configurare il account di servizio predefinito per un'organizzazione

Per configurare il account di servizio predefinito utilizzato in un'organizzazione, Cloud Build introduce due nuovi vincoli booleani delle policy:

  • constraints/cloudbuild.useBuildServiceAccount: configura l'utilizzo del account di servizio Cloud Build legacy.
  • constraints/cloudbuild.useComputeServiceAccount: configura l'utilizzo del service account predefinito di Compute Engine.

Puoi configurare queste policy in modo indipendente l'una dall'altra, ma sono più utili quando le regole di applicazione vengono combinate nei seguenti scenari:

  • Utilizza il service account predefinito di Compute Engine sia per le build inviate manualmente sia per le build attivate. Imposta i seguenti vincoli nella policy dell'organizzazione:

    • Non applicato: constraints/cloudbuild.useBuildServiceAccount
    • Applicato: constraints/cloudbuild.useComputeServiceAccount
  • Utilizza un service account specificato dall'utente sia per le build inviate manualmente sia per le build attivate. In genere, questa è l'opzione più sicura. Imposta i seguenti vincoli nella policy dell'organizzazione:

    • Non applicato: constraints/cloudbuild.useBuildServiceAccount
    • Non applicato: constraints/cloudbuild.useComputeServiceAccount
  • Continua a utilizzare il account di servizio Cloud Build legacy. Se conosci i compromessi di sicurezza coinvolti, imposta i seguenti vincoli nella policy dell'organizzazione:

    • Non applicato: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Non applicato: constraints/cloudbuild.useComputeServiceAccount
    • Applicato: constraints/cloudbuild.useBuildServiceAccount
  • Continua a utilizzare il account di servizio Cloud Build legacy per i progetti che hanno abilitato l'API Cloud Build prima della modifica, e inizia a utilizzare il service account predefinito di Compute Engine per i nuovi progetti. Assicurati di comprendere i compromessi di sicurezza coinvolti e imposta i seguenti vincoli nella policy dell'organizzazione:

    • Applicato: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Applicato: constraints/cloudbuild.useComputeServiceAccount
    • Applicato: constraints/cloudbuild.useBuildServiceAccount

Recuperare il account di servizio predefinito corrente 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:

gcloud CLI

Esegui il comando seguente per recuperare il account di servizio predefinito per il progetto corrente:

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 dei segnaposto con i seguenti: