Este documento mostra como fazer o seguinte no Dataform:
- Conceder 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
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
Conceder ao Dataform o acesso necessário
Nesta seção, mostramos como conceder os papéis do Identity and Access Management (IAM) que os agentes de serviço do Dataform e as contas de serviço personalizadas precisam para executar fluxos de trabalho no BigQuery.
Sobre contas de serviço personalizadas e agentes de serviço do Dataform
É possível configurar contas de serviço personalizadas para executar fluxos de trabalho em seu nome das seguintes maneiras:
- 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.
Ao criar um repositório ou uma configuração de fluxo de trabalho do Dataform, é possível selecionar qualquer conta de serviço em que você tenha permissões de atuação. É preciso configurar as permissões de atuação necessárias para todas as contas de serviço associadas aos recursos do Dataform.
Quando você cria seu primeiro repositório do Dataform, ele gera automaticamente um agente de serviço. O Dataform usa o agente de serviço para interagir com o BigQuery em seu nome.
O ID do agente de serviço do Dataform está no seguinte formato:
service-PROJECT_NUMBER@gcp-sa-dataform.
Substitua PROJECT_NUMBER pelo ID numérico do seu projeto doGoogle Cloud . Encontre o ID do projeto do Google Cloud no painel do console doGoogle Cloud . Para mais informações, consulte Encontrar o nome, o número e o ID do projeto.
Papéis necessários para agentes de serviço do Dataform, contas de serviço personalizadas e Contas do Google
Os agentes de serviço do Dataform, as contas de serviço personalizadas e as credenciais de usuário de uma Conta do Google usadas para autenticação no Dataform exigem os seguintes papéis do IAM do BigQuery para executar fluxos de trabalho no BigQuery:
- Editor de dados do BigQuery
(
roles/bigquery.dataEditor) em projetos em que o Dataform precisa de acesso de leitura e gravação. Isso geralmente inclui o projeto que hospeda seu repositório do Dataform. - Visualizador de dados do BigQuery
(
roles/bigquery.dataViewer) em projetos a que o Dataform precisa de acesso somente leitura. - Usuário de jobs do BigQuery
(
roles/bigquery.jobUser) no projeto que hospeda o repositório do Dataform. - Proprietário de dados do BigQuery
(
roles/bigquery.dataOwner) 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.
Além disso, conceda os seguintes papéis ao agente de serviço do Dataform na conta de serviço efetiva para a configuração do fluxo de trabalho. Esses papéis são necessários para que o modo de atuação estrita funcione.
- Usuário da conta de serviço
(
roles/iam.serviceAccountUser) - Criador do token da conta de serviço
(
roles/iam.serviceAccountTokenCreator)
Para versões automáticas de repositórios e execuções automáticas de fluxos de trabalho,
conceda ao agente de serviço do Dataform a
permissão iam.serviceAccounts.actAs na
conta de serviço efetiva.
Para ativar o enriquecimento de metadados no Knowledge Catalog
e a integração do quadro de pontuação de qualidade de dados,
conceda o papel de
Editor do Dataplex Catalog
(roles/dataplex.catalogEditor) no projeto ou no grupo de entrada @bigquery
às contas de serviço personalizadas ou às Contas do Google usadas para a execução do fluxo de trabalho.
Considerações sobre segurança
A concessão dos papéis exigidos pelo Dataform a um agente de serviço do Dataform, uma conta de serviço personalizada ou uma Conta do Google de um usuário vem com as seguintes considerações de segurança:
Qualquer conta de serviço personalizada que receba os papéis necessários pode ter acesso ao BigQuery, ao Secret Manager ou ao Knowledge Catalog no projeto ao qual a conta de serviço pertence, independentemente do VPC Service Controls. Quando o Dataform usa uma conta de serviço personalizada para executar fluxos de trabalho, as solicitações do Dataform são tratadas como originadas de dentro do perímetro do VPC Service Controls do projeto que contém seu repositório. Consequentemente, o VPC Service Controls não bloqueia a comunicação entre o Dataform e outros serviços, como o BigQuery, o Secret Manager ou o Knowledge Catalog, se esses recursos estiverem localizados no mesmo perímetro de serviço.
Para mais detalhes sobre como gerenciar esses limites de segurança, consulte Configurar o VPC Service Controls.
Qualquer usuário com a permissão do IAM
dataform.repositories.createpode executar código usando o agente de serviço do Dataform e todas as permissões concedidas a esse agente ou conta de serviço.Para mais informações, consulte Considerações de segurança para permissões do Dataform.
Para manter um modelo de permissões seguro, audite regularmente as vinculações de papéis do agente de serviço do Dataform. Para instruções detalhadas de monitoramento, consulte Monitorar permissões de agente de serviço com o Security Command Center.
Para restringir os dados que um usuário, agente de serviço ou 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 ao usar as credenciais da Conta do Google de outro usuário, as seguintes restrições são aplicadas:
- Para modificar uma configuração de fluxo de trabalho com as credenciais de usuário de outra Conta do Google anexada a ela, é necessário anexar as credenciais de usuário da sua própria Conta do Google à configuração do fluxo de trabalho ou alterar a configuração do fluxo de trabalho para autenticar com uma conta de serviço personalizada.
- 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 façam referência à configuração de lançamento que tenham as credenciais de outro usuário da Conta do Google anexadas.
Não é possível definir uma configuração de fluxo de trabalho para autenticação com as 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 façam referência à configuração de versão definida para autenticação com as credenciais de usuário da Conta do Google.
- Não é possível criar uma configuração de fluxo de trabalho que se autentique com as 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 as credenciais de usuário da Conta do Google e apontar para uma configuração de lançamento com uma programação.
Para proibir o uso de credenciais de usuário final da Conta do Google, um administrador da organização pode criar uma restrição de política da organização personalizada que nega a configuração de
end_user_auth_config. Para mais informações, consulte Criar restrições personalizadas da política da organização.
Conceder os papéis necessários do BigQuery
Para conceder os papéis do IAM do BigQuery necessários ao agente de serviço do Dataform, a uma conta de serviço personalizada que você quer usar no Dataform ou à Conta do Google de um usuário que você quer usar para autenticação no Dataform, siga estas etapas:
No Google Cloud console, acesse a página Dataform.
Selecione ou crie um repositório.
No console do Google Cloud , acesse a página IAM.
Clique em Permitir acesso.
No campo Novos principais, insira o ID do agente de serviço, o ID da conta de serviço ou o e-mail da Conta do Google do usuário.
Na lista Selecionar um papel, escolha Usuário de jobs do BigQuery.
Clique em Adicionar outro papel. Em seguida, na lista Selecionar papel, escolha a opção Editor de dados do BigQuery.
Clique em Adicionar outro papel. Depois, na lista Selecionar um papel, escolha Leitor de dados do BigQuery.
Clique em Salvar.
Conceder papéis necessários para fluxos de trabalho automáticos
Para usar uma conta de serviço personalizada no Dataform, o agente de serviço do Dataform precisa ter acesso à conta de serviço personalizada. Isso permite que o Dataform execute seus fluxos de trabalho usando as permissões definidas na sua conta de serviço personalizada, em vez de na conta do agente de serviço.
Para conceder esse acesso, é preciso conceder o
papel de Criador de token da conta de serviço
(roles/iam.serviceAccountTokenCreator) ao agente de serviço do Dataform
como principal. Isso permite que o agente de serviço do Dataform
represente a conta de serviço criando credenciais de curta duração
conhecidas como tokens. Esses tokens são necessários para que o Dataform execute
fluxos de trabalho usando a identidade da conta de serviço personalizada.
Também é necessário conceder o
papel de usuário da conta de serviço
(roles/iam.serviceAccountUser) ao agente de serviço
do Dataform. Isso permite que o agente de serviço do Dataform inicie novas
execuções automáticas de fluxo de trabalho para configurações de fluxo de trabalho executadas pela conta de serviço personalizada.
Para conceder ao agente de serviço do Dataform acesso a uma conta de serviço personalizada, siga estas etapas:
No console do Google Cloud , acesse IAM > Contas de serviço.
Selecione o projeto do Google Cloud em que sua conta de serviço personalizada está localizada.
Na página Contas de serviço do projeto "PROJECT_NAME", selecione sua conta de serviço personalizada.
Acesse Principais com acesso e clique em Permitir acesso.
No campo Novos principais, digite o ID do agente de serviço do Dataform.
O ID do agente de serviço do Dataform está no seguinte formato:
service-PROJECT_NUMBER@gcp-sa-dataform.Na lista Selecionar um papel, selecione os papéis Criador de token de conta de serviço e Usuário da conta de serviço.
Clique em Salvar.
A conta de serviço personalizada agora está pronta para ser configurada no repositório do Dataform.
Auditar configurações de conta de serviço
Nesta seção, mostramos como auditar seus recursos do Dataform para garantir o uso adequado da conta de serviço e as concessões de permissão. A auditoria é especialmente importante ao usar contas de serviço personalizadas, porque elas exigem permissões específicas para que o agente de serviço do Dataform funcione.
Ao usar uma conta de serviço personalizada para um repositório ou uma configuração de fluxo de trabalho do Dataform, verifique se o agente de serviço do Dataform tem o papel de usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço personalizada. Esse papel
concede a permissão iam.serviceAccounts.actAs, que permite que as execuções programadas,
iniciadas pelo agente de serviço do Dataform, representem
a conta de serviço personalizada. Além disso, verifique se o
agente de serviço do Dataform tem o
papel de criador de token da conta de serviço
(roles/iam.serviceAccountTokenCreator)
na conta de serviço em vigor.
Verificar as contas de serviço do repositório
Primeiro, identifique os recursos do dataform.Repository que estão no escopo da programação e execução do Dataform. Em seguida, verifique as configurações da conta de serviço
desses repositórios no escopo.
Use o Inventário de recursos do Cloud para listar todos os recursos do tipo
dataform.Repository. Para mais informações, consulte Ver seus recursos.Para cada repositório na saída do Inventário de recursos do Cloud, verifique o campo
resource.data.labelspara determinar se ele está no escopo. O caminho exato pode variar um pouco de acordo com o formato de exportação.Identifique repositórios fora do escopo inspecionando o mapa de rótulos da chave
single-file-asset-type. A presença dessa chave indica que o repositório é usado por um recurso do BigQuery. Se o valor forsqloudata_canvas, o repositório poderá ser excluído das verificações de permissão da conta de serviço.Os repositórios restantes que não têm essa chave ou esses valores estão no escopo das verificações de permissão da conta de serviço.
Para cada repositório no escopo, verifique o campo
resource.data.serviceAccountna saída do Inventário de recursos do Cloud para determinar se uma conta de serviço personalizada está configurada:- Se o campo
resource.data.serviceAccountestiver presente e o valor for diferente do endereço de e-mail do agente de serviço do Dataform do projeto, o repositório usará uma conta de serviço personalizada. Se o campo
resource.data.serviceAccountestiver ausente ou se o valor do campo corresponder ao agente de serviço do Dataform do projeto, o repositório usará o agente de serviço.
- Se o campo
Se uma conta de serviço personalizada for usada, verifique se o agente de serviço do Dataform tem os papéis de Usuário da conta de serviço (
roles/iam.serviceAccountUser) e Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) nessa conta de serviço personalizada.
Verificar as contas de serviço de configuração do fluxo de trabalho
O uso de contas de serviço personalizadas dedicadas para configurações de fluxo de trabalho do Dataform é uma prática recomendada de segurança, alinhada ao princípio de privilégio mínimo.
Para verificar o uso da conta de serviço para dataform.WorkflowConfig resources, faça o
seguinte:
Use o Inventário de recursos do Cloud para listar todos os recursos do tipo
dataform.WorkflowConfig.Para cada configuração de fluxo de trabalho, examine a saída do Inventário de recursos do Cloud para determinar a conta de serviço efetiva:
- Se o campo
resource.data.serviceAccountestiver presente, esse valor será o endereço de e-mail da conta de serviço definida explicitamente na configuração do fluxo de trabalho. - Se o campo
resource.data.serviceAccountestiver ausente, a configuração do fluxo de trabalho herdará a conta de serviço do repositório pai. Verifique a configuração do repositório pai para encontrar a conta de serviço em vigor.
- Se o campo
Identifique se uma conta de serviço personalizada está sendo usada comparando o endereço de e-mail da conta de serviço em vigor com o endereço de e-mail do agente de serviço do Dataform do projeto. Se forem diferentes, uma conta de serviço personalizada está em uso.
Se uma conta de serviço personalizada estiver em uso, verifique se o agente de serviço do Dataform tem os papéis de Usuário da conta de serviço (
roles/iam.serviceAccountUser) e Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) concedidos nessa conta de serviço personalizada. Essas permissões permitem que o agente de serviço do Dataform inicie execuções de fluxo de trabalho representando a conta de serviço personalizada.
Monitorar permissões de agente de serviço com o Security Command Center
Para garantir a adesão contínua ao princípio de privilégio mínimo, monitore ativamente seu projeto no Security Command Center em busca de descobertas relacionadas a contas de serviço e agentes de serviço com privilégios excessivos.
Para instruções sobre como analisar e aplicar descobertas de correção no Security Command Center, consulte Descobertas do recomendador do IAM e Como investigar descobertas de identidade no console.
Ao corrigir uma descoberta SERVICE_AGENT_GRANTED_BASIC_ROLE para um agente de serviço do Dataform, substitua o papel excessivamente permissivo por um papel predefinido que tenha as permissões mínimas necessárias, com escopo para o recurso específico. Por exemplo, conceda o papel de usuário da conta de serviço (roles/iam.serviceAccountUser) em uma conta de serviço específica.
Controlar o acesso ao Dataform com o IAM
Nesta seção, descrevemos as opções de controle de acesso do Dataform e mostramos como visualizar e conceder papéis do Dataform. O Dataform usa o Identity and Access Management (IAM) para controle de acesso. Para mais informações sobre papéis e permissões no IAM, consulte o índice de papéis e permissões do IAM.
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. |
|
Dataform Editor( Edit access to Workspaces and Repositories. |
|
Dataform Viewer( Read-only 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 Scheduler Beta( Access for scheduling workflows and releases. |
|
Code Viewer( Read-only access to all code resources. |
|
Team Folder Commenter Beta( View and comment access to a team folder and its contents. |
|
Team Folder Contributor( Edit access to a team folder and its contents. |
|
Team Folder Creator( Access to create new team folders. |
|
Team Folder Owner( Full access to a team folder and its contents. Can share the team folder and its contents. |
|
Team Folder Viewer( View access to a team folder and its contents. |
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Papéis personalizados do Dataform
Os papéis personalizados podem incluir qualquer permissão especificada por você. É possível criar papéis personalizados que incluem 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 uma conta de serviço personalizada e todas as permissões concedidas a essa conta. Isso inclui a execução de
fluxos de trabalho do Dataform
e a capacidade de gerenciar metadados no Knowledge Catalog.
Como o modo de atuação estrito é aplicado a todos os repositórios, a permissão dataform.repositories.create exige implicitamente que o usuário tenha permissões de atuação na conta de serviço personalizada para a execução de fluxos de trabalho subsequentes. Isso garante que apenas usuários com
direitos de representação explícitos possam executar código usando a identidade
da conta de serviço.
A permissão dataform.repositories.create está incluída nos seguintes
papéis do IAM:
- 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 corporativo do Colab Enterprise (
roles/aiplatform.colabEnterpriseUser) - Administrador do Dataform (
roles/dataform.admin)
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 contas de serviço personalizadas e os papéis e as permissões necessários, consulte Conceder acesso obrigatório ao Dataform.
Acesso a secrets durante a instalação do pacote
Se você configurar pacotes NPM particulares usando secrets do Secret Manager, eles poderão ser acessados por usuários com permissões para modificar o código ou acionar a compilação do código de um commit específico do Git no repositório.
Durante a instalação do pacote, acionada ao instalar pacotes manualmente
em um espaço de trabalho ou ao compilar código de um commit específico do Git, o
cliente NPM lê as credenciais do arquivo .npmrc e transmite o
token de autenticação para o registro NPM configurado. Um usuário com permissões
para modificar o arquivo .npmrc no espaço de trabalho pode definir as configurações para acessar
os secrets redirecionando as solicitações de registro para um servidor externo.
Essa instalação e a possível exposição de tokens podem ocorrer nos seguintes cenários:
Instalação do pacote do espaço de trabalho: acionada manualmente em um espaço de trabalho. Isso requer permissões de edição do espaço de trabalho, que podem ser encontradas nos papéis de Editor do Dataform (
roles/dataform.editor) ou Editor de código do Dataform (roles/dataform.codeEditor).Compilar um commitish do Git: acionado automaticamente ao criar um resultado de compilação para um commitish do Git, como uma ramificação, tag ou SHA de commit, no repositório. Esse cenário requer a permissão
dataform.compilationResults.create.
Para proteger suas credenciais, recomendamos que você faça o seguinte:
Conceda papéis com permissões de edição de repositório (como Editor de código do Dataform) ou permissões de compilação (como Leitor de código do Dataform) apenas a usuários confiáveis.
Restrinja os repositórios Git remotos aos quais o Dataform pode se conectar usando políticas da organização. Para mais informações, consulte Restringir repositórios remotos.
Limite o acesso do agente de serviço do Dataform no Secret Manager apenas aos secrets necessários.
Proibir o uso de credenciais de usuário final usando restrições de política da organização personalizadas que negam a configuração de
end_user_auth_config. Para mais informações, consulte Criar restrições personalizadas da política da organização.
Ver papéis do Dataform
No console do Google Cloud , siga estas etapas:
Acesse a página IAM e administrador > Papéis.
No campo Filtro, selecione Usado em, digite
Dataforme pressione Enter.Clique em um dos papéis listados para ver as permissões dele no painel à direita.
Por exemplo, o papel 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,
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:
No terminal, transmita a solicitação
repositories.setIamPolicyda API Dataform com uma política de acesso.Na política, vincule um usuário, grupo, domínio, agente de serviço ou conta de serviço a um papel selecionado no seguinte 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,domainouserviceAccount.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 visualizar a lista completa de repositórios do Dataform por meio de um papel 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 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/v1/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:
No terminal, transmita a solicitação
repositories.setIamPolicyda API Dataform com uma política de acesso.Na política, vincule o principal
allAuthenticatedUsersa um papel selecionado no seguinte formato:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }Substitua
ROLEpor 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 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/v1/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, 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 os usuários nos serviços do Google Cloud 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, é possível 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:
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
.sqlxda 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írgulas que você quer conceder.
RESOURCE_TYPE:
TABLEouVIEW.USER_LIST: a lista separada por vírgulas de usuários a quem o papel é concedido.
Para ver uma lista de formatos válidos, consulte user_list.
Opcional: clique em Formatar.
Execute a tabela ou visualização.
Se você concedeu acesso em uma tabela incremental, remova a instrução
GRANTdo arquivo de definição da tabela após a primeira execução.
O exemplo de código a seguir mostra o papel de Leitor do BigQuery concedido em uma tabela a um usuário:
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 papéis 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 papéis do BigQuery de uma tabela ou visualização selecionada, siga estas etapas:
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
.sqlxda tabela ou visualização em 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: o papel do BigQuery ou a lista de papéis do BigQuery separados por vírgulas que você quer revogar.
- RESOURCE_TYPE:
TABLEouVIEW. - 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
GRANTno arquivo, substitua a instruçãoGRANTpor uma instruçãoREVOKE.Opcional: clique em Formatar.
Execute a tabela ou visualização.
Se você revogou o acesso a uma tabela incremental, remova a instrução
REVOKEdo arquivo de definição da tabela após a primeira execução.
O exemplo de código a seguir mostra o papel de Leitor do BigQuery revogado 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 as instruções DCL
GRANT e
REVOKE.
Para gerenciar o acesso à tabela do BigQuery em um único arquivo type: "operations",
siga estas etapas:
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 menu
Mais.Selecione Criar arquivo.
No campo Adicionar um caminho de arquivo, insira o nome do arquivo seguido por
.sqlxdepois dedefinitions/. Por exemplo,definitions/table-access.sqlx.Os nomes de arquivos 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írgulas que você quer conceder ou revogar.
- RESOURCE_TYPE:
TABLEouVIEW. - 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 as instruções
GRANTeREVOKEconforme necessário.Para revogar o acesso concedido em uma instrução
GRANTno arquivo, substitua a instruçãoGRANTpor uma instruçãoREVOKE.Remover a instrução
GRANTsem adicionar a instruçãoREVOKEnã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
GRANTouREVOKEdo 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
Usar a API Config para personalizar o comportamento do IAM
Use o
método projects.locations.updateConfig da API Dataform
para personalizar o comportamento do IAM e melhorar a segurança.
Conceder um papel específico na criação de recursos
Quando você define o campo setAuthenticatedUserAdmin como true no
recurso projects.locations.repositories,
o Dataform concede automaticamente ao usuário que cria o
repositório o
papel de administrador do Dataform
(roles/dataform.admin) nesse repositório. Além disso,
o Dataform concede a qualquer usuário que criar um espaço de trabalho nesse
repositório o papel de Administrador do Dataform no novo espaço de trabalho.
É possível usar o campo creator_role
(pré-lançamento)
no
método projects.locations.updateConfig
para modificar esse comportamento. Se setAuthenticatedUserAdmin for true e você
configurar o campo creator_role com um papel personalizado, o Dataform
vai conceder o papel personalizado em vez do papel padrão dataform.admin.
Implementar permissões de agendamento avançadas
Para exigir que os usuários tenham permissões explícitas para programar
fluxos de trabalho do Dataform, defina o campo enable_project_checks_for_scheduling como true no
método projects.locations.updateConfig.
Quando você ativa essas verificações para programação, o usuário precisa das seguintes permissões:
Para criar uma configuração de fluxo de trabalho:
- A permissão
dataform.workflowConfigs.createno projeto, concedida pelo papel do Cloud Scheduler (roles/dataform.codeScheduler). - A permissão
dataform.repositories.scheduleWorkflowno repositório, concedida pelo papel de administrador do Dataform (roles/dataform.admin).
- A permissão
Para criar uma configuração de versão:
- A permissão
dataform.releaseConfigs.createno projeto, concedida pelo papel de programador de código (roles/dataform.codeScheduler). - A permissão
dataform.repositories.scheduleReleaseno repositório, concedida pelo papel de administrador do Dataform (roles/dataform.admin).
- A permissão
Ativar espaços de trabalho particulares
Para restringir o acesso ao espaço de trabalho do Dataform para que apenas o criador
possa ler e gravar código nesse espaço, defina o
campo enable_private_workspace como true no
método projects.locations.updateConfig.
Essa restrição também se aplica à visualização de artefatos gerados, como SQL compilado, erros de compilação e registros de execução para as compilações ou invocações de fluxo de trabalho do espaço de trabalho.
Essa configuração substitui os papéis padrão do IAM que concedem acesso ao espaço de trabalho a outros usuários do repositório.
A seguir
- Para saber mais sobre o IAM, consulte 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 do BigQuery, consulte Controle de acesso com o IAM.
- Para saber como conceder permissões granulares a conjuntos de dados do BigQuery, consulte Como controlar o acesso a conjuntos de dados.