Questo documento mostra come eseguire le seguenti operazioni in Dataform:
- Concedere l'accesso richiesto a Dataform.
- Controllare 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.
A livello di repository, per eseguire tutti i flussi di lavoro in un determinato repository.
Singolarmente per ogni configurazione del flusso di lavoro.
- Editor dati BigQuery 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 sui progetti a cui Dataform deve accedere in sola lettura.
- Utente job BigQuery nel progetto che ospita il repository Dataform.
- Proprietario 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.
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 iaccount di serviziont, indipendentemente dai Controlli di servizio VPC.
Per ulteriori informazioni, consulta Configurare i Controlli di servizio VPC per Dataform.
Qualsiasi utente che disponga dell'autorizzazione IAM
dataform.repositories.create
può eseguire codice utilizzando l'account di servizio Dataform predefinito e tutte le autorizzazioni concesse a questo service account.Per saperne di più, vedi Considerazioni sulla sicurezza per le autorizzazioni Dataform.
- Per modificare una configurazione del flusso di lavoro con le credenziali di un altro utente dell'Account Google allegate, devi allegare le tue credenziali utente dell'Account Google alla configurazione del flusso di lavoro o modificare la configurazione del flusso di lavoro per l'autenticazione con un account di servizio.
- Non puoi modificare un risultato di compilazione per una configurazione di rilascio se sono presenti 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.
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'account di servizio 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.
Nella Google Cloud console, vai a IAM > Service account.
Seleziona un progetto.
Nella pagina Service account per il progetto "PROJECT_NAME", seleziona il account di servizio Dataform personalizzato.
Vai ad Autorizzazioni e poi fai clic su Concedi accesso.
Nel campo Nuove entità, inserisci l'ID del account di servizio Dataform predefinito.
L'ID del 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.
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.config.get
dataform.config.update
dataform.locations.get
dataform.locations.list
dataform.releaseConfigs.create
dataform.releaseConfigs.delete
dataform.releaseConfigs.get
dataform.releaseConfigs.list
dataform.releaseConfigs.update
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.
workflowConfigs. create dataform.
workflowConfigs. delete dataform.workflowConfigs.get
dataform.workflowConfigs.list
dataform.
workflowConfigs. update dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.locations.get
dataform.locations.list
- BigQuery Admin (
roles/bigquery.admin
) - Utente job BigQuery (
roles/bigquery.jobUser
) - Utente 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 Colab Enterprise (
roles/aiplatform.colabEnterpriseUser
) - Amministratore Dataform (
roles/dataform.admin
) 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 visualizzare le relative autorizzazioni nel riquadro a destra.
Ad esempio, il ruolo Amministratore Dataform ha accesso completo a tutte le risorse 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 per il repository.TYPE
:user
,group
,domain
oserviceAccount
.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 Dataform Admin in tutti i repository.
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.Nella console Google Cloud , vai alla pagina Dataform.
Seleziona un repository, quindi un workspace.
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 virgole che vuoi concedere.
RESOURCE_TYPE:
TABLE
oVIEW
.USER_LIST: l'elenco separato da virgole degli utenti a cui è concesso il ruolo.
Per un elenco dei formati validi, vedi user_list.
(Facoltativo) Fai clic su Formato.
Esegui la tabella o la visualizzazione.
Se hai concesso l'accesso a una tabella incrementale, rimuovi l'istruzione
GRANT
dal file di definizione della tabella dopo la prima esecuzione.Nella console Google Cloud , vai alla pagina Dataform.
Seleziona un repository, quindi un workspace.
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 virgole che vuoi revocare.
- RESOURCE_TYPE:
TABLE
oVIEW
. - USER_LIST: l'elenco separato da virgole degli utenti a cui viene revocato il ruolo. Per un elenco dei formati validi, vedi 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 visualizzazione.
Se hai revocato l'accesso a una tabella incrementale, rimuovi l'istruzione
REVOKE
dal file di definizione della tabella dopo la prima esecuzione.Nella console Google Cloud , vai alla pagina Dataform.
Seleziona un repository, quindi un workspace.
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 virgole che vuoi concedere o revocare.
- RESOURCE_TYPE:
TABLE
oVIEW
. - 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, vedi user_list.
Aggiungi le istruzioni
GRANT
eREVOKE
in base alle esigenze.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 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
GRANT
oREVOKE
dal file dopo la prima esecuzione dell'istruzione.
- Se hai concesso o revocato l'accesso a una tabella incrementale, rimuovi l'istruzione
- 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 la pagina 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 saperne di più sulla concessione di autorizzazioni granulari ai set di dati BigQuery, consulta la pagina Controllo dell'accesso ai set di dati.
Concedere l'accesso richiesto a Dataform
Questa sezione mostra come concedere i ruoli Identity and Access Management (IAM) che i service account Dataform richiedono per eseguire i workflow in BigQuery.
Informazioni sui service account in Dataform
Quando crei il tuo primo repository Dataform, Dataform genera automaticamente unaccount di serviziot predefinito. Dataform utilizza il account di servizio predefinito per interagire con BigQuery per tuo conto. Per impostazione predefinita, al account di servizio Dataform non vengono concessi ruoli o autorizzazioni BigQuery. Devi concedere l'accesso richiesto all'account di servizio Dataform predefinito.
L'ID del 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 progettoGoogle Cloud . Puoi trovare l'ID progetto nella dashboard della consoleGoogle Cloud . Google Cloud Per ulteriori informazioni, vedi Identificazione dei progetti.
Oltre al account di servizio Dataform predefinito, puoi utilizzare altri service account per eseguire i workflow per tuo conto. Puoi configurare service account personalizzati nei seguenti modi:
Quando crei un repository Dataform o una configurazione del workflow, puoi selezionare qualsiasi account di servizio associato al tuo progetto Google Cloud a cui hai accesso. Devi configurare le autorizzazioni richieste per tutti i service account associati alle tue risorse Dataform.
Un account di servizio personalizzato associato a un repository Dataform viene utilizzato solo per eseguire i workflow da quel repository. Tutte le altre operazioni del repository vengono comunque eseguite dal service account Dataform predefinito.
Ruoli richiesti per i service account Dataform e gli Account Google
Gli account di servizio predefiniti e personalizzati, nonché le credenziali utente dell'Account Google (anteprima) utilizzate per l'autenticazione in Dataform richiedono i seguenti ruoli IAM BigQuery per poter eseguire i workflow in BigQuery:
Inoltre, devi concedere all'account di servizio Dataform predefinito il
ruolo Creatore token service account
(roles/iam.serviceAccountTokenCreator
) in modo che possa accedere a tutti i service account personalizzati
che vuoi utilizzare in Dataform.
Se hai attivato la modalità act-as rigorosa
(anteprima) e hai configurato l'impostazione Frequenza
per una
configurazione del flusso di lavoro,
concedi il ruolo
Utente service account (roles/iam.serviceAccountUser
) al account di servizio Dataform predefinito nel account di servizio effettivo per la configurazione del flusso di lavoro.
Considerazioni sulla sicurezza per i service account Dataform e gli Account Google
La concessione dei ruoli richiesti da Dataform a un account di servizio o a un Google Account dell'utente (anteprima) comporta le seguenti considerazioni sulla sicurezza:
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 tabelle o set di dati BigQuery selezionati. Per ulteriori informazioni, consulta Controllare l'accesso ai set di dati e Controllare l'accesso a tabelle e viste.
Per impedire agli utenti di eseguire azioni durante l'utilizzo delle credenziali utente dell'Account Google di un altro utente, vengono applicate le seguenti limitazioni:
Concedi i ruoli BigQuery richiesti a un account di servizio o a un Account Google utilizzato in Dataform
Per concedere i ruoli IAM BigQuery richiesti al tuo account di servizio Dataform predefinito, 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 (anteprima), segui questi passaggi:
Concedere l'accesso alla creazione di token a un account di servizio personalizzato
Per utilizzare un account di servizio personalizzato in Dataform, il account di servizio Dataform predefinito deve essere in grado di accedere al 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 service account.
Per concedere al account di servizio Dataform predefinito l'accesso a un account di servizio personalizzato, segui questi passaggi:
Controllare 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 Informazioni su ruoli e autorizzazioni.
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. |
|
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 Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
Ruoli Dataform personalizzati
I ruoli personalizzati possono includere tutte le autorizzazioni che specifichi. Puoi creare ruoli personalizzati che includono 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 Dataform
Qualsiasi utente con l'autorizzazione dataform.repositories.create
può eseguire codice in BigQuery utilizzando l'account di servizio Dataform predefinito e tutte le autorizzazioni concesse a questo account di servizio. Ciò include
l'esecuzione dei flussi di lavoro Dataform.
L'autorizzazione dataform.repositories.create
è inclusa nei seguenti
ruoli IAM:
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 tabelle o set di dati BigQuery selezionati. Per ulteriori informazioni, consulta Controllare l'accesso ai set di dati e Controllare l'accesso a tabelle e viste.
Per ulteriori informazioni sul account di servizio Dataform predefinito e sui ruoli e sulle autorizzazioni che richiede, consulta Concedere l'accesso richiesto a Dataform.
Visualizzare i ruoli Dataform
All'interno della console Google Cloud , segui questi passaggi:
Per saperne di più sulla concessione di un ruolo in un progetto, consulta Concedere un ruolo. Puoi concedere ruoli predefiniti o personalizzati in questo modo.
Controllare l'accesso a un singolo repository
Per controllare l'accesso a Dataform con autorizzazioni granulari,
puoi impostare i ruoli IAM Dataform su singoli
repository utilizzando la richiesta
repositories.setIamPolicy
dell'API Dataform.
Per impostare i ruoli IAM di Dataform su un singolo repository Dataform:
Il comando seguente trasmette la richiesta dell'API Dataform repositories.setIamPolicy
che concede il ruolo Editor Dataform nel 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
ruoli IAM sul repository all'entità
allAuthenticatedUsers
.
Quando assegni un ruolo IAM all'entità allAuthenticatedUsers
, a tutti gli account di servizio e a tutti gli utenti di internet che hanno eseguito l'autenticazione con un Account Google viene concesso questo ruolo. 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 saperne di più, vedi
Tutti gli utenti autenticati.
Ad esempio, quando concedi il ruolo Visualizzatore Dataform a
allAuthenticatedUsers
nel repository sales
, tutti i service account e
gli utenti di 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:
Il seguente comando trasmette la richiesta dell'API Dataform repositories.setIamPolicy
che concede il ruolo Visualizzatore Dataform nel 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"
Impedire l'accesso pubblico ai repository
Per assicurarti che non venga concesso l'accesso al pubblico a nessun repository Dataform, puoi limitare l'entità allAuthenticatedUsers
nel tuo progetto.
Per limitare allAuthenticatedUsers
nel tuo progetto, puoi
impostare il criterio iam.allowedPolicyMemberDomains
e rimuovere allAuthenticatedUsers
dall'elenco di allowed_values
.
Quando limiti allAuthenticatedUsers
nella norma iam.allowedPolicyMemberDomains
, il principal allAuthenticatedUsers
non può essere utilizzato in nessuna norma IAM del tuo progetto, il che impedisce di concedere l'accesso pubblico a tutte le risorse, inclusi i repository Dataform.
Per ulteriori informazioni sulle norme iam.allowedPolicyMemberDomains
e istruzioni per configurarle, vedi
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 ad accedere ai servizi Google Cloud con IAM.
Dataform supporta la federazione delle identità della forza lavoro senza limitazioni note.
Controllare l'accesso a singole tabelle con IAM
Questa sezione mostra come concedere e revocare i ruoli IAM 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 controllare il loro accesso in BigQuery dopo l'esecuzione.
Per saperne di più su come concedere e revocare l'accesso alle risorse, vedi Concedere l'accesso a una risorsa.
Concedere 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
GRANT
DCL
al file di definizione .sqlx
della tabella o della vista selezionata.
Per concedere ruoli BigQuery a una tabella o una vista selezionata:
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"
}
Revocare 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
REVOKE
DCL
al file di definizione .sqlx
della tabella o della vista selezionata.
Per revocare i ruoli BigQuery da una tabella o una vista selezionata:
Il seguente esempio di codice mostra il ruolo Visualizzatore BigQuery revocato a 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 alla tabella BigQuery in un unico file type: "operations"
: