Controlar o acesso com o 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. 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

Conceder acesso obrigatório ao Dataform

Esta seção mostra como conceder os papéis do Identity and Access Management (IAM) que as contas de serviço do Dataform precisam para executar fluxos de trabalho no BigQuery.

Sobre as contas de serviço no Dataform

Quando você cria seu primeiro repositório do Dataform, ele gera automaticamente uma conta de serviço padrão. O Dataform usa a conta de serviço padrão para interagir com o BigQuery em seu nome. A conta de serviço padrão do Dataform não recebe nenhum papel ou permissão do BigQuery por padrão. É necessário conceder o acesso necessário à conta de serviço padrão do Dataform.

O ID da conta de serviço padrão do Dataform está neste formato:

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

Substitua PROJECT_NUMBER pelo ID numérico do seu projeto do Google Cloud. Encontre o ID do projeto do Google Cloud no painel do console do Google Cloud. Para mais informações, consulte Como identificar projetos.

Além da conta de serviço padrão do Dataform, é possível usar outras contas de serviço para executar fluxos de trabalho em seu nome. É possível configurar contas de serviço personalizadas das seguintes maneiras:

Ao criar um repositório do Dataform ou uma configuração de fluxo de trabalho, é possível selecionar qualquer conta de serviço associada ao seu projeto do Google Cloud a que você tenha acesso. É necessário configurar as permissõ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 desse repositório. Todas as outras operações do repositório ainda são realizadas pela conta de serviço padrão do Dataform.

Papéis necessários para contas de serviço do Dataform

As contas de serviço padrão e personalizadas usadas no Dataform exigem os seguintes papéis do IAM do BigQuery para executar fluxos de trabalho no BigQuery:

Além disso, é necessário conceder à conta de serviço padrão do Dataform o papel Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) para que ela possa acessar todas as contas de serviço personalizadas que você quer usar no Dataform.

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

A concessão dos papéis exigidos pelo Dataform a uma conta de serviço vem com as seguintes considerações de segurança:

  • Qualquer conta de serviço que receber as funções necessárias pode ter acesso ao BigQuery ou ao Secret Manager no projeto ao qual a conta de serviço pertence, independentemente dos controles de serviço da VPC.

    Para mais informações, consulte Configurar o VPC Service Controls para o Dataform.

  • Qualquer usuário com a permissão IAM dataform.repositories.create pode executar o código usando a conta de serviço padrão do Dataform e todas as permissões concedidas a essa conta.

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

Para restringir os dados que uma conta de usuário ou de serviço pode ler ou gravar no BigQuery, conceda permissões granulares do IAM do BigQuery a conjuntos de dados ou tabelas selecionadas. Para mais informações, consulte Como controlar o acesso a conjuntos de dados e Como controlar o acesso a tabelas e visualizações.

Conceder os papéis necessários do BigQuery a uma conta de serviço usada no Dataform

Para conceder os papéis do IAM do BigQuery necessários à sua conta de serviço padrão do Dataform ou a uma conta de serviço personalizada que você quer usar no Dataform, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Dataform.

    Acessar o Dataform

  2. Selecione ou crie um repositório.

  3. No console do Google Cloud, abra a página IAM.

    Acessar IAM

  4. Clique em Permitir acesso.

  5. No campo Novos principais, insira o ID da conta de serviço.

  6. Na lista Selecionar um papel, escolha o papel Usuário de jobs do BigQuery.

  7. Clique em Adicionar outro papel e, na lista Selecionar um papel, selecione Editor de dados do BigQuery.

  8. Clique em Adicionar outro papel e, na lista Selecionar um papel, selecione Leitor de dados do BigQuery.

  9. Clique em Salvar.

Conceder 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 padrão do Dataform precisa poder acessar a conta de serviço personalizada. Para conceder esse acesso, adicione a conta de serviço padrão do Dataform como principal à conta de serviço personalizada com o papel de Criador de token da conta de serviço.

Para conceder à conta de serviço padrão do Dataform acesso a uma conta de serviço personalizada, siga estas etapas:

  1. No console do Google Cloud, acesse IAM > Contas de serviço.

    Acesse as Contas de serviço

  2. Selecione um projeto.

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

  4. Acesse Permissões e clique em Conceder acesso.

  5. No campo Novos participantes, insira o ID da conta de serviço padrão do Dataform.

    O ID da conta de serviço padrão do Dataform está neste formato:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. Na lista Selecionar um papel, selecione o papel Criador de token de conta de serviço.

  7. Clique em Salvar.

Controlar o acesso ao Dataform com o IAM

Este documento descreve as opções de controle de acesso do Dataform e mostra como conferir e conceder papéis do Dataform. O Dataform usa o gerenciamento de identidade e acesso (IAM) para controle de acesso. Para mais informações sobre papéis e permissões no IAM, consulte Noções básicas sobre papéis e permissões.

Papéis predefinidos do Dataform

A tabela a seguir lista os papéis predefinidos que 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

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

Os papéis personalizados podem incluir qualquer permissão especificada por você. É possível criar papéis personalizados que incluam permissões para executar operações administrativas específicas, como criar espaços de trabalho de desenvolvimento ou criar arquivos e diretórios em um espaço de trabalho de desenvolvimento. Para criar papéis personalizados, consulte Como criar e gerenciar papéis personalizados.

Considerações de segurança para permissões do Dataform

Qualquer usuário com a permissão dataform.repositories.create pode executar o código no BigQuery usando a conta de serviço padrão do Dataform e todas as permissões concedidas a essa conta. Isso inclui a execução de fluxos de trabalho do Dataform.

As permissões dataform.repositories.create estão incluídas nos seguintes papéis do IAM:

Para restringir os dados que uma conta de usuário ou de serviço pode ler ou gravar no BigQuery, conceda permissões granulares do IAM do BigQuery a conjuntos de dados ou tabelas selecionadas. Para mais informações, consulte Como controlar o acesso a conjuntos de dados e Como controlar o acesso a tabelas e visualizações.

Para mais informações sobre a conta de serviço padrão do Dataform e os papéis e as permissões necessários, consulte Conceder acesso necessário ao Dataform.

Conferir papéis do Dataform

No console do Google Cloud, siga estas etapas:

  1. Acesse a página IAM e administrador > Papéis.

    Acessar "Papéis"

  2. No campo Filtro, selecione Usado em, digite Dataform e pressione Enter.

  3. Clique em uma das funções listadas para conferir as permissões dela no painel à direita.

    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 um papel em um projeto, consulte Conceder um papel. É possível conceder papéis predefinidos ou personalizados dessa maneira.

Controlar o acesso a um repositório individual

Para controlar o acesso ao Dataform com permissões granulares, é possível definir papéis do IAM do Dataform em repositórios individuais usando a solicitação repositories.setIamPolicy da API Dataform.

Para definir papéis do IAM do Dataform em um repositório individual do Dataform, siga estas etapas:

  1. No terminal, transmita a solicitação repositories.setIamPolicy da API Dataform com uma política de acesso.

  2. Na política, vincule um usuário, grupo, domínio ou conta de serviço a um papel selecionado neste formato:

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

    Substitua:

    • ROLE: o papel do IAM do Dataform que você quer conceder no repositório.
    • TYPE: user, group, domain ou serviceAccount.
    • IDENTIFIER: o usuário, grupo, domínio ou conta de serviço a que você quer conceder o papel.
  3. Na página do IAM, verifique se todos os usuários podem acessar a lista completa de repositórios do Dataform usando uma função do Dataform com a permissão dataform.repositories.list.

  4. No IAM, verifique se apenas os usuários que precisam de acesso total a todos os repositórios do Dataform recebem o papel de administrador do Dataform em todos os repositórios.

O comando a seguir transmite a solicitação da API Dataform repositories.setIamPolicy que concede o papel de editor do Dataform no repositório sales a um único usuário:

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"

Conceder acesso público a um repositório

É possível conceder acesso público a um repositório do Dataform concedendo papéis do IAM no repositório ao participante allAuthenticatedUsers.

Quando você atribui um papel do IAM ao allAuthenticatedUsers, as contas de serviço e todos os usuários na Internet que se autenticaram com uma Conta do Google recebem esse papel. Isso inclui contas que não estão conectadas a uma conta do Google Workspace ou do Cloud Identity, como contas pessoais do Gmail. Os usuários que não forem autenticados, como os visitantes anônimos, não serão incluídos. Para mais informações, consulte Todos os usuários autenticados.

Por exemplo, quando você concede a função "Leitor de formulário de dados" a allAuthenticatedUsers no repositório sales, todas as contas de serviço e usuários na Internet que se autenticaram com uma Conta do Google têm acesso somente leitura a todos os recursos de código sales.

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

  1. No terminal, transmita a solicitação repositories.setIamPolicy da API Dataform com uma política de acesso.

  2. Na política, vincule o participante allAuthenticatedUsers a um papel selecionado no seguinte formato:

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

    Substitua ROLE por um papel do IAM do Dataform que você quer conceder a todos os usuários autenticados.

O comando a seguir transmite a solicitação da API Dataform repositories.setIamPolicy que concede o papel de leitor de formulários de dados 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"

Impedir o acesso público a repositórios

Para garantir que nenhum acesso seja concedido ao público em nenhum repositório do Dataform, você pode restringir o principal allAuthenticatedUsers no seu projeto.

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

Quando você 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 o acesso público a todos os recursos, incluindo repositórios do Dataform.

Para mais informações sobre a política iam.allowedPolicyMemberDomains e instruções para configurá-la, consulte Como restringir identidades por domínio.

Federação de identidade de colaboradores no Dataform

A federação de identidade de colaboradores permite usar um provedor de identidade externo (IdP) para autenticar e autorizar os usuários a Google Cloud serviços com o IAM.

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

Controlar o acesso a tabelas individuais com o IAM

Esta seção mostra como conceder e revogar papéis do IAM do BigQuery para tabelas e visualizações individuais do Dataform.

Quando o Dataform executa uma tabela ou visualização, ele cria o recurso no BigQuery. Durante o desenvolvimento no Dataform, é possível conceder papéis do BigQuery a tabelas e visualizações individuais para controlar o acesso ao BigQuery após a execução.

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

Conceder papéis do BigQuery a uma tabela ou visualização

É possível conceder papéis do BigQuery a uma tabela ou visualização no Dataform adicionando um bloco post_operations com a instrução DCL GRANT ao arquivo de definição .sqlx da tabela ou visualização selecionada.

Para conceder funções do BigQuery a uma tabela ou visualização selecionada, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Dataform.

    Acessar o Dataform

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

  3. No painel Files, abra o diretório definitions/.

  4. Selecione o arquivo de definição .sqlx da tabela ou visualização a que você quer conceder acesso.

  5. No arquivo, digite este snippet de código:

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

    Substitua:

    • ROLE_LIST: o papel do BigQuery ou a lista de papéis do BigQuery separados por vírgulas que você quer conceder.

    • RESOURCE_TYPE: TABLE ou VIEW.

    • USER_LIST: a lista separada por vírgulas de usuários a que o papel é concedido.

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

  6. Opcional: clique em Formato.

  7. Executar a tabela ou visualização.

  8. Se você concedeu acesso a uma tabela incremental, remova a instrução GRANT do arquivo de definição de tabela após a primeira execução.

O exemplo de código abaixo mostra a função de visualizador do BigQuery concedida a um usuário em uma tabela:

config { type: "table" }

SELECT ...

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

Revogar papéis do BigQuery de uma tabela ou visualização

É possível revogar as funções do BigQuery de uma tabela ou visualização adicionando um bloco post_operations com a instrução DCL REVOKE ao arquivo de definição .sqlx da tabela ou visualização selecionada.

Para revogar as funções do BigQuery de uma tabela ou visualização selecionada, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Dataform.

    Acessar o Dataform

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

  3. No painel Files, abra o diretório definitions/.

  4. Selecione o arquivo de definição .sqlx da tabela ou visualização que você quer revogar o acesso.

  5. No bloco post_operations, insira a seguinte instrução REVOKE:

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

    Substitua:

    • ROLE_LIST: o papel do BigQuery ou a lista de papéis do BigQuery separados por vírgulas que você quer revogar.
    • RESOURCE_TYPE: TABLE ou VIEW.
    • USER_LIST: a lista separada por vírgulas de usuários com o papel revogado. Para conferir uma lista de formatos válidos, consulte user_list.
  6. Para revogar o acesso concedido em uma instrução GRANT no arquivo, substitua a instrução GRANT por uma REVOKE.

  7. Opcional: clique em Formato.

  8. Executar a tabela ou visualização.

  9. Se você tiver revogado o acesso a uma tabela incremental, remova a instrução REVOKE do arquivo de definição de tabela após a primeira execução.

O exemplo de código abaixo mostra a função de visualizador do BigQuery revogada de um usuário em uma tabela:

config { type: "table" }

SELECT ...

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

Gerenciar coletivamente os papéis do BigQuery para tabelas e visualizações

Para controlar o acesso do BigQuery a tabelas e visualizações individuais em um único local, crie um arquivo type: "operations" dedicado com GRANT e REVOKE instruções DCL.

Para gerenciar o acesso à tabela do BigQuery em um único arquivo type: "operations", siga estas etapas:

  1. No Console do Google Cloud, acesse a página Dataform.

    Acessar o Dataform

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

  3. No painel Files, ao lado de definitions/, clique no menu More.

  4. Selecione Criar arquivo.

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

    Os nomes de arquivo só podem incluir números, letras, hifens e sublinhados.

  6. Selecione Criar arquivo.

  7. No painel Files, abra o diretório definitions/ e selecione o arquivo recém-criado.

  8. No arquivo, digite este snippet de 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:

    • ROLE_LIST: o papel do BigQuery ou a lista de papéis do BigQuery separados por vírgulas que você quer conceder ou revogar.
    • RESOURCE_TYPE: TABLE ou VIEW.
    • RESOURCE_NAME: o nome da tabela ou visualização.
    • USER_LIST: a lista separada por vírgulas de usuários a que o papel é concedido ou revogado. Para conferir uma lista de formatos válidos, consulte user_list.
  9. Inclua instruções GRANT e REVOKE conforme necessário.

    1. Para revogar o acesso concedido em uma instrução GRANT no arquivo, substitua a instrução GRANT por uma instrução REVOKE.

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

  10. Opcional: clique em Formato.

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

    1. Se você concedeu ou revogou o acesso a uma tabela incremental, remova a instrução GRANT ou REVOKE do arquivo após a primeira execução da instrução.

A seguir