Modifica dell'account di servizio predefinito di Cloud Build

Cloud Build seleziona automaticamente il servizio Cloud Build di eseguire build per tuo conto, a meno che non ignori questo comportamento. Questo account di servizio predefinito potrebbe avere autorizzazioni inutilmente generiche per il tuo caso d'uso, come l'accesso ai repository di Container Registry e di bucket Cloud Storage nel tuo progetto.

Il comportamento predefinito per l'utilizzo degli account di servizio da parte di Cloud Build nei nuovi progetti è stato modificato nell'arco di diverse settimane a maggio e giugno 2024. Questi queste modifiche migliorano la condizione di sicurezza predefinita dei nostri clienti in avanti. Puoi disattivare queste modifiche configurando l'organizzazione un vincolo del criterio.

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

Dopo questa modifica, Cloud Build ora utilizza l'account di servizio 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 tuo progetto dopo la modifica, quest'ultimo utilizzerà il servizio Compute Engine predefinito per le build inviate utilizzando l'API Cloud Build o Google Cloud CLI. Questi progetti non avranno la possibilità di utilizzare il service account Cloud Build precedente, ma possono utilizzare un service account specificato dall'utente.

  • Progetti con un'organizzazione. Se esegui la prima compilazione nel progetto dopo la modifica, per impostazione predefinita il progetto utilizzerà l'account di servizio Compute Engine per le compilazioni inviate utilizzando l'API Cloud Build o Google Cloud CLI. Puoi utilizzare un modello specificato dall'utente l'account di servizio oppure disattiva la modifica attivando l'account di servizio Account di servizio Cloud Build nella tua organizzazione.

  • Progetti esistenti senza un'organizzazione. Se hai eseguito la prima build il tuo progetto prima della modifica, questo continuerà il comportamento precedente usando il servizio legacy di Cloud Build predefinito per tutte le build. Puoi continuare a utilizzare account di servizio specificato dall'utente, selezionando un account di servizio Compute Engine o crearne uno tuo.

  • Progetti esistenti con un'organizzazione. Se hai eseguito la prima build il tuo progetto prima della modifica, questo continuerà il comportamento precedente usando il servizio legacy di Cloud Build predefinito. Puoi anche continuare a utilizzare un servizio specificato dall'utente Google Cloud.

  • Attivazione. Dovrai specificare un account di servizio quando crei o aggiornare un trigger, a meno che l'account di servizio predefinito per il tuo è l'account di servizio legacy di Cloud Build.

  • Nome dell'account di servizio Cloud Build: Cloud Build verrà denominato Cloud Build legacy dell'account di servizio.

Cosa occorre fare?

Se fai parte di un'organizzazione, questa può configurare il comportamento di tutti i progetti impostando un criterio dell'organizzazione con le limitazioni scelte.

La tua organizzazione può disattivare queste modifiche impostando quanto segue vincoli booleani dei criteri dell'organizzazione:

  • Non applicata: constraints/cloudbuild.disableCreateDefaultServiceAccount
  • Non applicata: constraints/cloudbuild.useComputeServiceAccount
  • Applicata: constraints/cloudbuild.useBuildServiceAccount

Se non puoi o non vuoi modificare il criterio dell'organizzazione, attivi API Cloud Build dopo la modifica, verificare che il servizio predefinito Compute Engine Google Cloud o quello di servizio creato dall'utente. autorizzazioni per la build. In particolare, l'utente che invia la build deve Avere l'autorizzazione iam.serviceAccounts.actAs per il 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 precedente.
  • 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 l'interfaccia a riga di comando Google Cloud:

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

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

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

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

  • Applicata: constraints/cloudbuild.disableCreateDefaultServiceAccount. Disabilita l'utilizzo dell'account di servizio legacy di Cloud Build nei nuovi in modo programmatico a gestire i progetti. Questo è il valore predefinito del vincolo.

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

Come per tutti i criteri e i vincoli dell'organizzazione, puoi impostare questi criteri a livello di organizzazione o di progetto.

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 criteri booleani vincoli:

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

Puoi configurare questi criteri indipendentemente l'uno dall'altro, ma utile quando le regole di applicazione vengono combinate nei seguenti scenari:

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

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

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

    • Non applicata: constraints/cloudbuild.disableCreateDefaultServiceAccount
    • Non applicata: constraints/cloudbuild.useComputeServiceAccount
    • Applicata: constraints/cloudbuild.useBuildServiceAccount
  • Continua a utilizzare l'account di servizio precedente di Cloud Build per i progetti che hanno attivato 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 coinvolti e imposta i seguenti vincoli nei criteri della tua organizzazione:

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

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 progetto:

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: