Controle o acesso com a IAM

Este documento mostra como fazer o seguinte no Dataform:

Antes de começar

  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. Verify 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. Verify that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Enable the APIs

  8. Conceda o acesso necessário ao Dataform

    Esta secção mostra-lhe como conceder as funções de gestão de identidade e de acesso (IAM) que as contas de serviço do Dataform requerem para executar fluxos de trabalho no BigQuery.

    Acerca das contas de serviço no Dataform

    Quando cria o seu primeiro repositório do Dataform, o Dataform gera automaticamente uma conta de serviço predefinida. O Dataform usa a conta de serviço predefinida para interagir com o BigQuery em seu nome. Por predefinição, não são concedidas funções nem autorizações do BigQuery à conta de serviço do Dataform. Tem de conceder o acesso necessário à conta de serviço do Dataform predefinida.

    O ID da conta de serviço do Dataform predefinido está no seguinte formato:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    

    Substitua PROJECT_NUMBER pelo ID numérico do seu projeto.Google Cloud Pode encontrar o seu Google Cloud ID do projeto no Google Cloud painel de controlo da consola. Para mais informações, consulte o artigo Identificar projetos.

    Além da conta de serviço predefinida do Dataform, pode usar outras contas de serviço para executar fluxos de trabalho em seu nome. Pode configurar contas de serviço personalizadas das seguintes formas:

    Quando cria um repositório ou uma configuração de fluxo de trabalho do Dataform, pode selecionar qualquer conta de serviço associada ao seu projeto ao qual tem acesso. Google Cloud Tem de configurar as autorizações necessárias para todas as contas de serviço associadas aos seus recursos do Dataform.

    Uma conta de serviço personalizada associada a um repositório do Dataform é usada apenas para executar fluxos de trabalho a partir desse repositório. Todas as outras operações do repositório continuam a ser realizadas pela conta de serviço do Dataform predefinida.

    Funções necessárias para contas de serviço do Dataform e Contas Google

    As contas de serviço predefinidas e personalizadas, bem como as credenciais de utilizador da Conta Google (Pré-visualização) usadas para autenticar no Dataform requerem as seguintes funções do IAM do BigQuery para poderem executar fluxos de trabalho no BigQuery:

    Além disso, tem de conceder à conta de serviço do Dataform predefinida a função Criador de tokens da conta de serviço (roles/iam.serviceAccountTokenCreator) para que possa aceder a quaisquer contas de serviço personalizadas que queira usar no Dataform.

    Se ativou o modo act-as rigoroso (pré-visualização) e configurou a definição Frequência para uma configuração do fluxo de trabalho, conceda a função Utilizador da conta de serviço (roles/iam.serviceAccountUser) à conta de serviço predefinida do Dataform na conta de serviço eficaz para a configuração do fluxo de trabalho.

    Considerações de segurança para contas de serviço do Dataform e Contas Google

    A concessão das funções necessárias pelo Dataform a uma conta de serviço ou à Conta Google de um utilizador (pré-visualização) tem as seguintes considerações de segurança:

    • Qualquer conta de serviço à qual sejam concedidas as funções necessárias pode obter acesso ao BigQuery ou ao Secret Manager no projeto ao qual a conta de serviço pertence, independentemente dos VPC Service Controls.

      Para mais informações, consulte o artigo Configure o VPC Service Controls.

    • Qualquer utilizador com a autorização dataform.repositories.create IAM pode executar código através da conta de serviço do Dataform predefinida e de todas as autorizações concedidas a essa conta de serviço.

      Para mais informações, consulte o artigo Considerações de segurança para autorizações do Dataform.

    Para restringir os dados que um utilizador ou uma conta de serviço podem ler ou escrever no BigQuery, pode conceder autorizações de IAM do BigQuery detalhadas a tabelas ou conjuntos de dados do BigQuery selecionados. Para mais informações, consulte os artigos Controlar o acesso a conjuntos de dados e Controlar o acesso a tabelas e vistas.

    Para impedir que os utilizadores realizem ações enquanto usam as credenciais de utilizador da Conta Google de outro utilizador, são aplicadas as seguintes restrições:

    • Para modificar uma configuração de fluxo de trabalho com as credenciais de outro utilizador da Conta Google anexadas, tem de anexar as suas próprias credenciais de utilizador da Conta Google à configuração de fluxo de trabalho ou alterar a configuração de fluxo de trabalho para autenticar com uma conta de serviço.
    • Não pode modificar um resultado de compilação para uma configuração de lançamento se existirem configurações de fluxo de trabalho que façam referência à configuração de lançamento com as credenciais de outro utilizador da Conta Google anexadas.
    • Não pode definir uma configuração do fluxo de trabalho para autenticar com credenciais de utilizador da Conta Google e referenciar uma configuração de lançamento com uma programação. Esta limitação tem as seguintes consequências:

      • Não pode atualizar uma configuração de lançamento para usar uma programação se existirem configurações de fluxo de trabalho que façam referência à configuração de lançamento definida para autenticar com credenciais de utilizador da Conta Google.
      • Não pode criar uma configuração de fluxo de trabalho que seja autenticada com credenciais de utilizador da Conta Google e que aponte para uma configuração de lançamento com um agendamento.
      • Não pode criar nem atualizar uma configuração do fluxo de trabalho para usar credenciais de utilizador da Conta Google e apontar para uma configuração de lançamento com uma programação.

    Conceda as funções do BigQuery necessárias a uma conta de serviço ou a uma Conta Google usada no Dataform

    Para conceder as funções do IAM do BigQuery necessárias à sua conta de serviço do Dataform predefinida, a uma conta de serviço personalizada que quer usar no Dataform ou à Conta Google de um utilizador que quer usar para autenticar no Dataform (pré-visualização), siga estes passos:

    1. Na Google Cloud consola, aceda à página Dataform.

      Aceder ao Dataform

    2. Selecione ou crie um repositório.

    3. Na Google Cloud consola, aceda à página IAM.

      Aceda ao IAM

    4. Clique em Conceder acesso.

    5. No campo Novos membros, introduza o ID da conta de serviço ou o email da Conta Google do utilizador (pré-visualização).

    6. Na lista Selecionar uma função, selecione a função Utilizador de tarefas do BigQuery.

    7. Clique em Adicionar outra função e, de seguida, na lista Selecionar uma função, selecione a função Editor de dados do BigQuery.

    8. Clique em Adicionar outra função e, de seguida, na lista Selecionar uma função, selecione a função Visualizador de dados do BigQuery.

    9. Clique em Guardar.

    Conceda acesso à criação de tokens a uma conta de serviço personalizada

    Para usar uma conta de serviço personalizada no Dataform, a conta de serviço do Dataform predefinida tem de poder aceder à conta de serviço personalizada. Para conceder este acesso, tem de adicionar a conta de serviço do Dataform predefinida como principal à conta de serviço personalizada com a função Criador de tokens de conta de serviço.

    Para conceder à conta de serviço do Dataform predefinida acesso a uma conta de serviço personalizada, siga estes passos:

    1. Na Google Cloud consola, aceda a IAM > Contas de serviço.

      Aceda a Contas de serviço

    2. Selecione um projeto.

    3. Na página Contas de serviço para o projeto "PROJECT_NAME", selecione a sua conta de serviço do Dataform personalizada.

    4. Aceda a Autorizações e, de seguida, clique em Conceder acesso.

    5. No campo Novos membros, introduza o ID da conta de serviço do Dataform predefinido.

      O ID da conta de serviço do Dataform predefinido está no seguinte formato:

      service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
      
    6. Na lista Selecionar uma função, selecione a função Criador de tokens de contas de serviço.

    7. Clique em Guardar.

    Controle o acesso ao Dataform com o IAM

    Esta secção descreve as opções de controlo de acesso do Dataform e mostra como ver e conceder funções do Dataform. O Dataform usa a gestão de identidade e de acesso (IAM) para o controlo de acesso. Para mais informações acerca das funções e autorizações no IAM, consulte o artigo Compreender as funções e as autorizações.

    Funções predefinidas do Dataform

    A tabela seguinte apresenta as funções predefinidas que lhe dão acesso aos recursos do 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

    Funções personalizadas do Dataform

    As funções personalizadas podem incluir quaisquer autorizações que especificar. Pode criar funções personalizadas que incluam autorizações para realizar operações administrativas específicas, como criar espaços de trabalho de desenvolvimento ou criar ficheiros e diretórios num espaço de trabalho de desenvolvimento. Para criar funções personalizadas, consulte o artigo Criar e gerir funções personalizadas.

    Considerações de segurança para as autorizações do Dataform

    Qualquer utilizador com a autorização dataform.repositories.create pode executar código no BigQuery através da conta de serviço do Dataform predefinida e de todas as autorizações concedidas a essa conta de serviço. Isto inclui a execução de fluxos de trabalho do Dataform.

    As autorizações dataform.repositories.create estão incluídas nas seguintes funções do IAM:

    Para restringir os dados que um utilizador ou uma conta de serviço podem ler ou escrever no BigQuery, pode conceder autorizações de IAM do BigQuery detalhadas a tabelas ou conjuntos de dados do BigQuery selecionados. Para mais informações, consulte os artigos Controlar o acesso a conjuntos de dados e Controlar o acesso a tabelas e vistas.

    Para mais informações sobre a conta de serviço predefinida do Dataform e as funções e autorizações que requer, consulte o artigo Conceda o acesso necessário ao Dataform.

    Veja as funções do Dataform

    Na Google Cloud consola, siga estes passos:

    1. Aceda à página IAM e administrador > Funções.

      Aceda a Funções

    2. No campo Filtro, selecione Usado em, escreva Dataform, e, de seguida, prima Enter.

    3. Clique numa das funções apresentadas para ver as autorizações da função no painel direito.

      Por exemplo, a função de administrador do Dataform tem acesso total a todos os recursos do Dataform.

    Para mais informações sobre como conceder uma função num projeto, consulte o artigo Conceda uma função. Pode conceder funções predefinidas ou personalizadas desta forma.

    Controle o acesso a um repositório individual

    Para controlar o acesso ao Dataform com autorizações detalhadas, pode definir funções de IAM do Dataform em repositórios individuais através do pedido repositories.setIamPolicy da API Dataform.

    Para definir funções da IAM do Dataform num repositório do Dataform individual, siga estes passos:

    1. No terminal, transmita o pedido da API Dataform repositories.setIamPolicy com uma política de acesso.

    2. Na política, associe um utilizador, um grupo, um domínio ou uma conta de serviço a uma função selecionada no seguinte formato:

      {
      "policy":
         {
            "bindings": [
            {
               "role": "roles/ROLE",
               "members": [
                  "TYPE:IDENTIFIER",
               ]
            },
            ],
         }
      }
      

      Substitua o seguinte:

      • ROLE: a função do IAM do Dataform que quer conceder no repositório.
      • TYPE: user, group, domain ou serviceAccount.
      • IDENTIFIER: o utilizador, o grupo, o domínio ou a conta de serviço à qual quer conceder a função.
    3. Na página do IAM, certifique-se de que todos os utilizadores podem ver a lista completa de repositórios do Dataform através de uma função do Dataform com a autorização dataform.repositories.list.

    4. No IAM, certifique-se de que apenas os utilizadores que requerem acesso total a todos os repositórios do Dataform têm a função de administrador do Dataform em todos os repositórios.

    O comando seguinte transmite o pedido da repositories.setIamPolicyAPI Dataform que concede a função de editor do Dataform no repositório sales a um único utilizador:

    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"
    

    Conceda acesso público a um repositório

    Pode conceder acesso público a um repositório do Dataform concedendo funções do IAM no repositório ao principal allAuthenticatedUsers.

    Quando atribui uma função do IAM ao principal allAuthenticatedUsers, as contas de serviço e todos os utilizadores na Internet que tenham feito a autenticação com uma Conta Google recebem essa função. Isto inclui contas que não estão associadas a uma conta do Google Workspace ou a um domínio do Cloud ID, como contas pessoais do Gmail. Os utilizadores não autenticados, como visitantes anónimos, não são incluídos. Para mais informações, consulte a secção Todos os utilizadores autenticados.

    Por exemplo, quando concede a função de leitor do Dataform a allAuthenticatedUsers no repositório sales, todas as contas de serviço e os utilizadores na Internet que tenham feito a autenticação com uma Conta Google têm acesso só de leitura a todos os recursos de código sales.

    Para conceder acesso público a um repositório do Dataform, siga estes passos:

    1. No terminal, transmita o pedido da API Dataform repositories.setIamPolicy com uma política de acesso.

    2. Na política, associe o principal allAuthenticatedUsers a uma função selecionada no seguinte formato:

      {
      "policy":
         {
            "bindings": [
            {
               "role": "roles/ROLE",
               "members": [
                  "allAuthenticatedUsers",
               ]
            },
            ],
         }
      }
      

      Substitua ROLE por uma função do IAM do Dataform que quer conceder a todos os utilizadores autenticados.

    O comando seguinte transmite o pedido da repositories.setIamPolicy API Dataform que concede a função de visualizador do Dataform no repositório 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"
    

    Impeça o acesso público a repositórios

    Para garantir que não é concedido acesso ao público a nenhum repositório do Dataform, pode restringir o principal no seu projeto.allAuthenticatedUsers

    Para restringir allAuthenticatedUsers no seu projeto, pode definir a política iam.allowedPolicyMemberDomains e remover allAuthenticatedUsers da lista de allowed_values.

    Quando restringe allAuthenticatedUsers na política iam.allowedPolicyMemberDomains, o principal allAuthenticatedUsers não pode ser usado em nenhuma política do IAM no seu projeto, o que impede a concessão de acesso público a todos os recursos, incluindo repositórios do Dataform.

    Para mais informações sobre a iam.allowedPolicyMemberDomainspolítica e também instruções para a definir, consulte o artigo Restringir identidades por domínio.

    Federação de identidade da força de trabalho no Dataform

    A Federação de identidades da força de trabalho permite-lhe usar um fornecedor de identidade (IdP) externo para autenticar e autorizar utilizadores para Google Cloud serviços com IAM.

    O Dataform suporta a federação de identidade da força de trabalho sem limitações conhecidas.

    Controle o acesso a tabelas individuais com a IAM

    Esta secção mostra como conceder e revogar funções do IAM do BigQuery para tabelas e vistas individuais do Dataform.

    Quando o Dataform executa uma tabela ou uma vista de propriedade, cria o recurso no BigQuery. Durante o desenvolvimento no Dataform, pode conceder funções do BigQuery a tabelas e visualizações individuais para controlar o respetivo acesso no BigQuery após a execução.

    Para mais informações sobre como conceder e revogar o acesso a recursos, consulte o artigo Conceda acesso a um recurso.

    Conceda funções do BigQuery a uma tabela ou uma vista

    Pode conceder funções do BigQuery a uma tabela ou uma vista no Dataform adicionando um bloco post_operations com a declaração GRANT DCL ao ficheiro de definição .sqlx da tabela ou da vista selecionada.

    Para conceder funções do BigQuery a uma tabela ou uma vista selecionada, siga estes passos:

    1. Na Google Cloud consola, aceda à página Dataform.

      Aceder ao Dataform

    2. Selecione um repositório e, de seguida, selecione um espaço de trabalho.

    3. No painel Ficheiros, expanda o diretório definitions/.

    4. Selecione o ficheiro de definição .sqlx da tabela ou da vista à qual quer conceder acesso.

    5. No ficheiro, introduza o seguinte fragmento do código:

      post_operations {
          GRANT "ROLE_LIST"
          ON "RESOURCE_TYPE" ${self()}
          TO "USER_LIST"
      }
      

      Substitua o seguinte:

      • ROLE_LIST: a função do BigQuery ou a lista de funções do BigQuery separadas por vírgulas que quer conceder.

      • RESOURCE_TYPE: TABLE ou VIEW.

      • USER_LIST: a lista de utilizadores separada por vírgulas aos quais a função é concedida.

        Para ver uma lista de formatos válidos, consulte user_list.

    6. Opcional: clique em Formatar.

    7. Execute a tabela ou a vista.

    8. Se concedeu acesso numa tabela incremental, remova a declaração GRANT do ficheiro de definição da tabela após a primeira execução.

    O seguinte exemplo de código mostra a função de visitante do BigQuery concedida numa tabela a um utilizador:

    config { type: "table" }
    
    SELECT ...
    
    post_operations {
      GRANT `roles/bigquery.dataViewer`
      ON TABLE ${self()}
      TO "user:222larabrown@gmail.com"
    }
    

    Revogue funções do BigQuery de uma tabela ou uma vista

    Pode revogar funções do BigQuery de uma tabela ou vista adicionando um post_operations bloco com a REVOKE declaração DCL ao ficheiro de definição .sqlx da tabela ou vista selecionada.

    Para revogar funções do BigQuery de uma tabela ou vista selecionada, siga estes passos:

    1. Na Google Cloud consola, aceda à página Dataform.

      Aceder ao Dataform

    2. Selecione um repositório e, de seguida, selecione um espaço de trabalho.

    3. No painel Ficheiros, expanda o diretório definitions/.

    4. Selecione o ficheiro de definição .sqlx da tabela ou da vista à qual quer revogar o acesso.

    5. No bloco post_operations, introduza a seguinte declaração REVOKE:

          REVOKE "ROLE_LIST"
          ON "RESOURCE_TYPE" ${self()}
          FROM "USER_LIST"
      

      Substitua o seguinte:

      • ROLE_LIST: a função do BigQuery ou a lista de funções do BigQuery separadas por vírgulas que quer revogar.
      • RESOURCE_TYPE: TABLE ou VIEW.
      • USER_LIST: a lista de utilizadores separada por vírgulas dos quais a função é revogada. Para ver uma lista de formatos válidos, consulte user_list.
    6. Para revogar o acesso concedido numa declaração GRANT no ficheiro, substitua a declaração GRANT por uma declaração REVOKE.

    7. Opcional: clique em Formatar.

    8. Execute a tabela ou a vista.

    9. Se revogou o acesso a uma tabela incremental, remova a declaração REVOKE do ficheiro de definição da tabela após a primeira execução.

    O exemplo de código seguinte mostra a função Visualizador do BigQuery revogada de um utilizador numa tabela:

    config { type: "table" }
    
    SELECT ...
    
    post_operations {
      REVOKE `roles/bigquery.dataViewer`
      ON TABLE ${self()}
      FROM "user:222larabrown@gmail.com"
    }
    

    Gerir coletivamente as funções do BigQuery para tabelas e vistas

    Para controlar o acesso do BigQuery a tabelas e vistas individuais numa única localização, pode criar um ficheiro type: "operations" dedicado com declarações DCL GRANT e REVOKE.

    Para gerir o acesso à tabela do BigQuery num único type: "operations" ficheiro, siga estes passos:

    1. Na Google Cloud consola, aceda à página Dataform.

      Aceder ao Dataform

    2. Selecione um repositório e, de seguida, selecione um espaço de trabalho.

    3. No painel Ficheiros, junto a definitions/, clique no menu Mais.

    4. Clique em Criar ficheiro.

    5. No campo Adicionar um caminho do ficheiro, introduza o nome do ficheiro seguido de .sqlx após definitions/. Por exemplo, definitions/table-access.sqlx.

      Os nomes de ficheiros só podem incluir números, letras, hífenes e sublinhados.

    6. Clique em Criar ficheiro.

    7. No painel Ficheiros, expanda o diretório definitions/ e selecione o ficheiro criado recentemente.

    8. No ficheiro, introduza o seguinte fragmento do código:

        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"
      

      Substitua o seguinte:

      • ROLE_LIST: a função do BigQuery ou a lista de funções do BigQuery separadas por vírgulas que quer conceder ou revogar.
      • RESOURCE_TYPE: TABLE ou VIEW.
      • RESOURCE_NAME: o nome da tabela ou da vista.
      • USER_LIST: a lista de utilizadores separada por vírgulas aos quais a função é concedida ou revogada. Para ver uma lista de formatos válidos, consulte user_list.
    9. Adicione instruções GRANT e REVOKE conforme necessário.

      1. Para revogar o acesso concedido numa declaração GRANT no ficheiro, substitua a declaração GRANT por uma declaração REVOKE.

        A remoção da declaração GRANT sem adicionar a declaração REVOKE não revoga o acesso.

    10. Opcional: clique em Formatar.

    11. Execute o ficheiro após cada atualização.

      1. Se concedeu ou revogou o acesso numa tabela incremental, remova a declaração GRANT ou REVOKE do ficheiro após a primeira execução da declaração.

    O que se segue?