Quando crei determinate Google Cloud risorse, hai la possibilità di collegare un account di servizio. Il account di servizio collegato funge da identità di tutti i job in esecuzione sulla risorsa, consentendo ai job di eseguire l'autenticazione alle Google Cloud API.
Per la maggior parte dei Google Cloud servizi, gli utenti devono disporre dell'autorizzazione per rappresentare un
account di servizio al fine di collegarlo 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 service account alle risorse anche se non avevano l'autorizzazione per rappresentare i service account. 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 precedente di ciascun servizio:
| Servizio | Comportamento precedente |
|---|---|
| App Engine | Gli utenti potevano eseguire il deployment delle applicazioni App Engine, che utilizzano l 'identità del account di servizio predefinito di App Engine, anche se non avevano l'autorizzazione per rappresentare il account di servizio predefinito di App Engine. |
| Cloud Composer | Gli utenti potevano collegare qualsiasi account di servizio del progetto a un ambiente Cloud Composer, anche se non avevano l'autorizzazione per rappresentare nessuno dei service account del progetto. |
|
Gli utenti potevano collegare il account di servizio predefinito di Compute Engine alle risorse, anche se non avevano l'autorizzazione per rappresentare 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 quel account di servizio, anche se non avevano l'autorizzazione per rappresentare il account di servizio. |
Ora è necessario che questi servizi verifichino che gli utenti abbiano l'autorizzazione per rappresentare i service account quando li collegano alle risorse. Tuttavia, il comportamento precedente esiste ancora per i seguenti tipi di organizzazioni:
- Organizzazioni con utenti che hanno l'autorizzazione per eseguire il deployment delle applicazioni App Engine, ma non hanno l'autorizzazione per rappresentare il account di servizio predefinito di App Engine.
- Organizzazioni con utenti che hanno l'autorizzazione per eseguire il deployment degli ambienti Cloud Composer, ma non hanno l'autorizzazione per rappresentare alcun service account.
- Organizzazioni con utenti che hanno l'autorizzazione per eseguire il deployment delle risorse Cloud Data Fusion, Dataflow o Managed Service per Apache Spark, ma non hanno l'autorizzazione per rappresentare il account di servizio predefinito di Compute Engine.
- Organizzazioni con utenti che hanno l'autorizzazione per collegare un account di servizio a una risorsa Dataform e creare una chiamata del flusso di lavoro, ma non hanno l'autorizzazione per rappresentare il account di servizio.
Se la tua organizzazione è ancora interessata dal comportamento precedente, avrai ricevuto una comunicazione che spiega come disabilitarlo manualmente. Puoi anche consultare le sezioni seguenti per istruzioni dettagliate.
Protezione di App Engine
Per disabilitare manualmente il comportamento precedente per App Engine, assicurati che gli utenti abbiano l'autorizzazione per rappresentare il account di servizio di App Engine. Quindi, abilita un vincolo del criterio 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.
(Facoltativo) Utilizza i consigli sui ruoli per ridurre in modo sicuro le autorizzazioni per il account di servizio predefinito di App Engine.
Al account di servizio predefinito di App Engine viene concesso automaticamente il ruolo Editor (
roles/editor) altamente permissivo. Tuttavia, non è consigliabile utilizzare un ruolo così permissivo nelle configurazioni di produzione.Assicurati che tutti gli utenti che eseguono il deployment delle applicazioni abbiano la possibilità di rappresentare il account di servizio 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 account di servizio (roles/iam.serviceAccountUser). Puoi concedere questo ruolo nel progetto o nel service account predefinito di App Engine. Per le istruzioni, vedi Gestione account di servizio account.Abilita il vincolo del criterio dell'organizzazione
constraints/appengine.enforceServiceAccountActAsCheckper applicare i controlli delle autorizzazioni del service account durante il deployment delle applicazioni.(Facoltativo) Utilizza l' applicazione del criterio dell'organizzazione booleano per verificare che il vincolo del criterio dell'organizzazione sia applicato in tutti i tuoi progetti.
Protezione di Cloud Composer
Per disabilitare manualmente il comportamento precedente per Cloud Composer, assicurati che gli utenti abbiano l'autorizzazione per rappresentare i service account che collegano ai nuovi ambienti. Quindi, abilita un vincolo del criterio dell'organizzazione per applicare i controlli delle autorizzazioni del account di servizio quando colleghi i service account agli ambienti.
Identifica tutti i service account associati agli ambienti Cloud Composer:
Nellaconsole, vai alla pagina Ambienti Composer. Google Cloud
Fai clic sul nome di un ambiente.
Nella scheda Configurazione ambiente, trova il campo Service account e annota il nome del account di servizio.
Ripeti i passaggi precedenti per tutti gli ambienti Cloud Composer nel tuo progetto.
Verifica che questi service account seguano il principio del privilegio minimo:
Nellaconsole, vai alla pagina IAM , trova i service account e esamina i relativi ruoli. Google Cloud
Se necessario, concedi un ruolo meno permissivo al account di servizio. Puoi selezionare un ruolo dall'elenco dei ruoli IAM predefiniti, utilizzare un ruolo suggerito da un consiglio sui ruoli o creare un ruolo personalizzato.
Assicurati che tutti gli utenti che eseguono il deployment o gestiscono gli ambienti Cloud Composer abbiano la possibilità di rappresentare 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 account di servizio (roles/iam.serviceAccountUser). Puoi concedere questo ruolo nel progetto o in un singolo service account. Per le istruzioni, vedi Gestione account di servizio account.Abilita il vincolo del criterio dell'organizzazione
constraints/composer.enforceServiceAccountActAsCheckper applicare i controlli delle autorizzazioni del service account quando colleghi i service account agli ambienti.(Facoltativo) Utilizza l' applicazione del criterio dell'organizzazione booleano per verificare che il vincolo del criterio dell'organizzazione sia applicato in tutti i tuoi progetti.
Protezione di Managed Service per Apache Spark, Dataflow e Cloud Data Fusion
Per disabilitare manualmente il comportamento precedente per Managed Service per Apache Spark, Dataflow e Cloud Data Fusion, assicurati che gli utenti abbiano l'autorizzazione per rappresentare i service account che collegano alle nuove risorse. Quindi, abilita 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 account di servizio che vuoi collegare alle nuove risorse:
Se vuoi interrompere il collegamento del service account predefinito di Compute Engine alle nuove risorse, segui questi passaggi:
Crea un nuovo service account e concedi al account di servizio i ruoli necessari per eseguire i job sulla risorsa. Assicurati di seguire il principio del privilegio minimo.
Per scoprire quali ruoli sono necessari a un account di servizio per eseguire i job sulle risorse di Managed Service per Apache Spark, Dataflow e Cloud Data Fusion, consulta le seguenti sezioni:
- Requisiti del account di servizio di Managed Service per Apache Spark
- Requisiti account di servizio di Dataflow
- I service account di Cloud Data Fusion hanno gli stessi requisiti dei service account di Managed Service per Apache Spark.
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 account di servizio (roles/iam.serviceAccountUser). Puoi concedere questo ruolo nel progetto o nel service account. Per le istruzioni, vedi Gestione account di servizio account.Abilita i seguenti vincoli dei criteri dell'organizzazione per applicare i controlli delle autorizzazioni del account di servizio quando colleghi i service account alle risorse:
constraints/dataflow.enforceComputeDefaultServiceAccountCheckconstraints/dataproc.enforceComputeDefaultServiceAccountCheck
Il vincolo del criterio dell'organizzazione
constraints/dataproc.enforceComputeDefaultServiceAccountCheckapplica anche i controlli delle autorizzazioni per Cloud Data Fusion.(Facoltativo) Utilizza l' applicazione del criterio dell'organizzazione booleano per verificare che i vincoli dei criteri dell'organizzazione siano applicati in tutti i tuoi progetti.
Quando esegui il deployment di nuove risorse, utilizza il nuovo account di servizio anziché il account di servizio predefinito di Compute Engine.
Se vuoi continuare a collegare il service account predefinito di Compute Engine alle nuove risorse, segui questi passaggi:
(Facoltativo) Utilizza i consigli sui 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 (
roles/editor) altamente permissivo. Tuttavia, non è consigliabile utilizzare un ruolo così permissivo nelle configurazioni di produzione.Assicurati che tutti gli utenti che eseguono il deployment di queste risorse abbiano la possibilità di rappresentare il service account 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 account di servizio (roles/iam.serviceAccountUser). Puoi concedere questo ruolo nel progetto o nel service account predefinito di Compute Engine. Per le istruzioni, vedi Gestione account di servizio account.Abilita i seguenti vincoli dei criteri dell'organizzazione per applicare i controlli delle autorizzazioni del account di servizio quando colleghi i service account alle risorse:
constraints/dataflow.enforceComputeDefaultServiceAccountCheckconstraints/dataproc.enforceComputeDefaultServiceAccountCheck
(Facoltativo) Utilizza l' applicazione del criterio dell'organizzazione booleano per verificare che i vincoli dei criteri dell'organizzazione siano applicati in tutti i tuoi progetti.
Protezione di Dataform
Per disabilitare manualmente il comportamento precedente per Dataform, assicurati che gli utenti abbiano l'autorizzazione per rappresentare i service account che collegano alle risorse Dataform. Quindi, abilita la modalità act-as rigorosa per applicare i controlli delle autorizzazioni del account di servizio durante la creazione delle chiamate del flusso di lavoro.
Verifica la presenza di problemi di autorizzazione per evitare di interrompere i flussi di lavoro. Puoi farlo eseguendo una query su Cloud Logging per le voci specifiche di Dataform che indicano che a un principal (utente o account di servizio) manca l'autorizzazione
iam.serviceAccounts.actAsrichiesta. 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.Per gli utenti o i service account che devono creare chiamate del flusso di lavoro, concedi loro l'autorizzazione per rappresentare il account di servizio associato al repository Dataform. Puoi fornire questa autorizzazione concedendo il ruolo Utente account di servizio (
roles/iam.serviceAccountUser) sul service account specifico. Per saperne di più, consulta Risolvere i problemi di autorizzazione.Se utilizzi un account di servizio personalizzato, concedi i seguenti ruoli all'agente di servizio Dataform predefinito sul account di servizio personalizzato:
- Creatore token account di servizio
(
roles/iam.serviceAccountTokenCreator): obbligatorio per tutte le operazioni del repository che utilizzano un service account personalizzato. - Utente account di servizio
(
roles/iam.serviceAccountUser): obbligatorio solo se utilizzi le configurazioni del flusso di lavoro per pianificare o automatizzare le esecuzioni. Questo ruolo consente all'agente di servizio Dataform predefinito di eseguire le attività come account di servizio personalizzato.
- Creatore token account di servizio
(
Per applicare il controllo delle autorizzazioni act-as, abilita la modalità act-as rigorosa. Questa funzionalità migliora la sicurezza verificando che qualsiasi utente che crea una chiamata del flusso di lavoro disponga dell'autorizzazione
iam.serviceAccounts.actAssul account di servizio effettivo.- Per un nuovo repository, la modalità act-as rigorosa è abilitata per impostazione predefinita.
- Per un repository esistente, aggiorna il repository impostando il flag
strict_act_as_checkssutrue.
Per saperne di più, consulta Utilizzare la modalità act-as rigorosa.
Esegui periodicamente un audit delle risorse Dataform per garantire un utilizzo corretto account di servizio e la concessione delle autorizzazioni. Utilizza Cloud Asset Inventory per elencare tutte le risorse dei tipi
dataform.Repositoryedataform.WorkflowConfig, quindi esamina il camporesource.data.serviceAccountper 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 account di servizio (roles/iam.serviceAccountUser) e Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) su quel service account personalizzato. Per saperne di più, consulta Eseguire account di servizio account.