Questo documento mostra come eseguire le seguenti operazioni in Dataform:
- Concedi a Dataform l'accesso richiesto.
- Controlla 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.
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.
Concedi a Dataform l'accesso richiesto
Questa sezione mostra come concedere i ruoli Identity and Access Management (IAM) richiesti dagli agenti di servizio Dataform e dai service account personalizzati per eseguire i workflow in BigQuery.
Informazioni sui service account personalizzati e sugli agenti di servizio Dataform
Puoi configurare service account personalizzati per eseguire i workflow per tuo conto nei seguenti modi:
- A livello di repository, per eseguire tutti i workflow in un determinato repository.
- Singolarmente per ogni configurazione del workflow.
Quando crei un repository o una configurazione del workflow di Dataform, 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 tue risorse Dataform.
Quando crei il tuo primo repository Dataform, Dataform genera automaticamente un agente di servizio. Dataform utilizza l'agente di servizio per interagire con BigQuery per tuo conto.
L'ID dell'agente di servizio Dataform è nel seguente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.
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 Trova 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 di un Account Google utilizzato per l'autenticazione in Dataform richiedono i seguenti ruoli IAM BigQuery per poter eseguire i workflow in BigQuery:
- BigQuery Data Editor
(
roles/bigquery.dataEditor) sui progetti per i quali Dataform richiede l'accesso sia in lettura che in scrittura. In genere, questi includono il progetto che ospita il repository Dataform. - BigQuery Data Viewer
(
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 policy di BigQuery.
Inoltre, concedi i seguenti ruoli all'agente di servizio Dataform sul service account effettivo per la configurazione del workflow. Questi ruoli sono necessari per il funzionamento della modalità di simulazione rigorosa.
- Service Account User
(
roles/iam.serviceAccountUser) - Creatore token service account
(
roles/iam.serviceAccountTokenCreator)
Per i release automatici del repository e le esecuzioni automatiche dei workflow,
concedi all'agente di servizio Dataform
l'autorizzazione iam.serviceAccounts.actAs sul
service account effettivo.
Per abilitare l'arricchimento dei metadati in Knowledge Catalog e l'integrazione dello scorecard della qualità dei dati, concedi il ruolo Dataplex Catalog Editor (roles/dataplex.catalogEditor) al progetto o al gruppo di voci @bigquery ai service account personalizzati o agli Account Google utilizzati per l'esecuzione del workflow.
Considerazioni sulla sicurezza
La concessione dei ruoli richiesti da Dataform a un agente di servizio Dataform, a un account di servizio personalizzato o all'Account Google di un utente 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, Secret Manager o Knowledge Catalog nel progetto a cui appartiene il account di servizio, indipendentemente dai Controlli di servizio VPC. Quando Dataform utilizza un service account personalizzato per eseguire i workflow, le richieste di Dataform vengono trattate come provenienti dall'interno del perimetro dei Controlli di servizio VPC del progetto che contiene il repository. Di conseguenza, i Controlli di servizio VPC non bloccano la comunicazione tra Dataform e altri servizi, come BigQuery, Secret Manager o Knowledge Catalog, se queste risorse si trovano all'interno dello stesso perimetro di servizio.
Per maggiori dettagli su come gestire questi confini di sicurezza, consulta Configura i Controlli di servizio VPC.
Qualsiasi utente con l'autorizzazione IAM
dataform.repositories.createpuò eseguire il codice utilizzando l'agente di servizio Dataform e tutte le autorizzazioni concesse a quell'agente di servizio o service account.Per saperne di più, consulta Considerazioni sulla sicurezza per le autorizzazioni di Dataform.
Per mantenere un modello di autorizzazioni sicuro, controlla regolarmente le associazioni dei ruoli dell'agente di servizio Dataform. Per istruzioni dettagliate sul monitoraggio, consulta Monitora le autorizzazioni degli agenti di servizio con Security Command Center.
Per limitare i dati che un utente, un agente di servizio o un account di servizio può leggere o scrivere in BigQuery, puoi concedere autorizzazioni IAM BigQuery granulari a set di dati o tabelle BigQuery selezionati. Per saperne di più, consulta Controllo dell'accesso ai set di dati e Controllo dell'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 workflow con le credenziali utente di un altro Account Google collegato, devi collegare le credenziali utente del tuo Account Google alla configurazione del workflow o modificare la configurazione del workflow per l'autenticazione con un account di servizio personalizzato.
- Non puoi modificare un risultato della compilazione per una configurazione di rilascio se esistono configurazioni del workflow che fanno riferimento alla configurazione di rilascio con le credenziali di un altro utente dell'Account Google allegate.
Non puoi impostare una configurazione del workflow per l'autenticazione con le credenziali utente dell'Account Google e fare riferimento a una configurazione della release con una pianificazione. Questa limitazione ha le seguenti conseguenze:
- Non puoi aggiornare una configurazione di release per utilizzare una pianificazione se sono presenti configurazioni del workflow che fanno riferimento alla configurazione di release impostate per l'autenticazione con le credenziali utente dell'Account Google.
- Non puoi creare una configurazione del workflow che si autentica con le credenziali utente dell'Account Google e rimanda a una configurazione di rilascio con una pianificazione.
- Non puoi creare o aggiornare una configurazione del workflow per utilizzare le credenziali utente dell'Account Google e puntare a una configurazione della release con una pianificazione.
Per non consentire l'utilizzo delle credenziali utente finale dell'Account Google, un amministratore dell'organizzazione può creare un vincolo della policy dell'organizzazione personalizzato che nega l'impostazione
end_user_auth_config. Per saperne di più, consulta Crea vincoli delle policy dell'organizzazione personalizzate.
Concedi i ruoli BigQuery richiesti
Per concedere i ruoli IAM BigQuery richiesti all'agente di servizio Dataform, a un account di servizio personalizzato che vuoi utilizzare in Dataform o all'Account Google di un utente che vuoi utilizzare per l'autenticazione in Dataform, 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 dell'agente di servizio, l'ID del service account o l'indirizzo email dell'Account Google dell'utente.
Nell'elenco Seleziona un ruolo, seleziona il ruolo Utente job BigQuery.
Fai clic su Aggiungi un altro ruolo, quindi nell'elenco Seleziona un ruolo, seleziona il ruolo BigQuery Data Editor.
Fai clic su Aggiungi un altro ruolo, quindi nell'elenco Seleziona un ruolo, seleziona il ruolo Visualizzatore dati BigQuery.
Fai clic su Salva.
Concedi 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 dell'agente di servizio.
Per concedere questo accesso, devi concedere il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) all'agente di servizio Dataform come entità. In questo modo, l'agente di servizio Dataform può impersonare l'account di servizio creando credenziali di breve durata note come token. Questi token sono necessari a Dataform per eseguire i workflow utilizzando l'identità del account di servizio personalizzato.
Devi anche concedere il
ruolo Service Account User
(roles/iam.serviceAccountUser) all'agente di servizio
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 servizio 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 dell'agente di servizio Dataform.
L'ID dell'agente di servizio Dataform è nel seguente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.Nell'elenco Seleziona un ruolo, seleziona il ruolo Creatore token account di servizio e il ruolo Utente account di servizio.
Fai clic su Salva.
Il account di servizio personalizzato è ora pronto per essere configurato all'interno del repository Dataform.
Controlla le configurazioni dei account di servizio
Questa sezione mostra come eseguire l'audit delle risorse Dataform per garantire l'utilizzo corretto dei account di servizio e la concessione delle autorizzazioni. Il controllo è particolarmente importante quando si utilizzano service account personalizzati, poiché 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 workflow Dataform, devi verificare che l'agente di servizio Dataform disponga del ruolo Utente service account (roles/iam.serviceAccountUser) sul account di servizio personalizzato. Questo ruolo concede l'autorizzazione iam.serviceAccounts.actAs, che consente alle esecuzioni pianificate, avviate dall'agente di servizio Dataform, di simulare l'identità del account di servizio personalizzato. Inoltre, verifica che l'agente di servizio Dataform disponga del ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) nell'account di servizio effettivo.
Verifica i service account del repository
Innanzitutto, identifica gli asset dataform.Repository che rientrano nell'ambito della pianificazione e dell'esecuzione di Dataform. Poi, verifica le configurazioni dei service account per i repository nell'ambito.
Utilizza Cloud Asset Inventory per elencare tutte le risorse del tipo
dataform.Repository. Per saperne di più, consulta Visualizza gli asset.Per ogni repository nell'output di Cloud Asset Inventory, controlla il campo
resource.data.labelsper determinare se rientra 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 è utilizzato da una funzionalità di BigQuery. Se il valore èsqlodata_canvas, il repository può essere escluso dai controlli delle autorizzazioni del account di servizio.I restanti repository privi di questa chiave o di questi valori rientrano nell'ambito dei controlli delle autorizzazioni del account di servizio.
Per ogni repository in 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 un account di servizio personalizzato. Se il campo
resource.data.serviceAccountnon è presente o se il valore del campo corrisponde all'agente di servizio Dataform del progetto, il repository utilizza l'agente di servizio.
- Se il campo
Se utilizzi un account di servizio personalizzato, verifica che l'agente di servizio Dataform disponga sia del ruolo Service Account User (
roles/iam.serviceAccountUser) sia del ruolo Service Account Token Creator (roles/iam.serviceAccountTokenCreator) su quel account di servizio personalizzato.
Verifica i service account di configurazione del workflow
L'utilizzo di service account personalizzati dedicati per le configurazioni dei workflow di Dataform è una best practice per la 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 del tipo
dataform.WorkflowConfig.Per ogni configurazione del workflow, 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 del account di servizio impostato esplicitamente nella configurazione del workflow. - Se il campo
resource.data.serviceAccountnon è presente, la configurazione del workflow eredita il account di servizio dal repository principale. Controlla la configurazione del repository principale per trovare il 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, significa che è in uso un account di servizio personalizzato.
Se è in uso un service account personalizzato, assicurati che all'agente di servizio Dataform siano concessi sia il ruolo Utente account di servizio (
roles/iam.serviceAccountUser) sia il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) su quel service account personalizzato. Queste autorizzazioni consentono all'agente di servizio Dataform di avviare le esecuzioni del workflow impersonando il account di servizio personalizzato.
Monitora le autorizzazioni degli agenti 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 individuare 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 del motore per suggerimenti IAM e Analisi dei risultati relativi all'identità nella console.
Quando correggi un risultato SERVICE_AGENT_GRANTED_BASIC_ROLE per un agente di servizio Dataform, sostituisci il ruolo eccessivamente permissivo con un ruolo predefinito con le autorizzazioni minime richieste, limitato alla risorsa specifica. Ad esempio, concedi il ruolo Service Account User (roles/iam.serviceAccountUser) su un account di servizio 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ù sui ruoli e sulle autorizzazioni in IAM, consulta l'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. |
|
Dataform Editor( Edit access to Workspaces and Repositories. |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
Code Commenter Beta( Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources. |
|
Code Creator( Access only to private and shared code resources. The permissions in the Code Creator let you create and list code in Dataform, and access only the code that you created and code that was explicitly shared with you. |
|
Code Editor( Edit access code resources. |
|
Code Owner( Full access to code resources. |
|
Code Scheduler Beta( Access for scheduling workflows and releases. |
|
Code Viewer( Read-only access to all code resources. |
|
Team Folder Commenter Beta( View and comment access to a team folder and its contents. |
|
Team Folder Contributor( Edit access to a team folder and its contents. |
|
Team Folder Creator( Access to create new team folders. |
|
Team Folder Owner( Full access to a team folder and its contents. Can share the team folder and its contents. |
|
Team Folder Viewer( View access to a team folder and its contents. |
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Ruoli Dataform personalizzati
I ruoli personalizzati possono includere qualsiasi autorizzazione specificata. Puoi creare ruoli personalizzati che includono le autorizzazioni per eseguire operazioni amministrative specifiche, come la creazione di workspace di sviluppo o la creazione di file e directory all'interno di un workspace di sviluppo. Per creare ruoli personalizzati, vedi Creazione e gestione di ruoli personalizzati.
Considerazioni sulla sicurezza per le autorizzazioni di Dataform
Qualsiasi utente con l'autorizzazione dataform.repositories.create può eseguire il codice in BigQuery utilizzando un account di servizio personalizzato e tutte le autorizzazioni concesse a quel account di servizio. Ciò include l'esecuzione di workflow di Dataform e la possibilità di gestire i metadati in Knowledge Catalog.
Poiché la modalità act-as rigorosa è applicata a tutti i repository, l'autorizzazione dataform.repositories.create richiede implicitamente che l'utente disponga delle autorizzazioni act-as sul account di servizio personalizzato per l'esecuzione dei workflow successivi. In questo modo, solo gli utenti con diritti di impersonificazione espliciti possono eseguire il codice utilizzando l'identità del service account.
L'autorizzazione dataform.repositories.create è inclusa nei seguenti ruoli IAM:
- BigQuery Admin (
roles/bigquery.admin) - Utente job BigQuery (
roles/bigquery.jobUser) - BigQuery Studio User (
roles/bigquery.studioUser) - BigQuery User (
roles/bigquery.user) - Code Creator (
roles/dataform.codeCreator) - Editor di codice (
roles/dataform.codeEditor) - Proprietario del codice (
roles/dataform.codeOwner) - Colab Enterprise User (
roles/aiplatform.colabEnterpriseUser) - Dataform Admin (
roles/dataform.admin)
Per limitare i dati che un utente o un account di servizio può leggere o scrivere in BigQuery, puoi concedere autorizzazioni IAM BigQuery granulari a set di dati o tabelle BigQuery selezionati. Per saperne di più, consulta Controllo dell'accesso ai set di dati e Controllo dell'accesso a tabelle e viste.
Per ulteriori informazioni sui service account personalizzati e sui ruoli e sulle autorizzazioni che richiedono, consulta Concedi a Dataform l'accesso richiesto.
Accesso ai secret durante l'installazione del pacchetto
Se configuri pacchetti NPM privati utilizzando i secret di Secret Manager, questi secret possono essere potenzialmente accessibili agli utenti che dispongono delle autorizzazioni per modificare il codice o attivare la compilazione del codice da un commit Git specifico nel repository.
Durante l'installazione del pacchetto, attivata quando i pacchetti vengono installati manualmente in un'area di lavoro o quando il codice viene compilato da un commit Git specifico, il client NPM legge le credenziali dal file .npmrc e trasmette il token di autenticazione al registry NPM configurato. Un utente con le autorizzazioni per modificare il file .npmrc nel proprio workspace può configurare le impostazioni per accedere ai secret reindirizzando le richieste del registry a un server esterno.
Questa installazione e la potenziale esposizione dei token possono verificarsi nei seguenti scenari:
Installazione del pacchetto dell'area di lavoro: attivata manualmente all'interno di un'area di lavoro. Ciò richiede le autorizzazioni di modifica dell'area di lavoro, che possono essere trovate nei ruoli Dataform Editor (
roles/dataform.editor) o Dataform Code Editor (roles/dataform.codeEditor).Compilazione di un commitish Git: attivata automaticamente durante la creazione di un risultato di compilazione per un commitish Git, ad esempio un ramo, un tag o un SHA di commit, nel repository. Questo scenario richiede l'autorizzazione
dataform.compilationResults.create.
Per proteggere le tue credenziali, ti consigliamo di procedere come segue:
Concedi i ruoli con autorizzazioni di modifica del repository (come Dataform Code Editor) o autorizzazioni di compilazione (come Dataform Code Viewer) solo agli utenti attendibili.
Limita i repository Git remoti a cui Dataform può connettersi utilizzando le policy dell'organizzazione. Per saperne di più, consulta Limita i repository remoti.
Limita l'accesso a Secret Manager dell'agente di servizio Dataform solo ai secret necessari.
Non consentire l'utilizzo delle credenziali dell'utente finale utilizzando vincoli delle policy dell'organizzazione personalizzate che negano l'impostazione
end_user_auth_config. Per saperne di più, consulta Crea vincoli delle policy dell'organizzazione personalizzate.
Visualizza i ruoli Dataform
Nella console Google Cloud , segui questi passaggi:
Vai alla pagina IAM e amministrazione > Ruoli.
Nel campo Filtro, seleziona Utilizzato in, digita
Dataforme poi premi Invio.Fai clic su uno dei ruoli elencati per visualizzare le relative autorizzazioni nel riquadro a destra.
Ad esempio, il ruolo Amministratore Dataform ha accesso completo a tutte le risorse Dataform.
Per saperne di più sulla concessione di un ruolo in un progetto, consulta Concedi un ruolo. In questo modo, puoi concedere ruoli predefiniti o personalizzati.
Controlla l'accesso a un singolo repository
Per controllare l'accesso a Dataform con autorizzazioni granulari, puoi impostare i ruoli IAM di Dataform su singoli repository utilizzando la richiesta repositories.setIamPolicy dell'API Dataform.
Per impostare i ruoli IAM di Dataform su un singolo repository Dataform, segui questi passaggi:
Nel terminale, passa la richiesta API Dataform
repositories.setIamPolicycon una policy di accesso.Nella policy, associa un utente, un gruppo, un dominio, un agente di servizio o un service account a un ruolo selezionato nel seguente formato:
{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "TYPE:IDENTIFIER", ] }, ], } }Sostituisci quanto segue:
ROLE: il ruolo IAM di Dataform che vuoi concedere nel repository.TYPE:user,group,domainoserviceAccount.IDENTIFIER: l'utente, il gruppo, il dominio o l'account di servizio a cui vuoi concedere il ruolo.
Nella pagina IAM, assicurati che tutti gli utenti possano visualizzare l'elenco completo dei repository Dataform tramite un ruolo Dataform con l'autorizzazione
dataform.repositories.list.In IAM, assicurati che solo agli utenti che richiedono l'accesso completo a tutti i repository Dataform venga concesso il ruolo Amministratore Dataform su tutti i repository.
Il seguente comando passa la richiesta API Dataform repositories.setIamPolicy che concede il ruolo Dataform Editor sul repository sales a un singolo utente:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.editor", "members": ["user:sasha@examplepetstore.com"]}] }}' "https://dataform.googleapis.com/v1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Concedi l'accesso pubblico a un repository
Puoi concedere l'accesso pubblico a un repository Dataform concedendo i ruoli IAM sul repository all'entità allAuthenticatedUsers.
Quando assegni un ruolo IAM all'entità allAuthenticatedUsers, i service account e tutti gli utenti su internet che hanno eseguito l'autenticazione con un Account Google ricevono quel ruolo. Sono inclusi gli account non collegati a un account Google Workspace o a un dominio Cloud Identity, ad esempio gli account Gmail personali. Gli utenti non autenticati, come i visitatori anonimi, non sono inclusi. Per saperne di più, consulta Tutti gli utenti autenticati.
Ad esempio, se concedi il ruolo Dataform Viewer a allAuthenticatedUsers nel repository sales, tutti i service account e gli utenti su internet che hanno eseguito l'autenticazione con un Account Google hanno accesso di sola lettura a tutte le risorse di codice sales.
Per concedere l'accesso pubblico a un repository Dataform, segui questi passaggi:
Nel terminale, passa la richiesta API Dataform
repositories.setIamPolicycon una policy di accesso.Nella policy, associa l'entità
allAuthenticatedUsersa un ruolo selezionato nel seguente formato:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }Sostituisci
ROLEcon un ruolo IAM Dataform che vuoi concedere a tutti gli utenti autenticati.
Il seguente comando passa la richiesta API Dataform repositories.setIamPolicy che concede il ruolo Dataform Viewer sul repository sales a allAuthenticatedUsers:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.viewer", "members": ["allAuthenticatedUsers"]}] }}' "https://dataform.googleapis.com/v1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Impedisci l'accesso pubblico ai repository
Per assicurarti che non venga concesso l'accesso al pubblico su nessun repository Dataform, puoi limitare l'entità allAuthenticatedUsers nel tuo progetto.
Per limitare allAuthenticatedUsers nel tuo progetto, puoi impostare la policy iam.allowedPolicyMemberDomains e rimuovere allAuthenticatedUsers dall'elenco di allowed_values.
Quando limiti allAuthenticatedUsers nella policy iam.allowedPolicyMemberDomains, l'entità allAuthenticatedUsers non può essere utilizzata in nessuna policy IAM del progetto, il che impedisce di concedere l'accesso pubblico a tutte le risorse, inclusi i repository Dataform.
Per saperne di più sulla policy iam.allowedPolicyMemberDomains e per istruzioni su come impostarla, consulta Limitazione delle identità per dominio.
Federazione delle identità per la forza lavoro in Dataform
La federazione delle identità per la forza lavoro ti consente di utilizzare un provider di identità (IdP) esterno per autenticare e autorizzare gli utenti ai servizi Google Cloud con IAM.
Dataform supporta la federazione delle identità per la forza lavoro senza limitazioni note.
Controlla l'accesso alle singole tabelle con IAM
Questa sezione mostra come concedere e revocare i ruoli IAM di BigQuery per singole tabelle e viste Dataform.
Quando Dataform esegue una tabella o una vista, crea la risorsa in BigQuery. Durante lo sviluppo in Dataform, puoi concedere ruoli BigQuery a singole tabelle e viste per controllarne l'accesso in BigQuery dopo l'esecuzione.
Per saperne di più sulla concessione e sulla revoca dell'accesso alle risorse, consulta Concedi l'accesso a una risorsa.
Concedi i ruoli BigQuery a una tabella o una vista
Puoi concedere ruoli BigQuery a una tabella o una vista in Dataform aggiungendo un blocco post_operations con l'istruzione DCL GRANT al file di definizione .sqlx della tabella o della vista selezionata.
Per concedere i ruoli BigQuery a una tabella o una vista selezionata, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Dataform.
Seleziona un repository, quindi seleziona un workspace.
Nel riquadro File, espandi la directory
definitions/.Seleziona il file di definizione
.sqlxdella tabella o della vista a cui vuoi concedere l'accesso.Nel file, inserisci il seguente snippet di codice:
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST" }Sostituisci quanto segue:
ROLE_LIST: il ruolo BigQuery o l'elenco di ruoli BigQuery separati da virgole che vuoi concedere.
RESOURCE_TYPE:
TABLEoVIEW.USER_LIST: l'elenco separato da virgole degli utenti a cui viene concesso il ruolo.
Per un elenco dei formati validi, consulta user_list.
(Facoltativo) Fai clic su Formato.
Esegui la tabella o la vista.
Se hai concesso l'accesso a una tabella incrementale, rimuovi l'istruzione
GRANTdal file di definizione della tabella dopo la prima esecuzione.
Il seguente esempio di codice mostra il ruolo Visualizzatore BigQuery concesso a un utente su una tabella:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
Revoca i ruoli BigQuery da una tabella o una vista
Puoi revocare i ruoli BigQuery da una tabella o una vista aggiungendo un blocco post_operations con l'istruzione DCL REVOKE al file di definizione .sqlx della tabella o della vista selezionata.
Per revocare i ruoli BigQuery da una tabella o una vista selezionata, segui questi passaggi:
Nella console Google Cloud , vai alla pagina Dataform.
Seleziona un repository, quindi seleziona un workspace.
Nel riquadro File, espandi la directory
definitions/.Seleziona il file di definizione
.sqlxdella tabella o della vista per cui vuoi revocare l'accesso.Nel blocco
post_operations, inserisci la seguente istruzioneREVOKE:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "USER_LIST"Sostituisci quanto segue:
- ROLE_LIST: il ruolo BigQuery o l'elenco di ruoli BigQuery separati da virgole che vuoi revocare.
- RESOURCE_TYPE:
TABLEoVIEW. - USER_LIST: l'elenco separato da virgole degli utenti a cui viene revocato il ruolo. Per un elenco dei formati validi, consulta user_list.
Per revocare l'accesso concesso in un'istruzione
GRANTnel file, sostituisci l'istruzioneGRANTcon un'istruzioneREVOKE.(Facoltativo) Fai clic su Formato.
Esegui la tabella o la vista.
Se hai revocato l'accesso a una tabella incrementale, rimuovi l'istruzione
REVOKEdal file di definizione della tabella dopo la prima esecuzione.
Il seguente esempio di codice mostra la revoca del ruolo Visualizzatore BigQuery a un utente su una tabella:
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
Gestisci collettivamente i ruoli BigQuery per tabelle e viste
Per controllare l'accesso di BigQuery a singole tabelle e viste in un'unica posizione, puoi creare un file type: "operations" dedicato con istruzioni DCL GRANT e REVOKE.
Per gestire l'accesso alle tabelle BigQuery in un unico file type: "operations", segui questi passaggi:
Nella console Google Cloud , vai alla pagina Dataform.
Seleziona un repository, quindi seleziona un workspace.
Nel riquadro File, accanto a
definitions/, fai clic sul menu
Altro.Fai clic su Crea file.
Nel campo Aggiungi un percorso del file, inserisci il nome del file seguito da
.sqlxdopodefinitions/. Ad esempio:definitions/table-access.sqlx.I nomi file possono includere solo numeri, lettere, trattini e trattini bassi.
Fai clic su Crea file.
Nel riquadro File, espandi la directory
definitions/e seleziona il file appena creato.Nel file, inserisci il seguente snippet di codice:
config { type: "operations" } GRANT "ROLE_LIST" ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST" REVOKE "ROLE_LIST" ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"Sostituisci quanto segue:
- ROLE_LIST: il ruolo BigQuery o l'elenco di ruoli BigQuery separati da virgole che vuoi concedere o revocare.
- RESOURCE_TYPE:
TABLEoVIEW. - RESOURCE_NAME: il nome della tabella o della vista.
- USER_LIST: l'elenco separato da virgole degli utenti a cui viene concesso o revocato il ruolo. Per un elenco dei formati validi, consulta user_list.
Aggiungi le istruzioni
GRANTeREVOKEin base alle esigenze.Per revocare l'accesso concesso in un'istruzione
GRANTnel file, sostituisci l'istruzioneGRANTcon un'istruzioneREVOKE.La rimozione dell'istruzione
GRANTsenza l'aggiunta dell'istruzioneREVOKEnon revoca l'accesso.
(Facoltativo) Fai clic su Formato.
Esegui il file dopo ogni aggiornamento.
- Se hai concesso o revocato l'accesso a una tabella incrementale, rimuovi l'istruzione
GRANToREVOKEdal file dopo la prima esecuzione dell'istruzione.
- Se hai concesso o revocato l'accesso a una tabella incrementale, rimuovi l'istruzione
Utilizza l'API Config per personalizzare il comportamento di IAM
Puoi utilizzare il
metodo API Dataform projects.locations.updateConfig
per personalizzare il comportamento di IAM e migliorare la sicurezza.
Concedi un ruolo specifico al momento della creazione della risorsa
Quando imposti il campo setAuthenticatedUserAdmin su true nella
risorsa projects.locations.repositories,
Dataform concede automaticamente all'utente che crea il
repository il
ruolo Dataform Admin
(roles/dataform.admin) su quel repository. Inoltre, Dataform concede a qualsiasi utente che crea un workspace in quel repository il ruolo Dataform Admin sul nuovo workspace.
Puoi utilizzare il campo creator_role (anteprima) nel metodo projects.locations.updateConfig per eseguire l'override di questo comportamento. Se setAuthenticatedUserAdmin è true e configuri il campo creator_role con un ruolo personalizzato, Dataform concede il ruolo personalizzato anziché il ruolo dataform.admin predefinito.
Implementa autorizzazioni di pianificazione avanzate
Per richiedere che gli utenti abbiano autorizzazioni esplicite per pianificare i flussi di lavoro di Dataform, imposta il campo enable_project_checks_for_scheduling su true nel metodo projects.locations.updateConfig.
Quando attivi questi controlli per la pianificazione, l'utente deve disporre delle seguenti autorizzazioni:
Per creare una configurazione del workflow:
- L'autorizzazione
dataform.workflowConfigs.createsul progetto, concessa dal ruolo Code Scheduler (roles/dataform.codeScheduler). - L'autorizzazione
dataform.repositories.scheduleWorkflowsul repository, concessa dal ruolo Amministratore Dataform (roles/dataform.admin).
- L'autorizzazione
Per creare una configurazione della release:
- L'autorizzazione
dataform.releaseConfigs.createsul progetto, concessa dal ruolo Code Scheduler (roles/dataform.codeScheduler). - L'autorizzazione
dataform.repositories.scheduleReleasesul repository, concessa dal ruolo Amministratore Dataform (roles/dataform.admin).
- L'autorizzazione
Abilita le aree di lavoro private
Per limitare l'accesso al workspace Dataform in modo che solo il creatore del workspace possa leggere e scrivere codice in quel workspace, imposta il campo enable_private_workspace su true nel metodo projects.locations.updateConfig.
Questa limitazione si applica anche alla visualizzazione degli artefatti generati, come SQL compilato, errori di compilazione e log di esecuzione per le compilazioni o le chiamate di workflow dell'area di lavoro.
Questa impostazione sostituisce i ruoli IAM standard che concedono l'accesso al workspace ad altri utenti del repository.
Passaggi successivi
- Per saperne di più su IAM, consulta Panoramica di IAM.
- Per scoprire di più sulla gestione dell'accesso alle risorse, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni
- Per scoprire di più sui concetti chiave della federazione delle identità per la forza lavoro, consulta Federazione delle identità per la forza lavoro.
- Per scoprire di più sui ruoli e sulle autorizzazioni IAM di BigQuery, consulta Controllo dell'accesso con IAM.
- Per scoprire di più sulla concessione di autorizzazioni granulari ai set di dati BigQuery, consulta Controllo dell'accesso ai set di dati.