Caso de uso: controle de acesso para um cluster do Dataproc em outro projeto

Nesta página, descrevemos como gerenciar o controle de acesso quando você implanta e executa um pipeline que usa clusters do Dataproc em outro projeto do Google Cloud.

Cenário

Por padrão, quando uma instância do Cloud Data Fusion é iniciada em um projeto do Google Cloud, ela implanta e executa pipelines usando clusters do Dataproc no mesmo projeto. No entanto, sua organização pode exigir que você use clusters em outro projeto. Para este caso de uso, é preciso gerenciar o acesso entre os projetos. A página a seguir descreve como alterar as configurações de valor de referência (padrão) e aplicar os controles de acesso adequados.

Antes de começar

Para entender as soluções neste caso de uso, você precisa do seguinte contexto:

Suposições e escopo

Esse caso de uso tem os seguintes requisitos:

  • uma instância privada do Cloud Data Fusion Por motivos de segurança, uma organização pode exigir que você use esse tipo de instância.
  • Uma origem e um coletor do BigQuery.
  • Controle de acesso com o IAM, não com controle de acesso baseado em papéis (RBAC, na sigla em inglês).

Solução

Esta solução compara a arquitetura e a configuração específicas do valor de referência e do caso de uso.

Arquitetura

Os diagramas a seguir comparam a arquitetura do projeto para criar uma instância do Cloud Data Fusion e executar pipelines quando você usa clusters no mesmo projeto (linha de base) e em um projeto diferente por meio da VPC do projeto de locatário.

Arquitetura de referência

Este diagrama mostra a arquitetura básica dos projetos:

Arquitetura de projetos de locatário, cliente e Dataproc no Cloud Data Fusion.

Para a configuração do valor de referência, crie uma instância privada do Cloud Data Fusion e execute um pipeline sem personalização adicional:

  • usar um dos perfis de computação integrados;
  • A origem e o coletor estão no mesmo projeto que a instância
  • Nenhum papel adicional foi concedido a nenhuma das contas de serviço

Para mais informações sobre locatários e projetos do cliente, consulte Rede.

Arquitetura de caso de uso

Este diagrama mostra a arquitetura do projeto quando você usa clusters em outro projeto:

Arquitetura de projetos de locatário, cliente e Dataproc no Cloud Data Fusion.

Configurações

As seções a seguir comparam as configurações de referência com as configurações específicas do caso de uso para usar clusters do Dataproc em um projeto diferente por meio da VPC padrão de projeto de locatário.

Nas descrições de casos de uso a seguir, o projeto de cliente é onde a instância do Cloud Data Fusion é executada, e o projeto do Dataproc é onde o cluster do Dataproc é iniciado.

VPC e instância do projeto de locatário

Capacidade de referência Caso de uso
No diagrama de arquitetura de referência anterior, o projeto de locatário contém os seguintes componentes:
  • A VPC padrão, que é criada automaticamente.
  • A implantação física da instância do Cloud Data Fusion.
Nenhuma configuração adicional é necessária para este caso de uso.

Projeto do cliente

Capacidade de referência Caso de uso
O projeto do Google Cloud é onde você implanta e executa pipelines. Por padrão, os clusters do Dataproc são iniciados nesse projeto quando você executa os pipelines. Nesse caso de uso, você gerencia dois projetos. Nesta página, o projeto do cliente se refere ao local onde a instância do Cloud Data Fusion é executada.
O projeto do Dataproc se refere ao local onde os clusters do Dataproc são iniciados.

VPC do cliente

Capacidade de referência Caso de uso

Do ponto de vista do cliente, a VPC do cliente é onde o Cloud Data Fusion está logicamente localizado.


Aprendizado importante:
é possível encontrar os detalhes da VPC do cliente na página "Redes VPC" do projeto.

Acessar redes VPC

Nenhuma configuração adicional é necessária para este caso de uso.

Sub-rede do Cloud Data Fusion

Capacidade de referência Caso de uso

Do ponto de vista do cliente, essa sub-rede é onde o Cloud Data Fusion está logicamente localizado.


Importante:
a região dessa sub-rede é igual ao local da instância do Cloud Data Fusion no projeto de locatário.
Nenhuma configuração adicional é necessária para este caso de uso.

Sub-rede do Dataproc

Capacidade de referência Caso de uso

A sub-rede em que os clusters do Dataproc são iniciados quando você executa um pipeline.


Aprendizados importantes:
  • Para essa configuração de valor de referência, o Dataproc é executado na mesma sub-rede que a instância do Cloud Data Fusion.
  • O Cloud Data Fusion localiza uma sub-rede na mesma região que a instância e a sub-rede do Cloud Data Fusion. Se houver apenas uma sub-rede nessa região, as sub-redes serão as mesmas.
  • A sub-rede do Dataproc precisa ter Acesso privado do Google.

Essa é uma nova sub-rede em que os clusters do Dataproc são iniciados quando você executa um pipeline.


Aprendizados importantes:
  • Para essa nova sub-rede, defina o Acesso privado do Google como Ativado.
  • A sub-rede do Dataproc não precisa estar no mesmo local que a instância do Cloud Data Fusion.

Origens e coletores

Capacidade de referência Caso de uso

As origens em que os dados são extraídos e os coletores em que os dados são carregados, como fontes e coletores do BigQuery.


Aprendizado importante:
  • Os jobs que buscam e carregam dados precisam ser processados no mesmo local que o conjunto de dados. Caso contrário, isso resultará em um erro.
As configurações de controle de acesso específicas do caso de uso nesta página são destinadas a origens e coletores do BigQuery.

Cloud Storage

Capacidade de referência Caso de uso

O bucket de armazenamento no projeto do cliente que ajuda a transferir arquivos entre o Cloud Data Fusion e o Dataproc.


Aprendizados importantes:
  • É possível especificar esse bucket por meio da interface da Web do Cloud Data Fusion nas configurações do perfil do Compute para clusters temporários.
  • Para pipelines em lote e em tempo real ou jobs de replicação: se você não especificar um bucket no perfil de computação, o Cloud Data Fusion criará um bucket no mesmo projeto da instância para essa finalidade.
  • Mesmo para clusters estáticos do Dataproc, nesta configuração de referência, o bucket é criado pelo Cloud Data Fusion e é diferente dos buckets temporários e de preparo do Dataproc.
  • O agente de serviço da API do Cloud Data Fusion tem permissões integradas para criar esse bucket no projeto que contém a instância do Cloud Data Fusion.
Nenhuma configuração adicional é necessária para este caso de uso.

Buckets temporários usados pela origem e pelo coletor

Capacidade de referência Caso de uso

Os buckets temporários criados por plug-ins para suas origens e coletores, como os jobs de carregamento iniciados pelo plug-in do coletor do BigQuery.


Aprendizados importantes:
  • É possível definir esses buckets ao configurar as propriedades do plug-in de origem e coletor.
  • Se você não definir um bucket, ele será criado no mesmo projeto em que o Dataproc é executado.
  • Se o conjunto de dados for multirregional, o bucket será criado no mesmo escopo.
  • Se você definir um bucket na configuração do plug-in, a região do bucket precisará corresponder à região do conjunto de dados.
  • Se você não definir um bucket nas configurações do plug-in, aquele criado para você será excluído quando o pipeline for concluído.
Para este caso de uso, o bucket pode ser criado em qualquer projeto.

Buckets que são fontes ou coletores de dados para plug-ins

Capacidade de referência Caso de uso
Buckets do cliente, que você especifica nas configurações dos plug-ins, como o plug-in do Cloud Storage e o FTP para o plug-in do Cloud Storage. Nenhuma configuração adicional é necessária para este caso de uso.

IAM: agente de serviço da API Cloud Data Fusion

Capacidade de referência Caso de uso

Quando a API Cloud Data Fusion está ativada, o papel de Agente de serviço da API Cloud Data Fusion (roles/datafusion.serviceAgent) é concedido automaticamente à conta de serviço do Cloud Data Fusion, o agente de serviço principal.


Aprendizados importantes:
  • O papel contém permissões para serviços no mesmo projeto da instância, como BigQuery e Dataproc. Para todos os serviços compatíveis, consulte os detalhes dos papéis.
  • A conta de serviço do Cloud Data Fusion faz o seguinte:
    • Comunicação do plano de dados (projeto e execução do pipeline) com outros serviços (por exemplo, comunicação com o Cloud Storage, o BigQuery e o Datastream no momento do projeto).
    • Provisiona clusters do Dataproc.
  • Se você estiver replicando de uma origem Oracle, essa conta de serviço também precisará receber os papéis de Administrador do Datastream e Administrador de armazenamento no projeto em que o job ocorre. Nesta página, não abordamos um caso de uso de replicação.

Para este caso de uso, conceda o papel de Agente de serviço da API Cloud Data Fusion à conta de serviço no projeto do Dataproc. Em seguida, conceda os seguintes papéis nesse projeto:

  • Papel Usuário de rede do Compute
  • Papel Editor do Dataproc

IAM: conta de serviço do Dataproc

Capacidade de referência Caso de uso

A conta de serviço usada para executar o pipeline como um job no cluster do Dataproc. Por padrão, é a conta de serviço do Compute Engine.


Opcional: na configuração de referência, é possível alterar a conta de serviço padrão para outra conta de serviço do mesmo projeto. Conceda os seguintes papéis do IAM à nova conta de serviço:

  • Papel de executor do Cloud Data Fusion. Esse papel permite que o Dataproc se comunique com a API Cloud Data Fusion.
  • Papel de worker do Dataproc. Esse papel permite que os jobs sejam executados em clusters do Dataproc.
Aprendizados importantes:
  • A conta de serviço do agente de API para o novo serviço precisa receber o papel de usuário da conta de serviço na conta de serviço do Dataproc para que o agente da API de serviço possa usá-la para iniciar clusters do Dataproc.

Este exemplo de caso de uso pressupõe que você usa a conta de serviço padrão do Compute Engine (PROJECT_NUMBER-compute@developer.gserviceaccount.com) do projeto Dataproc.


Conceda os papéis a seguir à conta de serviço padrão do Compute Engine no projeto do Dataproc.

  • Papel de worker do Dataproc
  • o papel de Administrador do Storage (ou, no mínimo, a permissão "storage.buckets.create") para permitir que o Dataproc crie buckets temporários para o BigQuery.
  • Papel "Usuário de jobs do BigQuery". Esse papel permite que o Dataproc crie jobs de carga. Por padrão, os jobs são criados no projeto do Dataproc.
  • papel de Editor de conjunto de dados do BigQuery. Esse papel permite que o Dataproc crie conjuntos de dados ao carregar dados.

Conceda o papel de usuário à conta de serviço do Cloud Data Fusion na conta de serviço padrão do Compute Engine do projeto do Dataproc. Essa ação precisa ser realizada no projeto do Dataproc.

Adicione a conta de serviço padrão do Compute Engine do projeto do Dataproc ao projeto do Cloud Data Fusion. Conceda também os seguintes papéis:

  • O papel Leitor de objetos do Storage para recuperar artefatos relacionados ao job do pipeline do bucket do consumidor do Cloud Data Fusion.
  • Runner do Cloud Data Fusion. Assim, o cluster do Dataproc poderá se comunicar com o Cloud Data Fusion enquanto estiver em execução.

APIs

Capacidade de referência Caso de uso
Quando você ativa a API do Cloud Data Fusion, as seguintes APIs também são ativadas. Para mais informações sobre essas APIs, acesse a página APIs e serviços no seu projeto.

Acessar APIs e serviços

  • API Cloud Scaling
  • API Dataproc
  • API Cloud Dataproc Control
  • Cloud DNS API
  • API Cloud OS Login
  • API Pub/Sub
  • API Compute Engine
  • API Container Filesystem
  • API Container Registry
  • API Service Account Credentials
  • API Identity and Access Management
  • API Google Kubernetes Engine

Quando você ativa a API do Cloud Data Fusion, as seguintes contas de serviço são adicionadas automaticamente ao projeto:

  • Agente de serviço de APIs do Google
  • Agente de serviço do Compute Engine
  • Agente de serviços do Kubernetes Engine
  • Agente de serviço do Google Container Registry
  • Agente de serviços do Google Cloud Dataproc
  • Agente de serviço do Cloud KMS
  • Conta de serviços do Cloud Pub/Sub
Para este caso de uso, ative as seguintes APIs no projeto que contém o projeto do Dataproc:
  • API Compute Engine
  • API Dataproc, que provavelmente já está ativada neste projeto. A API Dataproc Control é ativada automaticamente quando você ativa a API Dataproc.
  • a API Resource Manager.

Chaves de criptografia

Capacidade de referência Caso de uso

Na configuração do valor de referência, as chaves de criptografia podem ser gerenciadas pelo Google ou CMEK


Aprendizados importantes:

Se você usa a CMEK, sua configuração de referência vai exigir o seguinte:

  • A chave precisa ser regional, criada na mesma região da instância do Cloud Data Fusion.
  • Conceda o papel criptografador/descriptografador de CryptoKey do Cloud KMS às seguintes contas de serviço no nível da chave (não na página do IAM do console do Google Cloud) no projeto em que ela foi criada:
    • Conta de serviço da API Cloud Data Fusion
    • Conta de serviço do Dataproc, que é o agente de serviço do Compute Engine (service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com) por padrão
    • Agente de serviço do Google Cloud Dataproc (service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com)
    • Agente de serviço do Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Dependendo dos serviços usados no pipeline, como o BigQuery ou o Cloud Storage, as contas de serviço também precisam receber o papel para criptografar/descriptografar o CryptoKey do Cloud KMS:

  • A conta de serviço do BigQuery (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • A conta de serviço do Pub/Sub (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • A conta de serviço do Spanner (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

Se você não usar a CMEK, nenhuma outra alteração será necessária neste caso de uso.

Se você usar a CMEK, o papel criptografador/descriptografador de CryptoKey do Cloud KMS precisará ser fornecido à seguinte conta de serviço no nível da chave no projeto em que ela foi criada:

  • Agente de serviço do Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

Dependendo dos serviços usados no pipeline, como o BigQuery ou o Cloud Storage, outras contas de serviço também precisam receber o papel criptografador/descriptografador de CryptoKey do Cloud KMS no nível da chave. Exemplo:

  • A conta de serviço do BigQuery (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • A conta de serviço do Pub/Sub (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • A conta de serviço do Spanner (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

Depois de definir essas configurações específicas do caso de uso, o pipeline de dados pode começar a ser executado em clusters em outro projeto.

A seguir