Controlla l'accesso con IAM

Questo documento mostra come eseguire le seguenti operazioni in Dataform:

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. 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

    • 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. 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

    • 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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 account di servizio personalizzati e sugli agenti di servizio Dataform

Puoi configurare service account personalizzati per eseguire i workflow per tuo conto nei seguenti modi:

Quando crei un repository o una configurazione del workflow Dataform, puoi selezionare qualsiasi account di servizio per cui disponi delle autorizzazioni act-as. Devi configurare le autorizzazioni richieste per tutti i service account associati alle tue risorse Dataform.

Quando crei il tuo primo repository Dataform, Dataform genera automaticamente un service agent predefinito. Dataform utilizza l'agente di servizio predefinito per interagire con BigQuery per tuo conto.

L'ID service agent 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 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 predefiniti, i service account personalizzati e le credenziali utente dell'account Google (anteprima) utilizzati per l'autenticazione in Dataform richiedono i seguenti ruoli IAM BigQuery per poter eseguire i flussi di lavoro in BigQuery:

Inoltre, concedi i seguenti ruoli all'agente di servizio Dataform predefinito nell'account di servizio effettivo per la configurazione del flusso di lavoro. Questi ruoli sono necessari per il funzionamento della modalità di simulazione rigorosa.

Per le release automatiche dei repository e le esecuzioni automatiche dei flussi di lavoro, concedi all'agente di servizio Dataform predefinito l'autorizzazione iam.serviceAccounts.actAs per l'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 dell'utente (anteprima) comporta le seguenti considerazioni sulla sicurezza:

  • Qualsiasi service agent o 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 il service agent account di serviziont, indipendentemente dControlli di servizio VPCols. Le richieste provenienti da Dataform che utilizzano un service agent con i ruoli richiesti si trovano all'interno del perimetro dei Controlli di servizio VPC del progetto a cui appartiene il repository Dataform.

    Per saperne di più, consulta Configura i Controlli di servizio VPC.

  • Qualsiasi utente con l'autorizzazione IAM dataform.repositories.create può eseguire codice utilizzando il service agent Dataform predefinito 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 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 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:

  • 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 personalizzato.
  • Non puoi modificare un risultato di compilazione per una configurazione di rilascio se sono presenti configurazioni del workflow 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 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 predefinito, 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:

  1. Nella console Google Cloud , vai alla pagina Dataform.

    Vai a Dataform

  2. Seleziona o crea un repository.

  3. Nella console Google Cloud vai alla pagina IAM.

    Vai a IAM

  4. Fai clic su Concedi l'accesso.

  5. Nel campo Nuove entità, inserisci l'ID agente di servizio, l'ID service account o l'email dell'account Google dell'utente (anteprima).

  6. Nell'elenco Seleziona un ruolo, seleziona il ruolo Utente job BigQuery.

  7. Fai clic su Aggiungi un altro ruolo e poi seleziona il ruolo Editor dati BigQuery nell'elenco Seleziona un ruolo.

  8. Fai clic su Aggiungi un altro ruolo e poi, nell'elenco Seleziona un ruolo, seleziona il ruolo Visualizzatore dati BigQuery.

  9. 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 predefinito deve essere in grado di accedere al service account personalizzato. In questo modo Dataform esegue i workflow utilizzando le autorizzazioni definite nel account di servizio personalizzato anziché nell'account dell'agente di servizio predefinito.

Per concedere questo accesso, devi assegnare il ruolo Creatore token service account (roles/iam.serviceAccountTokenCreator) all'agente di servizio Dataform predefinito come entità. In questo modo, l'agente di servizio Dataform predefinito può impersonare il account di servizio creando credenziali di breve durata note come token. Questi token sono necessari per Dataform per eseguire i workflow utilizzando l'identità delaccount di serviziot personalizzato.

Devi anche concedere il ruolo Service Account User (roles/iam.serviceAccountUser) all'agente di servizio Dataform predefinito. In questo modo, l'agente di servizio Dataform predefinito 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 predefinito l'accesso a un account di serviziot personalizzato:

  1. Nella console Google Cloud , vai a IAM > Service accounts.

    Vai ad Account di servizio

  2. Seleziona un progetto.

  3. Nella pagina Service account per il progetto "PROJECT_NAME", seleziona il account di servizio personalizzato.

  4. Vai a Entità con accesso e poi fai clic su Concedi accesso.

  5. Nel campo Nuove entità, inserisci l'ID service agent Dataform predefinito.

    L'ID service agent Dataform predefinito ha il seguente formato:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. Nell'elenco Seleziona un ruolo, seleziona il ruolo Creatore token service account e il ruolo Utente service account.

  7. Fai clic su Salva.

L'account di servizio personalizzato è ora pronto per essere configurato nel tuo repository Dataform.

Controlla le configurazioni del account di servizio

Questa sezione mostra come controllare le risorse Dataform per garantire l'utilizzo corretto deiaccount di serviziot e la concessione delle autorizzazioni. L'audit è particolarmente importante quando si utilizzano service account personalizzati, in quanto richiedono autorizzazioni specifiche per il funzionamento dell'agente di servizio Dataform predefinito.

Quando utilizzi un account di servizio personalizzato per un repository Dataform o una configurazione del flusso di lavoro, devi verificare che il service agent Dataform predefinito disponga del ruolo Service Account User (roles/iam.serviceAccountUser) saccount di serviziount personalizzato. Questo ruolo concede l'autorizzazione iam.serviceAccounts.actAs, che consente alle esecuzioni pianificate, avviate dal service agent Dataform predefinito, di simulare account di serviziount personalizzato. Inoltre, verifica che l'agente di servizio Dataform predefinito 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.

  1. Utilizza Cloud Asset Inventory per elencare tutte le risorse di tipo dataform.Repository. Per ulteriori informazioni, consulta Visualizzare gli asset.

  2. Per ogni repository nell'output di Cloud Asset Inventory, controlla il campo resource.data.labels per determinare se è incluso nell'ambito. Il percorso esatto potrebbe variare leggermente in base al formato di esportazione.

  3. 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 è sql o data_canvas, il repository può essere escluso dai controlli delle autorizzazioni dell'account di servizio.

    I repository rimanenti a cui mancano questa chiave o questi valori rientrano nell'ambito dei controlli delle autorizzazioni delaccount di serviziot.

  4. Per ogni repository incluso nell'ambito, controlla il campo resource.data.serviceAccount nell'output di Cloud Asset Inventory per determinare se è configurato unaccount di serviziot personalizzato:

    • Se il campo resource.data.serviceAccount è presente e il suo valore è diverso dall'indirizzo email dell'agente di servizio Dataform predefinito del progetto, il repository utilizza un account di servizio personalizzato.
    • Se il campo resource.data.serviceAccount è assente o se il valore del campo corrisponde all'agente di servizio Dataform predefinito del progetto, il repository utilizza l'agente di servizio predefinito.

  5. Se viene utilizzato un account di servizio personalizzato, verifica che l'agente di servizio Dataform predefinito disponga sia del ruolo Service Account User (roles/iam.serviceAccountUser) sia del ruolo Service Account Token Creator (roles/iam.serviceAccountTokenCreator) su questo account di servizio personalizzato.

Verificare i service account di configurazione del workflow

L'utilizzo di service account personalizzati dedicati per le configurazioni del workflow 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:

  1. Utilizza Cloud Asset Inventory per elencare tutte le risorse di tipo dataform.WorkflowConfig.

  2. 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 workflow.
    • Se il campo resource.data.serviceAccount è assente, la configurazione del workflow eredita il account di servizio dal repository principale. Controlla la configurazione del repository principale per trovare l'account di servizio effettivo.
  3. 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 predefinito del progetto. Se sono diversi, viene utilizzato un account di servizio personalizzato.

  4. Se è in uso un account di servizio personalizzato, assicurati che all'agente di servizio Dataform predefinito siano 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 predefinito di avviare le esecuzioni del flusso di lavoro rappresentando il account di servizio personalizzato.

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

(roles/dataform.admin)

Full access to all Dataform resources.

dataform.*

  • 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.folders.addContents
  • dataform.folders.create
  • dataform.folders.delete
  • dataform.folders.deleteTree
  • dataform.folders.get
  • dataform.folders.getIamPolicy
  • dataform.folders.move
  • dataform.folders.queryContents
  • dataform.folders.setIamPolicy
  • dataform.folders.update
  • dataform.locations.get
  • dataform.locations.list
  • dataform.operations.cancel
  • dataform.operations.delete
  • dataform.operations.get
  • dataform.operations.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.move
  • dataform.repositories.queryDirectoryContents
  • dataform.repositories.readFile
  • dataform.repositories.scheduleRelease
  • dataform.repositories.scheduleWorkflow
  • dataform.repositories.setIamPolicy
  • dataform.repositories.update
  • dataform.teamFolders.create
  • dataform.teamFolders.delete
  • dataform.teamFolders.deleteTree
  • dataform.teamFolders.get
  • dataform.teamFolders.getIamPolicy
  • dataform.teamFolders.setIamPolicy
  • dataform.teamFolders.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

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeCommenter)

Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.folders.get

dataform.folders.queryContents

dataform.locations.get

dataform.repositories.get

dataform.repositories.readFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeCreator)

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.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.folders.create

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.create

dataform.repositories.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeEditor)

Edit access code resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.folders.addContents

dataform.folders.create

dataform.folders.get

dataform.folders.getIamPolicy

dataform.folders.queryContents

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.operations.get

dataform.repositories.commit

dataform.repositories.computeAccessTokenStatus

dataform.repositories.create

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

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.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeOwner)

Full access to code resources.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.folders.*

  • dataform.folders.addContents
  • dataform.folders.create
  • dataform.folders.delete
  • dataform.folders.deleteTree
  • dataform.folders.get
  • dataform.folders.getIamPolicy
  • dataform.folders.move
  • dataform.folders.queryContents
  • dataform.folders.setIamPolicy
  • dataform.folders.update

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.operations.get

dataform.operations.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.move

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.repositories.setIamPolicy

dataform.repositories.update

dataform.workspaces.*

  • 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

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.codeScheduler)

Access for scheduling workflows and releases.

dataform.releaseConfigs.create

dataform.workflowConfigs.create

(roles/dataform.codeViewer)

Read-only access to all code resources.

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.folders.get

dataform.folders.getIamPolicy

dataform.folders.queryContents

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.list

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.searchFiles

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.editor)

Edit access to Workspaces and Read-only access to Repositories.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.config.get

dataform.folders.get

dataform.folders.getIamPolicy

dataform.folders.queryContents

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.operations.get

dataform.operations.list

dataform.releaseConfigs.get

dataform.releaseConfigs.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.teamFolders.get

dataform.teamFolders.getIamPolicy

dataform.workflowConfigs.get

dataform.workflowConfigs.list

dataform.workflowInvocations.*

  • 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.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.serviceAgent)

Gives permission for the Dataform API to access a secret from Secret Manager

dataform.compilationResults.create

dataform.workflowInvocations.create

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.teamFolderCommenter)

View and comment access to a team folder and its contents.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.folders.get

dataform.folders.getIamPolicy

dataform.folders.queryContents

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.teamFolders.get

dataform.teamFolders.getIamPolicy

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.list

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.searchFiles

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.teamFolderContributor)

Edit access to a team folder and its contents.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.folders.addContents

dataform.folders.create

dataform.folders.get

dataform.folders.getIamPolicy

dataform.folders.queryContents

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.operations.get

dataform.repositories.commit

dataform.repositories.computeAccessTokenStatus

dataform.repositories.create

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.teamFolders.get

dataform.teamFolders.getIamPolicy

dataform.teamFolders.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.writeFile

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.teamFolderCreator)

Access to create new team folders.

dataform.teamFolders.create

(roles/dataform.teamFolderOwner)

Full access to a team folder and its contents. Can share the team folder and its contents.

dataform.commentThreads.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update

dataform.comments.*

  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.folders.*

  • dataform.folders.addContents
  • dataform.folders.create
  • dataform.folders.delete
  • dataform.folders.deleteTree
  • dataform.folders.get
  • dataform.folders.getIamPolicy
  • dataform.folders.move
  • dataform.folders.queryContents
  • dataform.folders.setIamPolicy
  • dataform.folders.update

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.operations.get

dataform.operations.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.move

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.repositories.setIamPolicy

dataform.repositories.update

dataform.teamFolders.delete

dataform.teamFolders.deleteTree

dataform.teamFolders.get

dataform.teamFolders.getIamPolicy

dataform.teamFolders.setIamPolicy

dataform.teamFolders.update

dataform.workspaces.*

  • 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

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.teamFolderViewer)

View access to a team folder and its contents.

dataform.compilationResults.*

  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.query

dataform.folders.get

dataform.folders.getIamPolicy

dataform.folders.queryContents

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.teamFolders.get

dataform.teamFolders.getIamPolicy

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.list

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.searchFiles

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataform.viewer)

Read-only access to all Dataform resources.

dataform.commentThreads.get

dataform.commentThreads.list

dataform.comments.get

dataform.comments.list

dataform.compilationResults.get

dataform.compilationResults.list

dataform.compilationResults.query

dataform.config.get

dataform.folders.get

dataform.folders.getIamPolicy

dataform.folders.queryContents

dataform.locations.*

  • dataform.locations.get
  • dataform.locations.list

dataform.operations.get

dataform.operations.list

dataform.releaseConfigs.get

dataform.releaseConfigs.list

dataform.repositories.computeAccessTokenStatus

dataform.repositories.fetchHistory

dataform.repositories.fetchRemoteBranches

dataform.repositories.get

dataform.repositories.getIamPolicy

dataform.repositories.list

dataform.repositories.queryDirectoryContents

dataform.repositories.readFile

dataform.teamFolders.get

dataform.teamFolders.getIamPolicy

dataform.workflowConfigs.get

dataform.workflowConfigs.list

dataform.workflowInvocations.get

dataform.workflowInvocations.list

dataform.workflowInvocations.query

dataform.workspaces.fetchFileDiff

dataform.workspaces.fetchFileGitStatuses

dataform.workspaces.fetchGitAheadBehind

dataform.workspaces.get

dataform.workspaces.getIamPolicy

dataform.workspaces.list

dataform.workspaces.queryDirectoryContents

dataform.workspaces.readFile

dataform.workspaces.searchFiles

resourcemanager.projects.get

resourcemanager.projects.list

Ruoli personalizzati di Dataform

I ruoli personalizzati possono includere qualsiasi autorizzazione specificata. 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 Creare e gestire ruoli personalizzati.

Considerazioni sulla sicurezza per le autorizzazioni Dataform

Qualsiasi utente con l'autorizzazione dataform.repositories.create può eseguire codice in BigQuery utilizzando il service agent Dataform predefinito e tutte le autorizzazioni concesse a questo service agent. Ciò include l'esecuzione dei workflow Dataform.

L'autorizzazione dataform.repositories.create è inclusa nei seguenti ruoli IAM:

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 Controllare l'accesso ai set di dati e Controllare l'accesso a tabelle e viste.

Per saperne di più sull'agente 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:

  1. Vai alla pagina IAM e amministrazione > Ruoli.

    Vai a Ruoli.

  2. Nel campo Filtro, seleziona Utilizzato in, digita Dataform e premi Invio.

  3. 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 saperne di più sulla concessione di un ruolo in un progetto, consulta Concedi un ruolo. In questo modo, puoi concedere 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 Dataform su singoli repository utilizzando la richiesta repositories.setIamPolicy dell'API Dataform.

Per impostare i ruoli IAM di Dataform su un singolo repository Dataform:

  1. Nel terminale, passa la richiesta dell'API Dataform repositories.setIamPolicy con un criterio di accesso.

  2. Nella policy, associa un utente, un gruppo, un dominio, un service agent 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 Dataform che vuoi concedere per il repository.
    • TYPE: user, group, domain o serviceAccount.
    • IDENTIFIER: l'utente, il gruppo, il dominio o il service account a cui vuoi concedere il ruolo.
  3. 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.

  4. In IAM, assicurati che solo gli utenti che richiedono l'accesso completo a tutti i repository Dataform dispongano del ruolo Amministratore Dataform in tutti i repository.

Il seguente comando 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/v1/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, agli agenti di servizio, ai service account e a tutti gli utenti di internet che si sono autenticati con un Account Google, viene concesso 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, quando concedi il ruolo Visualizzatore Dataform a allAuthenticatedUsers nel repository sales, tutti i service agent, i service account e gli utenti di internet che si sono autenticati con un Account Google hanno accesso in sola lettura a tutte le risorse di codice sales.

Per concedere l'accesso pubblico a un repository Dataform:

  1. Nel terminale, passa la richiesta dell'API Dataform repositories.setIamPolicy con un criterio di accesso.

  2. Nella policy, 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 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/v1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"

Impedire l'accesso pubblico ai repository

Per assicurarti che non venga concesso l'accesso 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 la concessione dell'accesso pubblico a tutte le risorse, inclusi i repository Dataform.

Per ulteriori informazioni sulla norma iam.allowedPolicyMemberDomains e istruzioni per impostarla, 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à per la 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:

  1. Nella console Google Cloud , vai alla pagina Dataform.

    Vai a Dataform

  2. Seleziona un repository, poi un workspace.

  3. Nel riquadro File, espandi la directory definitions/.

  4. Seleziona il file di definizione .sqlx della tabella o della vista a cui vuoi concedere l'accesso.

  5. 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 o VIEW.

    • USER_LIST: l'elenco separato da virgole degli utenti a cui è concesso il ruolo.

      Per un elenco dei formati validi, vedi user_list.

  6. (Facoltativo) Fai clic su Formato.

  7. Esegui la tabella o la visualizzazione.

  8. 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 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:

  1. Nella console Google Cloud , vai alla pagina Dataform.

    Vai a Dataform

  2. Seleziona un repository, poi un workspace.

  3. Nel riquadro File, espandi la directory definitions/.

  4. Seleziona il file di definizione .sqlx della tabella o della vista a cui vuoi revocare l'accesso.

  5. Nel blocco post_operations, inserisci la seguente istruzione REVOKE:

        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 o VIEW.
    • USER_LIST: l'elenco separato da virgole degli utenti a cui viene revocato il ruolo. Per un elenco dei formati validi, vedi user_list.
  6. Per revocare l'accesso concesso in un'istruzione GRANT nel file, sostituisci l'istruzione GRANT con un'istruzione REVOKE.

  7. (Facoltativo) Fai clic su Formato.

  8. Esegui la tabella o la visualizzazione.

  9. 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 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":

  1. Nella console Google Cloud , vai alla pagina Dataform.

    Vai a Dataform

  2. Seleziona un repository, poi un workspace.

  3. Nel riquadro File, accanto a definitions/, fai clic sul menu Icona Aggiungi menu. Altro.

  4. Fai clic su Crea file.

  5. Nel campo Aggiungi un percorso del file, inserisci il nome del file seguito da .sqlx dopo definitions/. Ad esempio: definitions/table-access.sqlx.

    I nomi dei file possono includere solo numeri, lettere, trattini e trattini bassi.

  6. Fai clic su Crea file.

  7. Nel riquadro File, espandi la directory definitions/ e seleziona il file appena creato.

  8. 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 o VIEW.
    • RESOURCE_NAME: il nome della tabella o della vista.
    • USER_LIST: l'elenco separato da virgole degli utenti a cui il ruolo viene concesso o revocato. Per un elenco dei formati validi, vedi user_list.
  9. Aggiungi le istruzioni GRANT e REVOKE in base alle esigenze.

    1. Per revocare l'accesso concesso in un'istruzione GRANT nel file, sostituisci l'istruzione GRANT con un'istruzione REVOKE.

      La rimozione dell'istruzione GRANT senza aggiungere l'istruzione REVOKE non revoca l'accesso.

  10. (Facoltativo) Fai clic su Formato.

  11. Esegui il file dopo ogni aggiornamento.

    1. Se hai concesso o revocato l'accesso a una tabella incrementale, rimuovi l'istruzione GRANT o REVOKE dal file dopo la prima esecuzione dell'istruzione.

Utilizzare l'API Config per personalizzare il comportamento di IAM

Puoi utilizzare il metodo dell'API Dataform projects.locations.updateConfig per personalizzare il comportamento di IAM e migliorare la sicurezza.

Concedere 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) per quel repository. Inoltre, Dataform concede a qualsiasi utente che crea uno spazio di lavoro in questo repository il ruolo Dataform Admin nel nuovo spazio di lavoro.

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.

Implementare autorizzazioni di pianificazione avanzate

Per richiedere agli utenti autorizzazioni esplicite per pianificare i flussi di lavoro 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.create sul progetto, concessa dal ruolo Code Scheduler (roles/dataform.codeScheduler).
    • L'autorizzazione dataform.repositories.scheduleWorkflow sul repository, concessa dal ruolo Dataform Admin (roles/dataform.admin).
  • Per creare una configurazione della release:

    • L'autorizzazione dataform.releaseConfigs.create sul progetto, concessa dal ruolo Code Scheduler (roles/dataform.codeScheduler).
    • L'autorizzazione dataform.repositories.scheduleRelease sul repository, concessa dal ruolo Dataform Admin (roles/dataform.admin).

Abilitare gli spazi di lavoro privati

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 del workflow del workspace.

Questa impostazione sostituisce i ruoli IAM standard che concedono l'accesso allo spazio di lavoro ad altri utenti del repository.

Passaggi successivi