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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
Concedi a Dataform l'accesso richiesto
Questa sezione spiega come concedere i ruoli di Identity and Access Management (IAM) necessari agli account di servizio Dataform per eseguire i flussi di lavoro in BigQuery.
Informazioni sugli account di servizio in Dataform
Quando crei il tuo primo repository Dataform, Dataform genera automaticamente un account di servizio predefinito. Dataform utilizza l'account di servizio predefinito per interagire con BigQuery per tuo conto. Per impostazione predefinita, all'account di servizio Dataform predefinito non vengono concessi ruoli o autorizzazioni BigQuery. Devi concedere l'accesso richiesto all'account di servizio Dataform predefinito.
L'ID account di servizio Dataform predefinito ha il seguente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Sostituisci PROJECT_NUMBER con l'ID numerico del tuo progetto Google Cloud. Puoi trovare l'ID progetto Google Cloud nella dashboard della console Google Cloud. Per scoprire di più, consulta la sezione Identificazione dei progetti.
Oltre all'account di servizio Dataform predefinito, puoi utilizzare altri account di servizio per eseguire flussi di lavoro per tuo conto. Puoi configurare account di servizio personalizzati nei seguenti modi:
A livello di repository, per eseguire tutti i flussi di lavoro in un determinato repository.
Individualmente per ogni configurazione del flusso di lavoro.
Quando crei un repository Dataform o una configurazione del flusso di lavoro, puoi selezionare qualsiasi service account associato al tuo progetto Google Cloud a cui hai accesso. Devi configurare le autorizzazioni richieste per tutti gli account di servizio associati alle risorse Dataform.
Un account di servizio personalizzato associato a un repository Dataform viene utilizzato solo per eseguire i flussi di lavoro da quel repository. Tutte le altre operazioni sul repository vengono comunque eseguite dall'account di servizio Dataform predefinito.
Ruoli richiesti per gli account di servizio Dataform
Gli account di servizio predefiniti e personalizzati utilizzati in Dataform richiedono i seguenti ruoli IAM BigQuery per poter eseguire le attività in BigQuery:
- Editor dati BigQuery nei progetti a cui Dataform deve avere accesso in lettura e scrittura. In genere, sono inclusi il progetto che ospita il repository Dataform.
- Visualizzatore dati BigQuery nei progetti a cui Dataform deve avere accesso di sola lettura.
- Utente job BigQuery nel progetto che ospita il tuo repository Dataform.
- Proprietario dei dati BigQuery 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, devi concedere all'account di servizio Dataform predefinito il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator
) in modo che possa accedere a qualsiasi account di servizio personalizzato che vuoi utilizzare in Dataform.
Considerazioni sulla sicurezza per gli account di servizio Dataform
La concessione dei ruoli richiesti da Dataform a un account di servizio comporta i seguenti aspetti di sicurezza:
Qualsiasi account di servizio a cui sono stati concessi i ruoli richiesti potrebbe ottenere l'accesso a BigQuery o Secret Manager nel progetto a cui appartiene, indipendentemente da VPC Service Controls.
Per ulteriori informazioni, consulta Configurare i Controlli di servizio VPC per Dataform.
Qualsiasi utente che dispone dell'autorizzazione IAM
dataform.repositories.create
può eseguire codice utilizzando l'account di servizio Dataform predefinito e tutte le autorizzazioni concesse a questo account di servizio.Per ulteriori informazioni, consulta Considerazioni sulla sicurezza per le autorizzazioni di Dataform.
Per limitare i dati che un utente o un account di servizio può leggere o scrivere in BigQuery, puoi concedere autorizzazioni IAM di BigQuery granulari a set di dati o tabelle BigQuery selezionati. Per ulteriori informazioni, consulta Controllare l'accesso ai set di dati e Controllare l'accesso a tabelle e viste.
Concedi i ruoli BigQuery richiesti a un account di servizio utilizzato in Dataform
Per concedere i ruoli IAM BigQuery richiesti al tuo account di servizio Dataform predefinito o a un account di servizio personalizzato che vuoi utilizzare in Dataform:
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 account di servizio.
Nell'elenco Seleziona un ruolo, seleziona il ruolo Utente job BigQuery.
Fai clic su Aggiungi un altro ruolo e nell'elenco Seleziona un ruolo, seleziona il ruolo Editor dati BigQuery.
Fai clic su Aggiungi un altro ruolo e nell'elenco Seleziona un ruolo, seleziona il ruolo Visualizzatore dati BigQuery.
Fai clic su Salva.
Concedi l'accesso alla creazione di token a un account di servizio personalizzato
Per utilizzare un account di servizio personalizzato in Dataform, l'account di servizio Dataform predefinito deve essere in grado di accedere all'account di servizio personalizzato. Per concedere questo accesso, devi aggiungere l'account di servizio Dataform predefinito come entità all'account di servizio personalizzato con il ruolo Creatore token account di servizio.
Per concedere all'account di servizio Dataform predefinito l'accesso a un account di servizio personalizzato:
Nella console Google Cloud, vai a IAM > Account di servizio.
Seleziona un progetto.
Nella pagina Account di servizio per il progetto "PROJECT_NAME", seleziona il tuo account di servizio Dataform personalizzato.
Vai a Autorizzazioni e poi fai clic su Concedi accesso.
Nel campo Nuove entità, inserisci l'ID account di servizio Dataform predefinito.
L'ID account di servizio Dataform predefinito ha il seguente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Nell'elenco Seleziona un ruolo, seleziona il ruolo Creatore token account di servizio.
Fai clic su Salva.
Controlla l'accesso a Dataform con IAM
Questo documento 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 il controllo degli accessi. Per ulteriori informazioni sui ruoli e sulle autorizzazioni in IAM, consulta Informazioni sui ruoli e sulle autorizzazioni.
Ruoli Dataform predefiniti
La tabella seguente elenca i ruoli predefiniti che ti consentono di accedere alle risorse di Dataform:
Role | Permissions |
---|---|
Dataform Admin( Full 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 Viewer( Read-only access to all code resources. |
|
Dataform Editor( Edit access to Workspaces and Read-only access to Repositories. |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
Ruoli Dataform personalizzati
I ruoli personalizzati possono includere qualsiasi autorizzazione specificata. Puoi creare ruoli personalizzati che includono autorizzazioni per eseguire operazioni amministrative specifiche, come la creazione di spazi di lavoro di sviluppo o la creazione di file e directory all'interno di uno spazio di lavoro di sviluppo. Per creare ruoli personalizzati, consulta Creare e gestire ruoli personalizzati.
Considerazioni sulla sicurezza per le autorizzazioni di Dataform
Qualsiasi utente che dispone dell'autorizzazione dataform.repositories.create
può eseguire codice in BigQuery utilizzando l'account di servizio Dataform predefinito e tutte le autorizzazioni concesse a quell'account di servizio. È inclusa
l'esecuzione dei workflow di Dataform.
Le autorizzazioni dataform.repositories.create
sono incluse nei seguenti ruoli IAM:
- Amministratore BigQuery (
roles/bigquery.admin
) - Utente job BigQuery (
roles/bigquery.jobUser
) - Utente di BigQuery Studio (
roles/bigquery.studioUser
) - Utente BigQuery (
roles/bigquery.user
) - Code Creator (
roles/dataform.codeCreator
) - Editor di codice (
roles/dataform.codeEditor
) - Proprietario del codice (
roles/dataform.codeOwner
) - Utente di Colab Enterprise (
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 di BigQuery granulari a set di dati o tabelle BigQuery selezionati. Per ulteriori informazioni, consulta Controllare l'accesso ai set di dati e Controllare l'accesso a tabelle e viste.
Per ulteriori informazioni sull'account di servizio Dataform predefinito e sui ruoli e le autorizzazioni richiesti, consulta Concedere l'accesso richiesto a Dataform.
Visualizzare i ruoli di Dataform
Nella console Google Cloud, svolgi i seguenti passaggi:
Vai alla pagina IAM e amministrazione > Ruoli.
Nel campo Filtro, seleziona Utilizzato in, digita
Dataform
e premi Invio.Fai clic su uno dei ruoli elencati per visualizzarne le autorizzazioni nel riquadro a destra.
Ad esempio, il ruolo Amministratore Dataform ha accesso completo a tutte le risorse Dataform.
Per ulteriori informazioni sulla concessione di un ruolo a un progetto, consulta Concedere un ruolo. In questo modo puoi assegnare ruoli predefiniti o personalizzati.
Controllare l'accesso a un singolo repository
Per controllare l'accesso a Dataform con autorizzazioni granulari,
puoi impostare i ruoli IAM di Dataform sui singoli
repository utilizzando la richiesta dell'API Dataform
repositories.setIamPolicy
.
Per impostare i ruoli IAM di Dataform su un singolo repository Dataform:
Nel terminale, passa la richiesta dell'API Dataform
repositories.setIamPolicy
con un criterio di accesso.Nel criterio, associa un utente, un gruppo, un dominio o un account di servizio a un ruolo selezionato nel seguente formato:
{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "TYPE:IDENTIFIER", ] }, ], } }
Sostituisci quanto segue:
ROLE
: il ruolo IAM Dataform che vuoi concedere al repository.TYPE
:user
,group
,domain
oserviceAccount
.IDENTIFIER
: l'account utente, gruppo, dominio o 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 dell'API Dataform repositories.setIamPolicy
che concede il ruolo Editor di Dataform al 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/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Concedere 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
, questo viene concesso agli account di servizio e a tutti gli utenti su internet che si sono autenticati con un Account Google. Sono inclusi gli account non collegati a un account Google Workspace o a un dominio Cloud Identity, come gli account Gmail personali. Gli utenti non autenticati, come i visitatori anonimi, non sono inclusi. Per ulteriori informazioni, consulta
Tutti gli utenti autenticati.
Ad esempio, quando concedi il ruolo Visualizzatore di Dataform a allAuthenticatedUsers
nel repository sales
, tutti gli account di servizio e gli utenti su internet che si sono autenticati 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 dell'API Dataform
repositories.setIamPolicy
con un criterio di accesso.Nel criterio, associa l'entità
allAuthenticatedUsers
a un ruolo selezionato nel seguente formato:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }
Sostituisci
ROLE
con un ruolo IAM Dataform che vuoi concedere a tutti gli utenti autenticati.
Il seguente comando passa la richiesta dell'API Dataform repositories.setIamPolicy
che assegna il ruolo Visualizzatore Dataform al 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/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Impedisci l'accesso pubblico ai repository
Per assicurarti che non venga concesso alcun accesso al pubblico in nessun repository Dataform, puoi limitare il principale allAuthenticatedUsers
nel tuo progetto.
Per limitare allAuthenticatedUsers
nel progetto, puoi
impostare il criterio iam.allowedPolicyMemberDomains
,
e rimuovere allAuthenticatedUsers
dall'elenco di allowed_values
.
Quando limiti allAuthenticatedUsers
nel criterio iam.allowedPolicyMemberDomains
, l'entità allAuthenticatedUsers
non può essere utilizzata in nessun criterio IAM del progetto, il che impedisce di concedere l'accesso pubblico a tutte le risorse, inclusi i repository Dataform.
Per ulteriori informazioni sul criterio iam.allowedPolicyMemberDomains
e sulle istruzioni per impostarlo, consulta Limitare le identità per dominio.
Federazione delle identità per la forza lavoro in Dataform
La federazione delle identità della forza lavoro consente di utilizzare un provider di identità (IdP) esterno per autenticare e autorizzare gli utenti ai servizi con IAM. Google Cloud
Dataform supporta la federazione delle identità della forza lavoro senza limitazioni note.
Controllare 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 assegnare ruoli BigQuery a singole tabelle e viste per controllarne l'accesso in BigQuery dopo l'esecuzione.
Per ulteriori informazioni su come concedere e revocare l'accesso alle risorse, consulta Concedere l'accesso a una risorsa.
Concedi i ruoli BigQuery a una tabella o una vista
Puoi concedere i 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 visualizzazione selezionata, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Dataform.
Seleziona un repository e poi uno spazio di lavoro.
Nel riquadro File, espandi la directory
definitions/
.Seleziona il file di definizione
.sqlx
della 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 virgola che vuoi concedere.
RESOURCE_TYPE:
TABLE
oVIEW
.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
GRANT
dal file di definizione della tabella dopo la prima esecuzione.
Il seguente esempio di codice mostra il ruolo Visualizzatore BigQuery concessi a un utente in una tabella:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
Revocare i ruoli BigQuery da una tabella o una visualizzazione
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 visualizzazione selezionata:
Nella console Google Cloud, vai alla pagina Dataform.
Seleziona un repository e poi uno spazio di lavoro.
Nel riquadro File, espandi la directory
definitions/
.Seleziona il file di definizione
.sqlx
della tabella o della vista a 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 virgola che vuoi revocare.
- RESOURCE_TYPE:
TABLE
oVIEW
. - USER_LIST: l'elenco separato da virgole di utenti a cui viene revocato il ruolo. Per un elenco dei formati validi, consulta user_list.
Per revocare l'accesso concesso in un'istruzione
GRANT
nel file, sostituisci l'istruzioneGRANT
con 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
REVOKE
dal file di definizione della tabella dopo la prima esecuzione.
Il seguente esempio di codice mostra il ruolo Visualizzatore BigQuery revocato da un utente in una tabella:
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
Gestire 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 type: "operations"
file:
Nella console Google Cloud, vai alla pagina Dataform.
Seleziona un repository e poi uno spazio di lavoro.
Nel riquadro File, accanto a
definitions/
, fai clic sul menuAltro.
Fai clic su Crea file.
Nel campo Aggiungi un percorso del file, inserisci il nome del file seguito da
.sqlx
dopodefinitions/
. Ad esempio:definitions/table-access.sqlx
.I nomi dei 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 virgola che vuoi concedere o revocare.
- RESOURCE_TYPE:
TABLE
oVIEW
. - RESOURCE_NAME: il nome della tabella o della visualizzazione.
- USER_LIST: l'elenco separato da virgole di utenti a cui viene concesso o revocato il ruolo. Per un elenco dei formati validi, consulta user_list.
Aggiungi le istruzioni
GRANT
eREVOKE
se necessarie.Per revocare l'accesso concesso in un'istruzione
GRANT
nel file, sostituisci l'istruzioneGRANT
con un'istruzioneREVOKE
.La rimozione dell'istruzione
GRANT
senza aggiungere l'istruzioneREVOKE
non comporta la revoca dell'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
GRANT
oREVOKE
dal file dopo la prima esecuzione dell'istruzione.
- Se hai concesso o revocato l'accesso a una tabella incrementale, rimuovi l'istruzione
Passaggi successivi
- Per scoprire di più su IAM, consulta la panoramica di IAM.
- Per scoprire di più sulla gestione dell'accesso alle risorse, consulta Gestire 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 saperne di più su ruoli e autorizzazioni IAM di BigQuery, consulta Controllo dell'accesso con IAM.
- Per scoprire di più su come concedere autorizzazioni granulari ai set di dati BigQuery, consulta Controllo dell'accesso ai set di dati.