Questo documento mostra come eseguire le seguenti operazioni in Dataform:
- Concedi a Dataform l'accesso richiesto.
- Controllare l'accesso a Dataform con IAM.
- Controlla l'accesso alle singole tabelle con IAM.
Prima di iniziare
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
Concedere a Dataform l'accesso richiesto
Questa sezione mostra come concedere i ruoli Identity and Access Management (IAM) che gli agenti di servizio Dataform e i service account personalizzati richiedono per eseguire i workflow in BigQuery.
Informazioni sugli agenti di servizio Dataform e sui service account personalizzati
Puoi configurare service account personalizzati per eseguire i workflow per tuo conto nei seguenti modi:
- A livello di repository, per eseguire tutti i flussi di lavoro in un determinato repository.
- Singolarmente per ogni configurazione del workflow.
Quando crei un repository Dataform o una configurazione del workflow, puoi selezionare qualsiasi account di servizio per cui disponi delle autorizzazioni act-as. Devi configurare le autorizzazioni act-as richieste per tutti i service account associati alle risorse Dataform.
Quando crei il tuo primo repository Dataform, Dataform genera automaticamente un service agent. Dataform utilizza l'agente di servizio per interagire con BigQuery per tuo conto.
L'ID service agent Dataform ha il seguente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Sostituisci PROJECT_NUMBER con l'ID numerico del tuo progettoGoogle Cloud . Puoi trovare l'ID progetto Google Cloud nella dashboard della consoleGoogle Cloud . Per saperne di più, consulta Trovare il nome, il numero e l'ID del progetto.
Ruoli richiesti per gli agenti di servizio Dataform, i service account personalizzati e gli Account Google
Gli agenti di servizio Dataform, i service account personalizzati e le credenziali utente per un Account Google (anteprima) utilizzati per l'autenticazione in Dataform richiedono i seguenti ruoli IAM BigQuery per poter eseguire i flussi di lavoro in BigQuery:
- Editor dati BigQuery
(
roles/bigquery.dataEditor) sui progetti a cui Dataform deve accedere in lettura e scrittura. In genere, questi includono il progetto che ospita il repository Dataform. - Visualizzatore dati BigQuery
(
roles/bigquery.dataViewer) sui progetti a cui Dataform deve accedere in sola lettura. - BigQuery Job User
(
roles/bigquery.jobUser) nel progetto che ospita il repository Dataform. - BigQuery Data Owner
(
roles/bigquery.dataOwner) se vuoi eseguire query sui set di dati BigQuery. - Ruoli BigQuery per il controllo dell'accesso a livello di colonna se vuoi utilizzare i tag di criteri BigQuery.
Inoltre, concedi i seguenti ruoli all'agente di servizio Dataform nell'account di servizio effettivo per la configurazione del flusso di lavoro. Questi ruoli sono necessari per il funzionamento della modalità di emulazione rigorosa.
- Service Account User
(
roles/iam.serviceAccountUser) - Creatore token service account
(
roles/iam.serviceAccountTokenCreator)
Per le release automatiche dei repository e le esecuzioni automatiche dei workflow, concedi all'agente di servizio Dataform l'autorizzazione
iam.serviceAccounts.actAs sull'account di servizio effettivo.
Considerazioni sulla sicurezza
La concessione dei ruoli richiesti da Dataform a un agente di servizio Dataform, a un account di servizio personalizzato o a un Account Google di un utente (anteprima) comporta le seguenti considerazioni sulla sicurezza:
Qualsiasi account di servizio personalizzato a cui sono stati concessi i ruoli richiesti potrebbe ottenere l'accesso a BigQuery o Secret Manager nel progetto a cui appartiene il account di servizio, indipendentemente dai Controlli di servizio VPC. Quando Dataform utilizza un account di servizio personalizzato per eseguire i workflow, le richieste Dataform vengono trattate come se provenissero dall'interno del perimetro dei Controlli di servizio VPC del progetto che contiene il repository. Di conseguenza, Controlli di servizio VPC non blocca la comunicazione tra Dataform e altri servizi, come BigQuery o Secret Manager, se queste risorse si trovano all'interno dello stesso perimetro di servizio.
Per saperne di più su come gestire questi confini di sicurezza, consulta Configura i Controlli di servizio VPC.
Qualsiasi utente con l'autorizzazione IAM
dataform.repositories.createpuò eseguire codice utilizzando il service agent Dataform e tutte le autorizzazioni concesse a questo service agent o service account.Per saperne di più, consulta Considerazioni sulla sicurezza per le autorizzazioni Dataform.
Per mantenere un modello di autorizzazioni sicuro, controlla regolarmente i binding dei ruoli dell'agente di servizio Dataform. Per istruzioni dettagliate sul monitoraggio, vedi Monitorare le autorizzazioni dell'agente di servizio con Security Command Center.
Per limitare i dati che un utente, un service agent o un account di servizio possono leggere o scrivere in BigQuery, puoi concedere autorizzazioni IAM BigQuery granulari a tabelle o set di dati BigQuery selezionati. Per saperne di più, consulta Controllare l'accesso ai set di dati e Controllare l'accesso a tabelle e viste.
Per impedire agli utenti di eseguire azioni utilizzando le credenziali utente per l'Account Google di un altro utente, vengono applicate le seguenti limitazioni:
- Per modificare una configurazione del flusso di lavoro con le credenziali utente di un altro Account Google collegato, devi collegare le credenziali utente del tuo Account Google alla configurazione del flusso di lavoro o modificare la configurazione del flusso di lavoro per l'autenticazione con unaccount di serviziot personalizzato.
- Non puoi modificare il risultato di una compilazione per una configurazione di rilascio se esistono configurazioni del flusso di lavoro che fanno riferimento alla configurazione di rilascio a cui sono associate le credenziali di un altro utente con Account Google.
Non puoi impostare una configurazione del workflow per l'autenticazione con le credenziali utente dell'Account Google e fare riferimento a una configurazione di rilascio con una pianificazione. Questa limitazione ha le seguenti conseguenze:
- Non puoi aggiornare una configurazione di rilascio per utilizzare una pianificazione se esistono configurazioni del flusso di lavoro che fanno riferimento alla configurazione di rilascio impostate per l'autenticazione con le credenziali utente dell'Account Google.
- Non puoi creare una configurazione del flusso di lavoro che esegue l'autenticazione con le credenziali utente dell'Account Google e punta a una configurazione di rilascio con una pianificazione.
- Non puoi creare o aggiornare una configurazione del flusso di lavoro per utilizzare le credenziali utente dell'Account Google e indirizzare a una configurazione di rilascio con una pianificazione.
Concedere i ruoli BigQuery richiesti
Per concedere i ruoli IAM BigQuery richiesti al tuo agente di servizio Dataform, a un account di servizio personalizzato che vuoi utilizzare in Dataform o a un Account Google di un utente che vuoi utilizzare per l'autenticazione in Dataform (Anteprima), segui questi passaggi:
Nella console Google Cloud , vai alla pagina Dataform.
Seleziona o crea un repository.
Nella console Google Cloud vai alla pagina IAM.
Fai clic su Concedi l'accesso.
Nel campo Nuove entità, inserisci l'ID agente di servizio, l'ID service account o l'email dell'account Google dell'utente (anteprima).
Nell'elenco Seleziona un ruolo, seleziona il ruolo Utente job BigQuery.
Fai clic su Aggiungi un altro ruolo e poi seleziona il ruolo Editor dati BigQuery nell'elenco Seleziona un ruolo.
Fai clic su Aggiungi un altro ruolo e poi, nell'elenco Seleziona un ruolo, seleziona il ruolo Visualizzatore dati BigQuery.
Fai clic su Salva.
Concedere i ruoli richiesti per i workflow automatici
Per utilizzare un account di servizio personalizzato in Dataform, l'agente di servizio Dataform deve essere in grado di accedere al service account personalizzato. In questo modo Dataform può eseguire i workflow utilizzando le autorizzazioni definite nel account di servizio personalizzato anziché nell'account del service agent.
Per concedere questo accesso, devi concedere il
ruolo Creatore token service account
(roles/iam.serviceAccountTokenCreator) all'agente di servizio
Dataform come entità. In questo modo, l'agente di servizio Dataform può impersonare il account di servizio creando credenziali di breve durata note come token. Questi token sono necessari a Dataform per eseguire
i workflow utilizzando l'identità delaccount di serviziot personalizzato.
Devi anche concedere il
ruolo Utente service account
(roles/iam.serviceAccountUser) al service agent Dataform. In questo modo, l'agente di servizio Dataform può avviare nuove esecuzioni automatiche del workflow per le configurazioni del workflow eseguite dal account di servizio personalizzato.
Per concedere all'agente di servizio Dataform l'accesso a un account di serviziot personalizzato, segui questi passaggi:
Nella console Google Cloud , vai a IAM > Service account.
Seleziona il progetto Google Cloud in cui si trova il tuo account di servizio personalizzato.
Nella pagina Service account per il progetto "PROJECT_NAME", seleziona il tuo account di servizio personalizzato.
Vai a Entità con accesso e poi fai clic su Concedi accesso.
Nel campo Nuove entità, inserisci l'ID del service agent Dataform.
L'ID service agent Dataform ha il seguente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.comNell'elenco Seleziona un ruolo, seleziona il ruolo Creatore token service account e il ruolo Utente service account.
Fai clic su Salva.
Il account di servizio personalizzato è ora pronto per essere configurato nel tuo repository Dataform.
Controllare le configurazioni dei account di servizio
Questa sezione mostra come controllare le risorse Dataform per garantire l'utilizzo corretto deiaccount di serviziot e la concessione delle autorizzazioni. Il controllo è particolarmente importante quando si utilizzano service account personalizzati, in quanto richiedono autorizzazioni specifiche per il funzionamento dell'agente di servizio Dataform.
Quando utilizzi un account di servizio personalizzato per un repository o una configurazione del flusso di lavoro Dataform, devi verificare che l'agente di servizio Dataform disponga del ruolo Utente service account (roles/iam.serviceAccountUser) per il account di servizio personalizzato. Questo ruolo
concede l'autorizzazione iam.serviceAccounts.actAs, che consente alle esecuzioni pianificate,
avviate dal service agent Dataform, di simulare
account di serviziount personalizzato. Inoltre, verifica che
l'agente di servizio Dataform disponga del
ruolo Creatore token service account
(roles/iam.serviceAccountTokenCreator)
nell'account di servizio effettivo.
Verificare gli account di servizio del repository
Innanzitutto, identifica gli asset dataform.Repository inclusi nell'ambito della pianificazione e dell'esecuzione di Dataform. Poi, verifica le configurazioni
dell'account di servizio per i repository inclusi nell'ambito.
Utilizza Cloud Asset Inventory per elencare tutte le risorse di tipo
dataform.Repository. Per ulteriori informazioni, consulta Visualizzare gli asset.Per ogni repository nell'output di Cloud Asset Inventory, controlla il campo
resource.data.labelsper determinare se è incluso nell'ambito. Il percorso esatto potrebbe variare leggermente in base al formato di esportazione.Identifica i repository fuori ambito esaminando la mappa delle etichette per la chiave
single-file-asset-type. La presenza di questa chiave indica che il repository viene utilizzato da una funzionalità BigQuery. Se il valore èsqlodata_canvas, il repository può essere escluso dai controlli delle autorizzazioni dell'account di servizio.I repository rimanenti privi di questa chiave o di questi valori rientrano nell'ambito dei controlli delle autorizzazioni delaccount di serviziot.
Per ogni repository incluso nell'ambito, controlla il campo
resource.data.serviceAccountnell'output di Cloud Asset Inventory per determinare se è configurato un account di servizio personalizzato:- Se il campo
resource.data.serviceAccountè presente e il suo valore è diverso dall'indirizzo email dell'agente di servizio Dataform del progetto, il repository utilizza unaccount di serviziot personalizzato. Se il campo
resource.data.serviceAccountè assente o se il valore del campo corrisponde al service agent Dataform del progetto, il repository utilizza il service agent.
- Se il campo
Se viene utilizzato un service account personalizzato, verifica che l'agente di servizio Dataform disponga sia del ruolo Utente account di servizio (
roles/iam.serviceAccountUser) sia del ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) per quel service account personalizzato.
Verificare i service account di configurazione del workflow
L'utilizzo di service account personalizzati dedicati per le configurazioni del flusso di lavoro Dataform è una best practice di sicurezza, in linea con il principio del privilegio minimo.
Per verificare l'utilizzo del account di servizio per dataform.WorkflowConfig resources, segui questi passaggi:
Utilizza Cloud Asset Inventory per elencare tutte le risorse di tipo
dataform.WorkflowConfig.Per ogni configurazione del flusso di lavoro, esamina l'output di Cloud Asset Inventory per determinare il account di servizio effettivo:
- Se è presente il campo
resource.data.serviceAccount, questo valore è l'indirizzo email delaccount di serviziot impostato esplicitamente nella configurazione del flusso di lavoro. - Se il campo
resource.data.serviceAccountnon è presente, la configurazione del workflow eredita il account di servizio dal repository padre. Controlla la configurazione del repository principale per trovare l'account di servizio effettivo.
- Se è presente il campo
Identifica se viene utilizzato un account di servizio personalizzato confrontando l'indirizzo email del account di servizio effettivo con l'indirizzo email dell'agente di servizio Dataform del progetto. Se sono diversi, viene utilizzato un account di servizio personalizzato.
Se è in uso un account di servizio personalizzato, assicurati che all'agente di servizio Dataform siano stati concessi sia il ruolo Service Account User (
roles/iam.serviceAccountUser) sia il ruolo Service Account Token Creator (roles/iam.serviceAccountTokenCreator) per questo service account personalizzato. Queste autorizzazioni consentono all'agente di servizio Dataform di avviare le esecuzioni del flusso di lavoro impersonando ilaccount di serviziot personalizzato.
Monitora le autorizzazioni dell'agente di servizio con Security Command Center
Per garantire il rispetto continuo del principio del privilegio minimo, monitora attivamente il tuo progetto in Security Command Center per i risultati relativi ad agenti di servizio e service account con privilegi eccessivi.
Per istruzioni su come esaminare e applicare i risultati della correzione in Security Command Center, consulta Risultati di IAM Recommender e Esaminare i risultati relativi all'identità nella console.
Quando correggi un risultato SERVICE_AGENT_GRANTED_BASIC_ROLE per un service agent Dataform, sostituisci il ruolo eccessivamente permissivo con un ruolo predefinito che disponga delle autorizzazioni minime richieste, limitate alla risorsa specifica. Ad esempio, concedi il ruolo Utente account di servizio (roles/iam.serviceAccountUser) su un service account specifico.
Controlla l'accesso a Dataform con IAM
Questa sezione descrive le opzioni di controllo dell'accesso per Dataform e mostra come visualizzare e concedere i ruoli Dataform. Dataform utilizza Identity and Access Management (IAM) per controllo dell'accesso. Per saperne di più su ruoli e autorizzazioni in IAM, consulta Indice di ruoli e autorizzazioni IAM.
Ruoli Dataform predefiniti
La tabella seguente elenca i ruoli predefiniti che ti danno accesso alle risorse Dataform:
| Role | Permissions |
|---|---|
Dataform Admin( Full access to all Dataform resources. |
|