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 account di servizio 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 account di servizio per poterlo collegare a una risorsa. Ciò significa che l'utente deve disporre dell'autorizzazione iam.serviceAccounts.actAs sul account di servizio.

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 account di servizio predefinito di App Engine, anche se non avevano l'autorizzazione per rappresentare tramite simulazione dell'identità il account di servizio predefinito di App Engine.
Managed Service for Apache Airflow Gli utenti potevano collegare qualsiasi account di servizio del progetto a un ambiente Managed Airflow, anche se non avevano l'autorizzazione per simulare l'identità di uno dei service account del progetto.
  • Cloud Data Fusion
  • Dataflow
  • Managed Service for Apache Spark
Gli utenti potevano collegare il account di servizio predefinito di Compute Engine alle risorse, anche se non avevano l'autorizzazione per rappresentare tramite simulazione dell'identità il account di servizio predefinito.
Dataform Gli utenti potevano collegare un account di servizio a una risorsa Dataform e creare una chiamata del flusso di lavoro che veniva eseguita come account di servizio, anche se non avevano l'autorizzazione per rappresentare tramite simulazione dell'identità il account di servizio.

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 account di servizio predefinito di App Engine.
  • Organizzazioni con utenti che dispongono dell'autorizzazione per eseguire il deployment di ambienti Managed Airflow, ma non dell'autorizzazione per rappresentare service account.
  • Organizzazioni con utenti che dispongono dell'autorizzazione per eseguire il deployment di risorse Cloud Data Fusion, Dataflow o Managed Service for Apache Spark, ma non dispongono dell'autorizzazione per rappresentare il account di servizio predefinito di Compute Engine.

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 ilaccount di serviziot App Engine. Poi, abilita un vincolo di policy dell'organizzazione per applicare i controlli delle autorizzazioni del account di servizio durante il deployment delle applicazioni che utilizzano l'identità del account di servizio predefinito di App Engine.

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

    Al account di servizio 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 abbiano la possibilità di simulare l'identità delaccount di serviziot 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 nelaccount di serviziot predefinito di App Engine. Per le istruzioni, vedi Gestione account di servizio account.

  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 Managed Service for Apache Airflow

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

  1. Identifica tutti i service account associati agli ambienti Managed Airflow:

    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 account di servizio.

    4. Ripeti i passaggi precedenti per tutti gli ambienti Managed Airflow 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 ambienti Managed Airflow 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 account di servizio. Per le istruzioni, vedi Gestione account di servizio account.

  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 Managed Service for Apache Spark, Dataflow e Cloud Data Fusion

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

Segui le istruzioni per il tipo di account di servizio 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 account di servizio i ruoli necessari per eseguire i job sulla risorsa. Assicurati di seguire il principio del privilegio minimo.

      Per scoprire quali ruoli deve avere un account di servizio per eseguire job sulle risorse Managed Service for Apache Spark, 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 account di servizio. Per le istruzioni, vedi Gestione account di servizio account.

    3. Attiva i seguenti vincoli dei criteri dell'organizzazione per applicare i controlli delle autorizzazioni delaccount di serviziot 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 account di servizio 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 le autorizzazioni per il service account predefinito di Compute Engine.

      Al account di servizio predefinito di Compute Engine viene concesso automaticamente il ruolo Editor altamente permissivo (roles/editor). 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 simulare l'identità dell'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 nelaccount di serviziot predefinito di Compute Engine. Per le istruzioni, vedi Gestione account di servizio account.

    3. Attiva i seguenti vincoli dei criteri dell'organizzazione per applicare i controlli delle autorizzazioni delaccount di serviziot 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.

  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 account di servizio) 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 a rappresentare il account di servizio associato al repository Dataform. Puoi fornire questa autorizzazione concedendo il ruolo Utente service account (roles/iam.serviceAccountUser) sul account di servizio specifico. Per ulteriori informazioni, vedi Risolvere i problemi di autorizzazione.

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

    • Creatore token account di servizio (roles/iam.serviceAccountTokenCreator): richiesto per tutte le operazioni del repository che utilizzano un service account personalizzato.
    • Utente service account (roles/iam.serviceAccountUser): richiesto 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 account di servizio personalizzato.
  4. Controlla periodicamente le 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 account di servizio 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 account di servizio personalizzato. Per saperne di più, consulta Controllare le account di servizio account.