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:
Progetti senza un'organizzazione. Se esegui la prima build in nel tuo progetto dopo la modifica, questo progetto utilizzerà il service account Compute Engine per impostazione predefinita per le build inviate utilizzando l'API Cloud Build o Google Cloud CLI. Questi progetti non avranno la possibilità di utilizzare il account di servizio Cloud Build legacy, ma potranno utilizzare un service account specificato dall'utente.
Progetti con un'organizzazione. Se esegui la prima build nel tuo progetto dopo la modifica, questo progetto utilizzerà il service account Compute Engine per impostazione predefinita per le build inviate utilizzando l'API Cloud Build o Google Cloud CLI. Puoi utilizzare un service account specificato dall'utente o disattivare la modifica abilitando il account di servizio Cloud Build nella tua organizzazione.
Progetti esistenti senza un'organizzazione. Se hai eseguito la prima build nel tuo progetto prima della modifica, questo progetto continuerà con il vecchio comportamento, utilizzando il service account Cloud Build legacy per impostazione predefinita per tutte le build. Puoi continuare a utilizzare un service account specificato dall'utente selezionando il account di servizio Compute Engine o creandone uno tuo.
Progetti esistenti con un'organizzazione. Se hai eseguito la prima build nel tuo progetto prima della modifica, questo progetto continuerà con il vecchio comportamento, utilizzando il service account Cloud Build legacy per impostazione predefinita. Puoi anche continuare a utilizzare un service account specificato dall'utente.
Attivazione. Dovrai specificare un account di servizio quando crei o aggiorni un trigger, a meno che il account di servizio predefinito per il tuo progetto non sia il account di servizio Cloud Build legacy.
Nome del account di servizio Cloud Build: il account di servizio Cloud Build verrà denominato il service account Cloud Build legacy service account.
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 le}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:
Google Cloud Console: seleziona il vincolo che vuoi modificare e imposta l' Applicazione opzione su Attiva o Disattiva nella Google Cloud console.
Google Cloud CLI: Configura l'applicazione dei vincoli in 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
- Non applicato:
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
- Non applicato:
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
- Non applicato:
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
- Applicato:
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-accountAPI 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/defaultServiceAccountSostituisci i valori dei segnaposto con i seguenti:
PROJECT_ID: l'ID del progetto.REGION: una delle regioni supportate.