Controlla l'accesso con IAM

Questo documento mostra come eseguire le seguenti operazioni in Dataform:

Prima di iniziare

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the APIs

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

    • 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 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:

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

    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:

    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 dell'account di servizio 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.

    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:

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

      Vai ad Account di servizio

    2. Seleziona un progetto.

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

    4. Vai ad Autorizzazioni e poi fai clic su Concedi accesso.

    5. 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
      
    6. Nell'elenco Seleziona un ruolo, seleziona il ruolo Creatore token account di servizio.

    7. Fai clic su Salva.

    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

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

    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.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.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.locations.*

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

    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.locations.*

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

    dataform.repositories.*

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

    • 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.codeViewer)

    Read-only access to all code resources.

    dataform.compilationResults.*

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

    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.locations.*

    • dataform.locations.get
    • dataform.locations.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.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.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.locations.*

    • dataform.locations.get
    • dataform.locations.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.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 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:

    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 visualizzare le relative autorizzazioni nel riquadro a destra.

      Ad esempio, il ruolo Amministratore Dataform ha accesso completo a tutte le risorse Dataform.

    Per saperne di più sulla concessione di un ruolo in un progetto, consulta 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:

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

    2. 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 o serviceAccount.
      • IDENTIFIER: l'utente, il gruppo, il dominio o l'account di servizio 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 agli utenti che richiedono l'accesso completo a tutti i repository Dataform venga concesso il ruolo Dataform Admin in tutti i repository.

    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:

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

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

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

      Vai a Dataform

    2. Seleziona un repository, quindi 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, quindi 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, quindi un workspace.

    3. Nel riquadro File, accanto a definitions/, fai clic sul 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 viene concesso o revocato il ruolo. 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.

    Passaggi successivi