Configuração de rede do cluster do Dataproc

Nesta página, explicamos os requisitos e as opções de configuração de rede do cluster do Dataproc.

Requisitos de conectividade do Dataproc

Seu cluster do Dataproc precisa estar em uma rede VPC que atenda aos requisitos de roteamento e firewall para acessar com segurança as APIs do Google e outros recursos.

Requisitos de rota

O agente do Dataproc em execução em VMs de cluster precisa de uma rota para a Internet para acessar a API de controle do Dataproc e receber jobs e status de relatório. Quando criadas, as redes VPC contêm uma rota padrão gerada pelo sistema para a Internet. Não é recomendável excluir a rota padrão para a Internet. Em vez disso, use firewalls para controlar o acesso à rede. Os clusters somente para IPs internos também exigem essa rota padrão para a Internet para acessar as APIs de controle do Dataproc e outros serviços do Google, como o Cloud Storage, mas o tráfego deles não sai dos data centers do Google.

Requisitos de firewall

As máquinas virtuais (VMs) do cluster do Dataproc precisam ser capazes de se comunicar usando os protocolos ICMP, TCP (todas as portas) e UDP (todas as portas).

A regra de firewall da rede VPC default default-allow-internal atende aos requisitos de conectividade do cluster do Dataproc e permite a entrada do intervalo de origem 10.128.0.0/9 de todas VMs na rede VPC da seguinte maneira:

Regra Rede Direção Prioridade Intervalo de origem Protocolos:portas
default-allow-internal default entrada 65534 10.128.0.0/9 tcp:0-65535,udp:0-65535,icmp
  • Se você excluir a regra de firewall default-allow-internal, o tráfego de entrada na rede default será bloqueado pela regra implícita de negação de entrada.

  • Se você excluir a regra de firewall default-allow-internal ou não usar a rede VPC default, será necessário criar sua própria regra que atenda aos requisitos de conectividade do Dataproc e aplicá-la à rede VPC do cluster.

Prática recomendada:crie uma regra de firewall de entrada para a rede VPC do cluster que permita a conectividade de entrada apenas entre as VMs do cluster usando um intervalo de IP de origem ou identificando as VMs do cluster por tag de rede ou conta de serviço.

Criar uma regra de firewall de entrada

Se você ou o administrador de rede ou de segurança criarem uma regra de firewall de entrada para aplicar a uma rede VPC do cluster do Dataproc, ela precisará ter as seguintes características:

  • O parâmetro sources especifica as origens dos pacotes. Todas as VMs do cluster do Dataproc precisam se comunicar entre si. É possível identificar as VMs no cluster por intervalo de endereços IP, tags de origem ou contas de serviço associadas às VMs.

  • O destino da regra precisa identificar as VMs do cluster. O destino pode ser todas as VMs na rede VPC ou é possível identificar VMs por intervalo de endereço IP, tag de destino ou conta de serviço de destino.

  • A regra precisa incluir os seguintes protocolos e portas:

    • TCP (todas as portas, de 0 a 65535)
    • UDP (todas as portas, de 0 a 65535)
    • ICMP

    O Dataproc usa serviços executados em várias portas. Especificar todas as portas ajuda a executar os serviços.

Diagnosticar regras de firewall da VPC

Para auditar pacotes não processados por regras de firewall de prioridade mais alta, é possível criar duas regras de firewall de negação de baixa prioridade (65534). Ao contrário das regras de firewall implícitas, é possível ativar a geração de registros de regras de firewall em cada uma destas regras de baixa prioridade:

  1. Uma regra de negação de entrada (fontes 0.0.0.0/0, todos os protocolos, todos os destinos na rede VPC)

  2. Uma regra de negação de saída (destinos 0.0.0.0/0, todos os protocolos, todos os destinos na rede VPC)

  • Com essas regras de baixa prioridade e a geração de registros de regras de firewall, é possível registrar pacotes não processados por regras de firewall de prioridade mais alta e mais específicas possivelmente. Essas duas regras de baixa prioridade também se alinham às práticas recomendadas de segurança ao implementar uma estratégia de "pacotes finais eliminados".

  • Examine os registros de regras de firewall para essas regras e determine se você precisa criar ou alterar regras de prioridade mais alta para permitir pacotes. Por exemplo, se os pacotes enviados entre as VMs do cluster do Dataproc forem descartados, isso pode ser um sinal de que as regras de firewall precisam ser ajustadas.

Crie uma rede VPC

Em vez de usar a rede VPC default, crie sua própria rede VPC de modo automático ou personalizada. Ao criar o cluster, você associa sua rede a ele.

Ambiente do Assured Workloads:quando você usa um ambiente do Assured Workloads para compliance regulatória, o cluster, a rede VPC e os buckets do Cloud Storage precisam estar contidos no ambiente do Assured Workloads.

Como criar um cluster que use a rede VPC

Console

Selecione a rede na seção de configuração de rede no painel Personalizar cluster. Depois de escolher a rede, o seletor de sub-rede vai mostrar as sub-redes disponíveis na região selecionada para o cluster.

Google Cloud CLI

Use gcloud dataproc clusters create com a flag ‑‑network ou ‑‑subnet para criar um cluster em uma sub-rede na sua rede. Se você usar a flag ‑‑network, o cluster vai usar uma sub-rede com o mesmo nome da rede especificada na região em que o cluster é criado.

--network example. Como as redes automáticas são criadas com sub-redes em cada região, com cada sub-rede recebendo o nome da rede, é possível transmitir o nome da rede VPC de modo automático para a flag ‑‑network. O cluster vai usar a sub-rede VPC de modo automático na região especificada com a flag ‑‑region.

gcloud dataproc clusters create CLUSTER_NAME \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

--subnet example. É possível usar a flag ‑‑subnet para criar um cluster que usa um modo automático ou uma sub-rede de rede VPC personalizada na região do cluster. Especifique o caminho completo do recurso da sub-rede.

gcloud dataproc clusters create CLUSTER_NAMEW \
    --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --region=REGION \
    ... other args ...

API REST

É possível especificar o campo GceClusterConfig networkUri ou subnetworkUri como parte de uma solicitação clusters.create.

Exemplo

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "PROJECT_ID",
  "clusterName": CLUSTER_NAME,
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": SUBNET_NAME,
    },
    ...

Como criar um cluster que use uma rede VPC em outro projeto

Um cluster do Dataproc pode usar uma rede VPC compartilhada definida em um projeto host. O projeto em que o cluster do Dataproc é criado é chamado de projeto de serviço.

  1. Encontre o número do projeto do cluster do Dataproc:

    1. Abra a página Configurações do IAM e administrador no console do Google Cloud. Selecione o projeto em que você vai criar o cluster do Dataproc. Copie o ID do projeto.
  2. Um principal com o papel de administrador de VPC compartilhada precisa executar as etapas a seguir. Consulte as instruções para configurar a VPC compartilhada para ver informações básicas.

    1. Verifique se o projeto host da VPC compartilhada está ativado.

    2. Anexe o projeto com o cluster do Dataproc ao projeto host.

    3. Configure a conta de serviço do agente de serviço do Dataproc (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) para ter o papel de Usuário de rede no projeto host:

      1. Abra a página IAM e administrador no console do Google Cloud.

      2. Use o seletor de projeto para selecionar o novo projeto host.

      3. Clique em Permitir acesso.

      4. Preencha o formulário de acesso concedido:

        1. Adicionar principais: insira a conta de serviço.

        2. Atribuir funções: insira "Compute Network" na caixa de filtro e selecione a função Usuário da rede do Compute.

        3. Clique em Salvar.

  3. Depois que a conta de serviço tiver o papel Network User no projeto host, crie um cluster que use a rede VPC compartilhada.

Criar um cluster que use uma sub-rede VPC em outro projeto

Um cluster do Dataproc pode usar uma sub-rede VPC compartilhada definida em um projeto host. O projeto em que o cluster do Dataproc é criado é chamado de projeto de serviço.

  1. Encontre o número do projeto do cluster do Dataproc:

    1. Abra a página Configurações do IAM e administrador no console do Google Cloud. Selecione o projeto em que você vai criar o cluster do Dataproc. Copie o ID do projeto.
  2. Um principal com o papel de administrador de VPC compartilhada precisa executar as etapas a seguir. Consulte as instruções para configurar a VPC compartilhada para ver informações básicas.

    1. Verifique se o projeto host da VPC compartilhada está ativado.

    2. Anexe o projeto com o cluster do Dataproc ao projeto host.

    3. Configure a conta de serviço do agente de serviço do Dataproc (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) para ter o papel de Usuário de rede no projeto host:

      1. Abra a página Redes VPC no console do Google Cloud.

      2. Use o seletor de projeto para selecionar o projeto host.

      3. Clique na rede que contém a sub-rede que o cluster do Dataproc vai usar.

      4. Na página Detalhes da rede VPC, clique na caixa de seleção ao lado do nome da sub-rede que o cluster vai usar.

      5. Se o painel de informações não estiver aberto, clique em Mostrar painel de informações.

      6. Siga as etapas abaixo para cada conta de serviço:

        1. No painel de informações, clique em Adicionar participante.

        2. Preencha o formulário de acesso concedido:

          1. Adicionar principais: insira a conta de serviço.

          2. Atribuir funções: insira "Compute Network" na caixa de filtro e selecione a função Usuário da rede do Compute.

          3. Clique em Salvar.

  3. Depois que a conta de serviço tiver o papel Network User no projeto host, crie um cluster que use a sub-rede da VPC compartilhada.

Criar um cluster do Dataproc somente com endereços IP internos

É possível criar um cluster do Dataproc isolado da Internet pública, cujas instâncias de VM se comunicam por meio de uma sub-rede de IP privada (as VMs do cluster não são atribuídas a endereços IP públicos). Para isso, a sub-rede precisa ter o Acesso privado do Google ativado para permitir que os nós do cluster acessem APIs e serviços do Google, como o Cloud Storage, por IPs internos.

Console

É possível criar um cluster do Dataproc com o Acesso privado do Google ativado na página Criar um cluster do Dataproc no console do Google Cloud. Clique em Apenas IP interno no painel Personalizar cluster para ativar esse recurso para o cluster.

A opção

CLI da gcloud

É possível criar um cluster do Dataproc somente com endereços IP internos usando o comando gcloud dataproc clusters create com o sinalizador ‑‑no-address.

Usar as flags ‑‑no-address e ‑‑network: use a flag ‑‑no-address com a flag ‑‑network para criar um cluster que usará uma sub-rede com o mesmo nome da rede na região em que o cluster é criado.

gcloud dataproc clusters create CLUSTER_NAME \
    --no-address \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

Por exemplo, como as redes automáticas são criadas com sub-redes em cada região com o mesmo nome da rede automática, é possível passar o nome da rede automática para ‑‑network flag para criar um cluster que usará a sub-rede automática na região do cluster.

Use as flags ‑‑no-address e ‑‑subnet: use a flag ‑‑no-address com as flags ‑‑subnet para criar um cluster que usará uma sub-rede automática ou personalizada na região em que o cluster será criado. Transmita a flag ‑‑subnet o caminho completo do recurso da sub-rede.

gcloud dataproc clusters create cluster-name \
    --no-address \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

API REST

Defina o campo GceClusterConfig internalIpOnly como true como parte de uma solicitação clusters.create para ativar apenas endereços IP internos.

Exemplo:

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b",
      "internalIpOnly": true
    },
    ...

Como, por padrão, os clusters somente internos não têm acesso à Internet, os jobs que fazem o download das dependências da Internet, como um download dos pacotes de dependências do Spark do Maven Central, vão falhar. Há várias soluções para evitar o problema:

  1. Use o Cloud NAT para ativar o acesso ao cluster à Internet.

  2. Crie uma imagem personalizada que inclua as dependências (por exemplo, pacotes de dependência do Spark em /usr/lib/spark/jars/).

  3. Faça upload das dependências para um bucket do Cloud Storage e use uma ação de inicialização para fazer o download das dependências do bucket durante a criação do cluster.

Dataproc e redes VPC Service Controls

Com o VPC Service Controls, os administradores podem definir um perímetro de segurança em torno dos recursos dos serviços gerenciados pelo Google para controlar a comunicação entre esses serviços.

Observe as seguintes limitações e estratégias ao usar redes VPC Service Controls com clusters do Dataproc: