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 tu non esegua l'override di questo comportamento. Questo account di servizio potrebbe avere autorizzazioni inutilmente ampie per il tuo caso d'uso, ad esempio l'accesso a Cloud Source Repositories e a qualsiasi bucket Cloud Storage nel tuo progetto

Stiamo modificando il comportamento predefinito del modo in cui Cloud Build utilizza gli account di servizio nei nuovi progetti. Implementeremo questi cambiamenti regione per regione nell'arco di diverse settimane, a maggio e giugno 2024. In futuro, queste modifiche miglioreranno il livello di sicurezza predefinito dei nostri clienti. Puoi disattivare queste modifiche configurando il vincolo del criterio dell'organizzazione.

L'impatto sui progetti varia a seconda che tu faccia parte o meno di un'organizzazione. In generale, dopo l'implementazione della modifica nella regione in uso, noterai le seguenti modifiche:

  • Progetti senza un'organizzazione. Se abiliti l'API Cloud Build sui tuoi progetti dopo la modifica, per impostazione predefinita utilizzerai l'account di servizio Compute Engine per le build inviate utilizzando l'API Cloud Build o Google Cloud CLI. Questi progetti non potranno utilizzare l'account di servizio Cloud Build legacy, ma potranno 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 attivando 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. Quando crei o aggiorni un trigger, dovrai specificare un account di servizio, 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 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, la tua organizzazione può disattivare questa modifica impostando il seguente vincolo booleano per il criterio dell'organizzazione:

  • Non applicata: constraints/cloudbuild.disableCreateDefaultServiceAccount

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

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

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

  • Non applicato: constraints/cloudbuild.disableCreateDefaultServiceAccount. Consente l'utilizzo del servizio Cloud Build legacy come predefinito 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.

Per aggiornare il vincolo del criterio, aggiorna le regole di applicazione:

Questo vincolo interessa 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 è permanente 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.

Recuperare l'account di servizio predefinito corrente per un progetto

Per determinare quale account di servizio viene utilizzato da Cloud Build 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: