Exemplo de utilização: controlo de acesso para um cluster do Dataproc noutro projeto

Esta página descreve a gestão do controlo de acesso quando implementa e executa um pipeline que usa clusters do Dataproc noutro Google Cloud projeto.

Cenário

Por predefinição, quando uma instância do Cloud Data Fusion é iniciada num Google Cloud projeto, implementa e executa pipelines usando clusters do Dataproc no mesmo projeto. No entanto, a sua organização pode exigir que use clusters noutro projeto. Para este exemplo de utilização, tem de gerir o acesso entre os projetos. A página seguinte descreve como pode alterar as configurações de base (predefinição) e aplicar os controlos de acesso adequados.

Antes de começar

Para compreender as soluções neste exemplo de utilização, precisa do seguinte contexto:

Pressupostos e âmbito

Este exemplo de utilização tem os seguintes requisitos:

  • Uma instância privada do Cloud Data Fusion. Por motivos de segurança, uma organização pode exigir que use este tipo de instância.
  • Uma origem e um destino do BigQuery.
  • Controlo de acesso com IAM, não controlo de acesso baseado em funções (CABF).

Solução

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

Arquitetura

Os diagramas seguintes comparam a arquitetura do projeto para criar uma instância do Cloud Data Fusion e executar pipelines quando usa clusters no mesmo projeto (base) e num projeto diferente através da VPC do projeto de inquilino.

Arquitetura de base

Este diagrama mostra a arquitetura de base dos projetos:

Arquitetura de inquilino, cliente e projeto do Dataproc no Cloud Data Fusion.

Para a configuração de base, cria uma instância privada do Cloud Data Fusion e executa um pipeline sem personalização adicional:

  • Usar um dos perfis de computação integrados
  • A origem e o destino estão no mesmo projeto que a instância
  • Não foram concedidas funções adicionais a nenhuma das contas de serviço

Para mais informações acerca dos projetos de inquilinos e clientes, consulte a secção Redes.

Arquitetura de exemplos de utilização

Este diagrama mostra a arquitetura do projeto quando usa clusters noutro projeto:

Arquitetura de inquilino, cliente e projeto do Dataproc no Cloud Data Fusion.

Configurações

As secções seguintes comparam as configurações de base com as configurações específicas do exemplo de utilização para usar clusters do Dataproc num projeto diferente através da VPC do projeto de inquilino predefinido.

Nas descrições de exemplos de utilização seguintes, o projeto do 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 inquilino

Base Exemplo de utilização
No diagrama de arquitetura de base anterior, o projeto de inquilino contém os seguintes componentes:
  • A VPC predefinida, que é criada automaticamente.
  • A implementação física da instância do Cloud Data Fusion.
Não é necessária nenhuma configuração adicional para este exemplo de utilização.

Projeto de cliente

Base Exemplo de utilização
O Google Cloud projeto é onde implementa e executa pipelines. Por predefinição, os clusters do Dataproc são iniciados neste projeto quando executa os pipelines. Neste exemplo de utilização, gere dois projetos. Nesta página, o projeto do cliente refere-se ao local onde a instância do Cloud Data Fusion é executada.
O projeto do Dataproc refere-se ao local onde os clusters do Dataproc são iniciados.

VPC do cliente

Base Exemplo de utilização

Do seu ponto de vista (o do cliente), a VPC do cliente é onde o Cloud Data Fusion está logicamente situado.


Ponto principal:
pode encontrar os detalhes da VPC do cliente na página de redes VPC do seu projeto.

Aceda a redes de VPC

Não é necessária nenhuma configuração adicional para este exemplo de utilização.

Sub-rede do Cloud Data Fusion

Base Exemplo de utilização

Do seu ponto de vista (do cliente), esta sub-rede é onde o Cloud Data Fusion está logicamente situado.


Principal conclusão:
a região desta sub-rede é a mesma que a localização da instância do Cloud Data Fusion no projeto do inquilino.
Não é necessária nenhuma configuração adicional para este exemplo de utilização.

Sub-rede do Dataproc

Base Exemplo de utilização

A sub-rede onde os clusters do Dataproc são iniciados quando executa um pipeline.


Principais pontos a reter:
  • Para esta configuração de base, 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 existir apenas uma sub-rede nesta região, as sub-redes são iguais.
  • A sub-rede do Dataproc tem de ter o acesso privado à Google.

Esta é uma nova sub-rede onde os clusters do Dataproc são iniciados quando executa um pipeline.


Principais pontos a reter:
  • Para esta nova sub-rede, defina o acesso privado à Google como Ativado.
  • A sub-rede do Dataproc não tem de estar na mesma localização que a instância do Cloud Data Fusion.

Ganhos e despesas

Base Exemplo de utilização

As origens de onde os dados são extraídos e os destinos onde os dados são carregados, como origens e destinos do BigQuery.


Principais pontos a reter:
  • As tarefas que obtêm e carregam dados têm de ser processadas na mesma localização que o conjunto de dados. Caso contrário, ocorre um erro.
As configurações de controlo de acesso específicas do exemplo de utilização nesta página destinam-se a origens e destinos do BigQuery.

Cloud Storage

Base Exemplo de utilização

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


Principais pontos a reter:
  • Pode especificar este contentor através da interface Web do Cloud Data Fusion nas definições do perfil de computação para clusters efémeros.
  • Para pipelines em lote e em tempo real, ou tarefas de replicação: se não especificar um contentor no perfil de computação, o Cloud Data Fusion cria um contentor no mesmo projeto que a instância para este fim.
  • Mesmo para clusters estáticos do Dataproc, nesta configuração de base, o contentor é criado pelo Cloud Data Fusion e difere dos contentores de preparação e temporários do Dataproc.
  • O agente do serviço da API Cloud Data Fusion tem autorizações incorporadas para criar este contentor no projeto que contém a instância do Cloud Data Fusion.
Não é necessária nenhuma configuração adicional para este exemplo de utilização.

Recipientes temporários usados pela origem e pelo destino

Base Exemplo de utilização

Os contentores temporários criados por plug-ins para as suas origens e destinos, como as tarefas de carregamento iniciadas pelo plug-in BigQuery Sink.


Principais pontos a reter:
  • Pode definir estes contentores quando configurar as propriedades do plug-in de origem e destino.
  • Se não definir um contentor, é criado um no mesmo projeto onde o Dataproc é executado.
  • Se o conjunto de dados for multirregional, o contentor é criado no mesmo âmbito.
  • Se definir um contentor na configuração do plug-in, a região do contentor tem de corresponder à região do conjunto de dados.
  • Se não definir um contentor nas configurações do plug-in, o contentor criado para si é eliminado quando o pipeline termina.
Para este exemplo de utilização, o contentor pode ser criado em qualquer projeto.

Recipientes que são origens ou destinos de dados para plug-ins

Base Exemplo de utilização
Contentores de clientes, que especifica nas configurações dos plug-ins, como o plug-in do Cloud Storage e o plug-in FTP para Cloud Storage. Não é necessária nenhuma configuração adicional para este exemplo de utilização.

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

Base Exemplo de utilização

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


Principais pontos a reter:
  • A função contém autorizações para serviços no mesmo projeto que a instância, como o BigQuery e o Dataproc. Para todos os serviços suportados, consulte os detalhes da função.
  • A conta de serviço do Cloud Data Fusion faz o seguinte:
    • Comunicação do plano de dados (conceção e execução do pipeline) com outros serviços (por exemplo, comunicação com o Cloud Storage, o BigQuery e o Datastream no momento da conceção).
    • Aprovisiona clusters do Dataproc.
  • Se estiver a replicar a partir de uma origem Oracle, esta conta de serviço também tem de ter as funções de administrador do Datastream e administrador de armazenamento no projeto onde a tarefa ocorre. Esta página não aborda um exemplo de utilização de replicação.

Para este exemplo de utilização, conceda a função de agente de serviço da API Cloud Data Fusion à conta de serviço no projeto do Dataproc. Em seguida, conceda as seguintes funções nesse projeto:

  • Função de utilizador da rede de computação
  • Função Editor do Dataproc

IAM: conta de serviço do Dataproc

Base Exemplo de utilização

A conta de serviço usada para executar o pipeline como uma tarefa no cluster do Dataproc. Por predefinição, é a conta de serviço do Compute Engine.


Opcional: na configuração de base, pode alterar a conta de serviço predefinida para outra conta de serviço do mesmo projeto. Conceda as seguintes funções do IAM à nova conta de serviço:

  • A função Executor do Cloud Data Fusion. Esta função permite que o Dataproc comunique com a API Cloud Data Fusion.
  • A função de trabalhador do Dataproc. Esta função permite que as tarefas sejam executadas em clusters do Dataproc.
Principais pontos a reter:
  • A conta de serviço do agente da API para o novo serviço tem de ter a função de utilizador da conta de serviço na conta de serviço do Dataproc para que o agente da API de serviço a possa usar para iniciar clusters do Dataproc.

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


Conceda as seguintes funções à conta de serviço do Compute Engine predefinida no projeto do Dataproc.

  • A função de trabalhador do Dataproc
  • A função de administrador de armazenamento (ou, no mínimo, a autorização `storage.buckets.create`) para permitir que o Dataproc crie contentores temporários para o BigQuery.
  • Função de utilizador de tarefas do BigQuery. Esta função permite que o Dataproc crie tarefas de carregamento. Por predefinição, as tarefas são criadas no projeto do Dataproc.
  • Função de editor do conjunto de dados do BigQuery. Esta função permite que o Dataproc crie conjuntos de dados durante o carregamento de dados.

Conceda a função de utilizador da conta de serviço à conta de serviço do Cloud Data Fusion na conta de serviço do Compute Engine predefinida do projeto do Dataproc. Esta ação tem de ser realizada no projeto do Dataproc.

Adicione a conta de serviço predefinida do Compute Engine do projeto do Dataproc ao projeto do Cloud Data Fusion. Atribua também as seguintes funções:

  • A função Leitor de objetos de armazenamento para obter artefactos relacionados com tarefas de pipeline do contentor de consumo do Cloud Data Fusion.
  • Função de executor do Cloud Data Fusion, para que o cluster do Dataproc possa comunicar com o Cloud Data Fusion enquanto está em execução.

APIs

Base Exemplo de utilização
Quando ativa a API Cloud Data Fusion, as seguintes APIs também são ativadas: Para mais informações sobre estas APIs, aceda à página APIs e serviços no seu projeto.

Aceda a APIs e serviços

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

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

  • Agente de serviço das APIs Google
  • Agente de serviço do Compute Engine
  • Agente do serviço do Kubernetes Engine
  • Agente de serviço do Google Container Registry
  • Agente de serviço do Google Cloud Dataproc
  • Agente de serviço do Cloud KMS
  • Conta de serviço do Cloud Pub/Sub
Para este exemplo de utilização, ative as seguintes APIs no projeto que contém o projeto do Dataproc:
  • API Compute Engine
  • API Dataproc (é provável que já esteja ativada neste projeto). A API Dataproc Control é ativada automaticamente quando ativa a API Dataproc.
  • API Resource Manager.

Chaves de encriptação

Base Exemplo de utilização

Na configuração base, as chaves de encriptação podem ser geridas pela Google ou CMEK


Principais pontos a reter:

Se usar as CMEK, a configuração de base requer o seguinte:

  • A chave tem de ser regional e criada na mesma região que a instância do Cloud Data Fusion.
  • Conceda a função de encriptar/desencriptar do CryptoKey do Cloud KMS às seguintes contas de serviço ao nível da chave (não na página do IAM da Google Cloud consola) no projeto onde é 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 predefiniçã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)

Consoante os serviços usados no seu pipeline, como o BigQuery ou o Cloud Storage, as contas de serviço também têm de receber a função de encriptador/desencriptador de 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 não usar as CMEK, não são necessárias alterações adicionais para este exemplo de utilização.

Se usar a CMEK, a função de encriptador/desencriptador de CryptoKey do Cloud KMS tem de ser fornecida à seguinte conta de serviço ao nível da chave no projeto onde é criada:

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

Consoante os serviços usados no seu pipeline, como o BigQuery ou o Cloud Storage, também tem de conceder a função de encriptar/desencriptar do CryptoKey do Cloud KMS a outras contas de serviço ao nível da chave. Por 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 fazer estas configurações específicas do exemplo de utilização, o pipeline de dados pode começar a ser executado em clusters noutro projeto.

O que se segue?