Este documento mostra como fazer o seguinte no Dataform:
- Conceda o acesso necessário ao Dataform.
- Controlar o acesso ao Dataform com o IAM.
- Controlar o acesso a tabelas individuais com o IAM.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
No nível do repositório, para executar todos os fluxos de trabalho em um determinado repositório.
Individualmente para cada configuração de fluxo de trabalho.
- Editor de dados do BigQuery em projetos em que o Dataform precisa de acesso de leitura e gravação. Geralmente, isso inclui o projeto que hospeda seu repositório do Dataform.
- Leitor de dados do BigQuery em projetos que precisam de acesso somente leitura do Dataform.
- Usuário de jobs do BigQuery no projeto que hospeda seu repositório do Dataform.
- Proprietário de dados do BigQuery se você quiser consultar conjuntos de dados do BigQuery.
- Papéis do BigQuery para controle de acesso no nível da coluna se você quiser usar tags de política do BigQuery.
Qualquer conta de serviço que receba os papéis necessários pode ter acesso ao BigQuery ou ao Secret Manager no projeto a que pertence, independente dos VPC Service Controls.
Para mais informações, consulte Configurar o VPC Service Controls para o Dataform.
Qualquer usuário com a permissão
dataform.repositories.create
do IAM pode executar o código usando a conta de serviço padrão do Dataform e todas as permissões concedidas a ela.Para mais informações, consulte Considerações de segurança para permissões do Dataform.
- Para modificar uma configuração de fluxo de trabalho com as credenciais de outro usuário da Conta do Google anexadas, anexe suas próprias credenciais de usuário da Conta do Google à configuração do fluxo de trabalho ou mude a configuração para autenticar com uma conta de serviço.
- Não é possível modificar um resultado de compilação para uma configuração de lançamento se houver configurações de fluxo de trabalho que referenciam a configuração de lançamento e têm as credenciais de outro usuário da Conta do Google anexadas.
Não é possível definir uma configuração de fluxo de trabalho para autenticar com credenciais de usuário da Conta do Google e referenciar uma configuração de lançamento com uma programação. Essa limitação tem as seguintes consequências:
- Não é possível atualizar uma configuração de versão para usar uma programação se houver configurações de fluxo de trabalho que referenciam a configuração de versão definida para autenticar com as credenciais de usuário da Conta do Google.
- Não é possível criar uma configuração de fluxo de trabalho que faça a autenticação com credenciais de usuário da Conta do Google e aponte para uma configuração de versão com uma programação.
- Não é possível criar ou atualizar uma configuração de fluxo de trabalho para usar credenciais de usuário da Conta do Google e apontar para uma configuração de versão com uma programação.
No Google Cloud console, acesse a página Dataform.
Selecione ou crie um repositório.
No console Google Cloud , acesse a página IAM.
Clique em Permitir acesso.
No campo Novos principais, insira o ID da conta de serviço ou o e-mail da Conta do Google do usuário (Prévia).
Na lista Selecionar um papel, escolha a opção Usuário de jobs do BigQuery.
Clique em Adicionar outro papel. Em seguida, na lista Selecionar um papel, escolha Editor de dados do BigQuery.
Clique em Adicionar outro papel e, na lista Selecionar papel, escolha Leitor de dados do BigQuery.
Clique em Salvar.
No console Google Cloud , acesse IAM > Contas de serviço.
Selecione um projeto.
Na página Contas de serviço do projeto "PROJECT_NAME", selecione sua conta de serviço personalizada do Dataform.
Acesse Permissões e clique em Conceder acesso.
No campo Novos principais, digite o ID da conta de serviço padrão do Dataform.
O ID da conta de serviço padrão do Dataform está no seguinte formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Na lista Selecionar um papel, escolha Criador de token de conta de serviço.
Clique em Salvar.
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.config.get
dataform.config.update
dataform.locations.get
dataform.locations.list
dataform.releaseConfigs.create
dataform.releaseConfigs.delete
dataform.releaseConfigs.get
dataform.releaseConfigs.list
dataform.releaseConfigs.update
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.
workflowConfigs. create dataform.
workflowConfigs. delete dataform.workflowConfigs.get
dataform.workflowConfigs.list
dataform.
workflowConfigs. update dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.locations.get
dataform.locations.list
- Administrador do BigQuery (
roles/bigquery.admin
) - Usuário de jobs do BigQuery(
roles/bigquery.jobUser
) - Usuário do BigQuery Studio(
roles/bigquery.studioUser
) - Usuário do BigQuery (
roles/bigquery.user
) - Criador de código (
roles/dataform.codeCreator
) - Editor de código (
roles/dataform.codeEditor
) - Proprietário de código (
roles/dataform.codeOwner
) - Usuário do Colab Enterprise (
roles/aiplatform.colabEnterpriseUser
) - Administrador do Dataform (
roles/dataform.admin
) Acesse a página IAM e administrador > Papéis.
No campo Filtro, selecione Usado em, digite
Dataform
e pressione Enter.Clique em uma das funções listadas para ver 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.
No terminal, transmita a solicitação da API Dataform
repositories.setIamPolicy
com uma política de acesso.Na política, vincule um usuário, grupo, domínio ou conta de serviço a uma função selecionada no seguinte formato:
{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "TYPE:IDENTIFIER", ] }, ], } }
Substitua:
ROLE
: o papel do Dataform do IAM que você quer conceder no repositório.TYPE
:user
,group
,domain
ouserviceAccount
.IDENTIFIER
: o usuário, grupo, domínio ou conta de serviço a que você quer conceder o papel.
Na página do IAM, verifique se todos os usuários podem acessar a lista completa de repositórios do Dataform com uma função do Dataform com a permissão
dataform.repositories.list
.No IAM, verifique se apenas os usuários que precisam de acesso total a todos os repositórios do Dataform têm o papel de administrador do Dataform em todos os repositórios.
No terminal, transmita a solicitação da API Dataform
repositories.setIamPolicy
com uma política de acesso.Na política, vincule 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 você quer conceder a todos os usuários autenticados.No Google Cloud console, acesse a página Dataform.
Selecione um repositório e um espaço de trabalho.
No painel Arquivos, abra o diretório
definitions/
.Selecione o arquivo de definição
.sqlx
da tabela ou visualização a que você quer conceder acesso.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írgula que você quer conceder.
RESOURCE_TYPE:
TABLE
ouVIEW
.USER_LIST: a lista separada por vírgulas de usuários a que o papel é concedido.
Para ver uma lista de formatos válidos, consulte user_list.
Opcional: clique em Formatar.
Execute a tabela ou a visualização.
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.No Google Cloud console, acesse a página Dataform.
Selecione um repositório e um espaço de trabalho.
No painel Arquivos, abra o diretório
definitions/
.Selecione o arquivo de definição
.sqlx
da tabela ou visualização a que você quer revogar o acesso.No bloco
post_operations
, insira a seguinte instruçãoREVOKE
:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "USER_LIST"
Substitua:
- ROLE_LIST: a função do BigQuery ou a lista de funções do BigQuery separadas por vírgula que você quer revogar.
- RESOURCE_TYPE:
TABLE
ouVIEW
. - USER_LIST: a lista separada por vírgulas de usuários com o papel revogado. Para ver uma lista de formatos válidos, consulte user_list.
Para revogar o acesso concedido em uma instrução
GRANT
no arquivo, substitua a instruçãoGRANT
por uma instruçãoREVOKE
.Opcional: clique em Formatar.
Execute a tabela ou a visualização.
Se você revogou o acesso a uma tabela incremental, remova a instrução
REVOKE
do arquivo de definição de tabela após a primeira execução.No Google Cloud console, acesse a página Dataform.
Selecione um repositório e um espaço de trabalho.
No painel Arquivos, ao lado de
definitions/
, clique no menuMais.
Selecione Criar arquivo.
No campo Adicionar um caminho de arquivo, insira o nome do arquivo seguido por
.sqlx
apósdefinitions/
. Por exemplo,definitions/table-access.sqlx
.Os nomes de arquivo só podem incluir números, letras, hifens e sublinhados.
Selecione Criar arquivo.
No painel Arquivos, abra o diretório
definitions/
e selecione o arquivo recém-criado.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írgula que você quer conceder ou revogar.
- RESOURCE_TYPE:
TABLE
ouVIEW
. - RESOURCE_NAME: o nome da tabela ou visualização.
- USER_LIST: a lista separada por vírgulas de usuários a quem o papel é concedido ou revogado. Para ver uma lista de formatos válidos, consulte user_list.
Adicione instruções
GRANT
eREVOKE
conforme necessário.Para revogar o acesso concedido em uma instrução
GRANT
no arquivo, substitua a instruçãoGRANT
por uma instruçãoREVOKE
.Remover a instrução
GRANT
sem adicionar a instruçãoREVOKE
não revoga o acesso.
Opcional: clique em Formatar.
Execute o arquivo após cada atualização.
- Se você concedeu ou revogou o acesso em uma tabela incremental, remova a instrução
GRANT
ouREVOKE
do arquivo após a primeira execução da instrução.
- Se você concedeu ou revogou o acesso em uma tabela incremental, remova a instrução
- Para saber mais sobre o IAM, consulte a Visão geral do IAM.
- Para saber mais sobre como gerenciar o acesso a recursos, consulte Gerenciar o acesso a projetos, pastas e organizações
- Para saber mais sobre os principais conceitos da federação de identidade de colaboradores, consulte Federação de identidade de colaboradores.
- Para saber mais sobre os papéis e as permissões do IAM no BigQuery, consulte Controle de acesso com o IAM.
- Para saber mais sobre como conceder permissões granulares a conjuntos de dados do BigQuery, consulte Controlar o acesso a conjuntos de dados.
Conceder o acesso necessário ao Dataform
Nesta seção, mostramos 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, o Dataform 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. Por padrão, a conta de serviço do Dataform não recebe papéis nem permissões do BigQuery. Conceda o acesso necessário à conta de serviço padrão do Dataform.
O ID da conta de serviço padrão do Dataform está no seguinte formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Substitua PROJECT_NUMBER pelo ID numérico do seu projeto doGoogle Cloud . Encontre o ID do projeto Google Cloud no painel do consoleGoogle Cloud . Para mais informações, consulte Identificar projetos.
Além da conta de serviço padrão do Dataform, você pode 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 ou uma configuração de fluxo de trabalho do Dataform, é possível selecionar qualquer conta de serviço associada ao seu projeto Google Cloud que você tenha acesso. É necessário configurar as permissões necessárias para todas as contas de serviço associadas aos 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 e Contas do Google
As contas de serviço padrão e personalizadas, bem como as credenciais de usuário da Conta do Google (prévia) usadas para autenticar 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 de Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator
) para que ela possa acessar qualquer conta de serviço personalizada que você queira usar no Dataform.
Se você ativou o modo estrito de agir como
(prévia) e configurou a definição de Frequência para uma configuração de fluxo de trabalho, conceda o papel Usuário da conta de serviço (roles/iam.serviceAccountUser
) à conta de serviço padrão do Dataform na conta de serviço efetiva da configuração de fluxo de trabalho.
Considerações de segurança para contas de serviço do Dataform e Contas do Google
Conceder os papéis exigidos pelo Dataform a uma conta de serviço ou a uma Conta do Google de um usuário (prévia) tem as seguintes considerações de segurança:
Para restringir os dados que um usuário ou uma conta de serviço pode ler ou gravar no BigQuery, conceda permissões granulares do IAM do BigQuery a conjuntos de dados ou tabelas selecionados do BigQuery. Para mais informações, consulte Como controlar o acesso a conjuntos de dados e Como controlar o acesso a tabelas e visualizações.
Para impedir que os usuários realizem ações usando as credenciais de outro usuário, as seguintes restrições são aplicadas:
Conceder os papéis necessários do BigQuery a uma conta de serviço ou do Google usada no Dataform
Para conceder os papéis necessários do IAM do BigQuery à sua conta de serviço padrão do Dataform, a uma conta de serviço personalizada que você quer usar no Dataform ou a uma Conta do Google de um usuário que você quer usar para autenticar no Dataform (prévia), siga estas etapas:
Conceder acesso de criação de token 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 ter acesso à 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 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:
Controlar o acesso ao Dataform com o IAM
Esta seção descreve as opções de controle de acesso do Dataform e mostra como visualizar 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 |
---|---|
Dataform Admin( Full access to all Dataform resources. |
|
Code Commenter Beta( Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources. |
|
Code Creator( Access only to private and shared code resources. The permissions in the Code Creator let you create and list code in Dataform, and access only the code that you created and code that was explicitly shared with you. |
|
Code Editor( Edit access code resources. |
|
Code Owner( Full access to code resources. |
|
Code Viewer( Read-only access to all code resources. |
|
Dataform Editor( Edit access to Workspaces and Read-only access to Repositories. |
|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
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 realizar 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 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 um usuário ou uma conta de serviço pode ler ou gravar no BigQuery, conceda permissões granulares do IAM do BigQuery a conjuntos de dados ou tabelas selecionados do BigQuery. 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 permissões necessários, consulte Conceder o acesso necessário ao Dataform.
Ver papéis do Dataform
No console Google Cloud , siga estas etapas:
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,
defina 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:
O comando a seguir transmite a solicitação da API Dataform repositories.setIamPolicy
que concede a função 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 principal allAuthenticatedUsers
.
Quando você atribui um papel do IAM ao principal 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 o papel de leitor do Dataform 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:
O comando a seguir transmite a solicitação da API Dataform repositories.setIamPolicy
, que concede o papel de leitor do Dataform no repositório sales
para 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 qualquer repositório do Dataform, restrinja 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 usuários a Google Cloud serviços com o IAM.
O Dataform é compatível com a federação de identidade de colaboradores sem limitações conhecidas.
Controlar o acesso a tabelas individuais com o IAM
Nesta seção, mostramos 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, você pode conceder papéis do BigQuery a tabelas e visualizações individuais para controlar o acesso delas no 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 papéis do BigQuery a uma tabela ou visualização selecionada, siga estas etapas:
O exemplo de código a seguir mostra a função de leitor 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
Para revogar papéis do BigQuery de uma tabela ou visualização, adicione um bloco post_operations
com a instrução DCL REVOKE
ao arquivo de definição .sqlx
da tabela ou visualização selecionada.
Para revogar papéis do BigQuery de uma tabela ou visualização selecionada, siga estas etapas:
O exemplo de código a seguir mostra a função de leitor 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 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
instruções de DCL GRANT
e
REVOKE
.
Para gerenciar o acesso à tabela do BigQuery em um único arquivo type: "operations"
, siga estas etapas: