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
- 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. - 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.
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 como. É preciso configurar as permissões necessárias de atuação em nome de todas as contas de serviço associadas aos recursos do Dataform.
Quando você cria seu primeiro repositório do Dataform, o Dataform 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.iam.gserviceaccount.com
Substitua PROJECT_NUMBER pelo ID numérico do seu projeto do Google Cloud . Encontre o ID do projeto Google Cloud no painel do consoleGoogle 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 (prévia) usadas para autenticar 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. Esses projetos geralmente incluem o que hospeda seu repositório do Dataform. - Leitor de dados do BigQuery
(
roles/bigquery.dataViewer) em projetos que precisam de acesso somente leitura do Dataform. - Usuário de jobs do BigQuery
(
roles/bigquery.jobUser) no projeto que hospeda seu 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 estrito de simulação 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ório e execuções automáticas de fluxo de trabalho, conceda ao agente de serviço do Dataform a permissão iam.serviceAccounts.actAs na conta de serviço efetiva.
Considerações sobre segurança
Conceder os 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 (prévia) 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 ou ao Secret Manager no projeto a que pertence, independente dos 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 BigQuery ou Secret Manager, 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
dataform.repositories.createdo IAM pode 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, faça auditorias regulares das vinculações de função do agente de serviço do Dataform. Para instruções detalhadas de monitoramento, consulte Monitorar permissões do 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 evitar que os usuários realizem ações usando 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, anexe as credenciais de usuário da sua própria Conta do Google à configuração de fluxo de trabalho ou mude a configuração 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 referenciam a configuração de lançamento com 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 lançamento com uma programação.
Conceder os papéis necessários do BigQuery
Para conceder os papéis necessários do IAM do BigQuery ao agente de serviço do Dataform, uma conta de serviço personalizada que você quer usar no Dataform ou uma Conta do Google de um usuário que você quer usar para autenticar no Dataform (Prévia), 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 (Prévia).
Na lista Selecionar um papel, escolha 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 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 a ela. Isso permite que o Dataform execute seus fluxos de trabalho usando as permissões definidas na sua conta de serviço personalizada em vez da conta do agente de serviço.
Para conceder esse acesso, atribua o papel
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 simule 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 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 Google Cloud , acesse IAM > Contas de serviço.
Selecione o projeto 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 Conceder 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.iam.gserviceaccount.comNa 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 está pronta para ser configurada no seu repositório do Dataform.
Auditar configurações de conta de serviço
Esta seção mostra como auditar seus recursos do Dataform para garantir o uso adequado da conta de serviço e 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 opere.
Ao usar uma conta de serviço personalizada para um repositório ou
configuração de fluxo de trabalho do Dataform, verifique se o
agente de serviço do Dataform tem o
papel 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 Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) na conta de serviço efetiva.
Verificar as contas de serviço do repositório
Primeiro, identifique os recursos do dataform.Repository que estão no escopo do
agendamento e da execução do Dataform. Em seguida, verifique as configurações da conta de serviço para esses 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 Usuário da conta de serviço (
roles/iam.serviceAccountUser) e Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) nessa conta personalizada.
Verificar as contas de serviço de configuração do fluxo de trabalho
Usar 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 vai herdar a conta de serviço do repositório principal. Verifique a configuração do repositório principal para encontrar a conta de serviço efetiva.
- 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 efetiva 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 personalizada. Com essas permissões, o agente de serviço do Dataform inicia execuções de fluxo de trabalho representando a conta de serviço personalizada.
Monitorar permissões do 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 para encontrar 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 Investigar descobertas de identidade no console.
Ao corrigir uma descoberta de SERVICE_AGENT_GRANTED_BASIC_ROLE para um agente de serviço do Dataform, substitua o papel excessivamente permissivo por um papel predefinido com as permissões mínimas necessárias, no escopo do 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
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 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 Read-only access to 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. |
|