Richiesta di autorizzazione per l'attacco degli account di servizio alle risorse

Quando crei determinate risorse Google Cloud , hai la possibilità di collegare un service account. Il service account collegato funge da identità di tutti i job in esecuzione sulla risorsa, consentendo ai job di autenticarsi alle API Google Cloud .

Per la maggior parte dei servizi Google Cloud , gli utenti devono disporre dell'autorizzazione a simulare l'identità di un service account per poterlo collegare a una risorsa. Ciò significa che l'utente deve disporre dell'autorizzazione iam.serviceAccounts.actAs sul service account.

Tuttavia, in passato alcuni servizi consentivano agli utenti di collegare account di servizio alle risorse anche se non avevano l'autorizzazione a rappresentare tramite simulazione dell'identità gli account di servizio. Questa configurazione potrebbe aver consentito agli utenti di questi servizi di ottenere autorizzazioni elevate e non ovvie.

La tabella seguente elenca i servizi che avevano questa configurazione, insieme al comportamento legacy di ciascun servizio:

Servizio Comportamento legacy
App Engine Gli utenti potevano eseguire il deployment di applicazioni App Engine, che utilizzano l'identità del service account predefinito di App Engine, anche se non avevano l'autorizzazione per rappresentare tramite simulazione dell'identità il service account predefinito di App Engine.
Cloud Composer Gli utenti potevano collegare qualsiasi service account nel progetto a un ambiente Cloud Composer, anche se non avevano l'autorizzazione per rappresentare tramite simulazione dell'identità uno dei service account del progetto.
  • Cloud Data Fusion
  • Dataflow
  • Dataproc
Gli utenti potevano collegare il service account predefinito di Compute Engine alle risorse, anche se non avevano l'autorizzazione per rappresentare tramite simulazione dell'identità il service account predefinito.
Dataform Gli utenti potevano collegare un service account a una risorsa Dataform e creare una chiamata del flusso di lavoro che veniva eseguita come service account, anche se non avevano l'autorizzazione per rappresentare tramite simulazione dell'identità il service account.

Ora richiediamo che questi servizi verifichino che gli utenti dispongano dell'autorizzazione per impersonare i service account quando li collegano alle risorse. Tuttavia, il comportamento precedente esiste ancora per i seguenti tipi di organizzazioni:

  • Organizzazioni con utenti che dispongono dell'autorizzazione per eseguire il deployment di applicazioni App Engine, ma non dell'autorizzazione per rappresentare il service account predefinito di App Engine.
  • Organizzazioni con utenti che dispongono dell'autorizzazione per eseguire il deployment di ambienti Cloud Composer, ma non dell'autorizzazione per impersonare service account.
  • Organizzazioni con utenti che dispongono dell'autorizzazione per eseguire il deployment di risorse Cloud Data Fusion, Dataflow o Dataproc, ma non dispongono dell'autorizzazione per rappresentare l'account di servizio predefinito di Compute Engine.
  • Organizzazioni con utenti che dispongono dell'autorizzazione per collegare un account di servizio a una risorsa Dataform e creare una chiamata del flusso di lavoro, ma non dispongono dell'autorizzazione per rappresentare tramite simulazione dell'identità l'account di servizio.

Se la tua organizzazione è ancora interessata dal comportamento precedente, avrai ricevuto una comunicazione che spiega come disattivarlo manualmente. Per istruzioni dettagliate, puoi anche consultare le sezioni seguenti.

Protezione di App Engine

Per disattivare manualmente il comportamento legacy per App Engine, assicurati che gli utenti dispongano dell'autorizzazione per rappresentare il service account App Engine. Poi, abilita un vincolo di policy dell'organizzazione per applicare i controlli delle autorizzazioni del service account durante il deployment delle applicazioni che utilizzano l'identità del service account predefinito di App Engine.

  1. (Facoltativo) Utilizza i suggerimenti per i ruoli per ridurre in modo sicuro le autorizzazioni per il service account predefinito di App Engine.

    Al service account predefinito di App Engine viene concesso automaticamente il ruolo Editor (roles/editor), altamente permissivo. Tuttavia, non consigliamo di utilizzare un ruolo così permissivo nelle configurazioni di produzione.

  2. Assicurati che tutti gli utenti che eseguono il deployment delle applicazioni possano impersonare il service account predefinito di App Engine.

    Per fornire questa possibilità, concedi agli utenti un ruolo che includa l'autorizzazione iam.serviceAccounts.actAs, ad esempio il ruolo Utente service account (roles/iam.serviceAccountUser). Puoi concedere questo ruolo nel progetto o nel service account predefinito di App Engine. Per le istruzioni, vedi Gestione dell'impersonificazione degli account di servizio.

  3. Attiva il vincolo del criterio dell'organizzazione constraints/appengine.enforceServiceAccountActAsCheck per applicare i controlli delle autorizzazioni dell'account di servizio durante il deployment delle applicazioni.

  4. (Facoltativo) Utilizza lo strumento di applicazione delle policy dell'organizzazione booleane per verificare che il vincolo della policy dell'organizzazione venga applicato in tutti i tuoi progetti.

Protezione di Cloud Composer

Per disattivare manualmente il comportamento legacy per Cloud Composer, assicurati che gli utenti dispongano dell'autorizzazione per rappresentare i service account che collegano ai nuovi ambienti. Poi, abilita un vincolo dei criteri dell'organizzazione per applicare i controlli delle autorizzazioni del service account quando colleghi i service account agli ambienti.

  1. Identifica tutti i service account associati agli ambienti Cloud Composer:

    1. Nella console Google Cloud , vai alla pagina Ambienti Composer.

      Vai alla pagina degli ambienti Composer

    2. Fai clic sul nome di un ambiente.

    3. Nella scheda Configurazione ambiente, individua il campo Service account e registra il nome del service account.

    4. Ripeti i passaggi precedenti per tutti gli ambienti Cloud Composer nel tuo progetto.

  2. Verifica che questi service account seguano il principio del privilegio minimo:

  3. Assicurati che tutti gli utenti che eseguono il deployment o gestiscono gli ambienti Cloud Composer possano impersonare i service account utilizzati dagli ambienti.

    Per fornire questa possibilità, concedi agli utenti un ruolo che includa l'autorizzazione iam.serviceAccounts.actAs, ad esempio il ruolo Utente service account (roles/iam.serviceAccountUser). Puoi concedere questo ruolo nel progetto o in un singolo service account. Per le istruzioni, vedi Gestione dell'impersonificazione degli account di servizio.

  4. Attiva il vincolo del criterio dell'organizzazione constraints/composer.enforceServiceAccountActAsCheck per applicare i controlli delle autorizzazioni dell'account di servizio quando colleghi gli account di servizio agli ambienti.

  5. (Facoltativo) Utilizza lo strumento di applicazione delle policy dell'organizzazione booleane per verificare che il vincolo della policy dell'organizzazione venga applicato in tutti i tuoi progetti.

Protezione di Dataproc, Dataflow e Cloud Data Fusion

Per disattivare manualmente il comportamento legacy per Dataproc, Dataflow e Cloud Data Fusion, assicurati che gli utenti dispongano dell'autorizzazione per rappresentare gli account di servizio che collegano alle nuove risorse. Poi, attiva i vincoli dei criteri dell'organizzazione per applicare i controlli delle autorizzazioni del service account quando colleghi i service account alle risorse.

Segui le istruzioni per il tipo di service account che vuoi collegare alle nuove risorse:

  • Se vuoi interrompere l'associazione del service account predefinito di Compute Engine alle nuove risorse, segui questi passaggi:

    1. Crea un nuovo service account e concedi a questo service account i ruoli necessari per eseguire i job sulla risorsa. Assicurati di seguire il principio del privilegio minimo.

      Per scoprire quali ruoli deve avere un service account per eseguire job sulle risorse di Dataproc, Dataflow e Cloud Data Fusion, consulta quanto segue:

    2. Consenti a tutti gli utenti che eseguono il deployment di queste risorse di rappresentare il nuovo service account.

      Per fornire questa possibilità, concedi agli utenti un ruolo che includa l'autorizzazione iam.serviceAccounts.actAs, ad esempio il ruolo Utente service account (roles/iam.serviceAccountUser). Puoi concedere questo ruolo nel progetto o nel service account. Per le istruzioni, vedi Gestione dell'impersonificazione degli account di servizio.

    3. Attiva i seguenti vincoli dei criteri dell'organizzazione per applicare i controlli delle autorizzazioni del service account quando colleghi i service account alle risorse:

      • constraints/dataflow.enforceComputeDefaultServiceAccountCheck
      • constraints/dataproc.enforceComputeDefaultServiceAccountCheck

      Il vincolo dei criteri dell'organizzazione constraints/dataproc.enforceComputeDefaultServiceAccountCheck applica anche i controlli delle autorizzazioni per Cloud Data Fusion.

    4. (Facoltativo) Utilizza lo strumento di applicazione dei criteri dell'organizzazione booleani per verificare che i vincoli dei criteri dell'organizzazione siano applicati in tutti i tuoi progetti.

    5. Quando esegui il deployment di nuove risorse, utilizza il nuovo service account anziché quello predefinito di Compute Engine.

  • Se vuoi continuare ad allegare il service account predefinito di Compute Engine alle nuove risorse, segui questi passaggi:

    1. (Facoltativo) Utilizza i suggerimenti per i ruoli per ridurre in modo sicuro l'ambito delle autorizzazioni per il service account predefinito di Compute Engine.

      Al service account predefinito di Compute Engine viene concesso automaticamente il ruolo Editor (roles/editor), che è molto permissivo. Tuttavia, non consigliamo di utilizzare un ruolo così permissivo nelle configurazioni di produzione.

    2. Assicurati che tutti gli utenti che eseguono il deployment di queste risorse abbiano la possibilità di impersonare l'account di servizio predefinito di Compute Engine.

      Per fornire questa possibilità, concedi agli utenti un ruolo che includa l'autorizzazione iam.serviceAccounts.actAs, ad esempio il ruolo Utente service account (roles/iam.serviceAccountUser). Puoi concedere questo ruolo nel progetto o nel service account predefinito di Compute Engine. Per le istruzioni, vedi Gestione dell'impersonificazione degli account di servizio.

    3. Attiva i seguenti vincoli dei criteri dell'organizzazione per applicare i controlli delle autorizzazioni del service account quando colleghi service account alle risorse:

      • constraints/dataflow.enforceComputeDefaultServiceAccountCheck
      • constraints/dataproc.enforceComputeDefaultServiceAccountCheck
    4. (Facoltativo) Utilizza lo strumento di applicazione dei criteri dell'organizzazione booleani per verificare che i vincoli dei criteri dell'organizzazione siano applicati in tutti i tuoi progetti.

Protezione di Dataform

Per disattivare manualmente il comportamento legacy per Dataform, assicurati che gli utenti abbiano l'autorizzazione a utilizzare l'identità dei service account che collegano alle risorse Dataform. Poi, attiva la modalità Agisci come rigorosa per applicare i controlli delle autorizzazioni del service account durante la creazione delle chiamate del flusso di lavoro.

  1. Controlla la presenza di problemi di autorizzazione per evitare di interrompere i flussi di lavoro. Puoi farlo eseguendo query in Cloud Logging per le voci specifiche di Dataform che indicano che a un principal (utente o service account) manca l'autorizzazione iam.serviceAccounts.actAs richiesta. In questo modo puoi identificare e risolvere in modo proattivo eventuali discrepanze di accesso. Per saperne di più, consulta Verificare la presenza di problemi di autorizzazione in Cloud Logging.

  2. Per gli utenti o i service account che devono creare chiamate di workflow, concedi loro l'autorizzazione per rappresentare il service account associato al repository Dataform. Puoi fornire questa autorizzazione concedendo il ruolo Utente service account (roles/iam.serviceAccountUser) sul service account specifico. Per ulteriori informazioni, vedi Risolvere i problemi di autorizzazione.

  3. Se utilizzi un service account personalizzato, concedi i seguenti ruoli al service agent Dataform predefinito sul service account personalizzato:

    • Creatore token account di servizio (roles/iam.serviceAccountTokenCreator): richiesto per tutte le operazioni del repository che utilizzano un service account personalizzato.
    • Service Account User (roles/iam.serviceAccountUser): obbligatorio solo se utilizzi configurazioni del flusso di lavoro per pianificare o automatizzare le esecuzioni. Questo ruolo consente all'agente di servizio Dataform predefinito di eseguire attività come service account personalizzato.
  4. Per forzare il controllo dell'autorizzazione act-as, attiva la modalità act-as rigorosa. Questa funzionalità migliora la sicurezza verificando che qualsiasi utente che crea una chiamata di workflow disponga dell'autorizzazione iam.serviceAccounts.actAs per l'account di servizio effettivo.

    • Per un nuovo repository, la modalità act-as rigorosa è attiva per impostazione predefinita.
    • Per un repository esistente, aggiornalo impostando il flag strict_act_as_checks su true.

    Per ulteriori informazioni, vedi Utilizzare la modalità di simulazione rigorosa.

  5. Esegui periodicamente un audit delle risorse Dataform per garantire l'utilizzo corretto dell'account di servizio e la concessione delle autorizzazioni. Utilizza Cloud Asset Inventory per elencare tutte le risorse dei tipi dataform.Repository e dataform.WorkflowConfig, quindi esamina il campo resource.data.serviceAccount per verificare quale service account viene utilizzato. Se viene utilizzato un service account personalizzato, verifica che l'agente di servizio Dataform predefinito disponga dei ruoli Utente service account (roles/iam.serviceAccountUser) e Creatore token service account (roles/iam.serviceAccountTokenCreator) per questo service account personalizzato. Per saperne di più, consulta Controllare le configurazioni dei service account.