Configuração de rede de 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

O cluster do Dataproc precisa estar em uma rede de nuvem privada virtual que atenda aos requisitos de rota e firewall para acessar com segurança as APIs do Google e outros recursos.

Requisitos de rota

Para estabelecer a comunicação entre o agente do Dataproc em execução nas VMs do cluster e a API de controle do Dataproc, a rede VPC do cluster do Dataproc precisa ter uma rota para o gateway de Internet. Isso também é necessário para clusters somente com IP interno.

Por padrão, os clusters do Dataproc 2.2 e versões de imagem mais recentes provisionam VMs com endereços somente de IP interno. O Dataproc ativa automaticamente o Acesso privado do Google (PGA) na sub-rede do cluster para permitir que as VMs do cluster com endereços IP internos alcancem APIs e serviços do Google usando uma rota padrão gerada pelo sistema para o gateway de Internet padrão.

Regra Tipo Intervalo de IPs de destino Prioridade Limites de escopo Próximo salto
default-route-[id] Estático 0.0.0.0/0 1000 - Gateway de Internet padrão

O PGA garante que o tráfego do cluster não passe pela Internet pública e não saia dos data centers do Google (consulte o diagrama de exemplo do PGA).

Não é recomendável excluir a rota padrão para o gateway de Internet. Se você quiser controlar o acesso à Internet, use regras ou políticas de firewall.

Se você excluiu a rota padrão para o gateway da Internet, adicione uma rota padrão. O intervalo de IPs de destino precisa ser 0.0.0.0/0, já que os intervalos de IPs da API de controle do Dataproc não são estáticos.

Requisitos de firewall

A rede VPC do cluster do Dataproc precisa permitir explicitamente o seguinte tráfego:

  • Tráfego iniciado das VMs do cluster do Dataproc para a API de controle do Dataproc e outras VMs do cluster do Dataproc. Esse tráfego é permitido por padrão pela regra implícita de permissão total de saída da rede VPC. Se você adicionou regras de firewall de negação de saída substitutas, crie uma regra de firewall de permissão de saída.

  • O tráfego de resposta da API de controle do Dataproc para as VMs do cluster do Dataproc é permitido por padrão devido à natureza com estado do firewall da rede VPC.

  • Tráfego recebido pelas VMs do cluster do Dataproc de outras VMs do cluster do Dataproc. Esse tráfego será negado por padrão pela regra de firewall implícita de negar entrada de todas as redes VPC. É preciso criar uma regra de firewall de permissão de entrada.

Práticas recomendadas:

  • Use tags de rede para as VMs do cluster do Dataproc e restrinja a aplicabilidade das regras de firewall necessárias apenas a elas. Se você não usar tags de rede, especifique os destinos pela conta de serviço usada para as VMs do cluster. Caso contrário, configure regras de firewall para serem aplicadas a todas as VMs na rede VPC.
  • Para ter acesso e conectividade de rede mais seguros, use tags seguras em vez de tags de rede para definir origens e destinos de regras de firewall.

Criar uma regra de firewall de permissão de entrada

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

  • O parâmetro origens 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 (o intervalo principal da sub-rede do cluster do Dataproc), tags de rede ou contas de serviço associadas às VMs.

  • Os destinos da regra precisam identificar as VMs do cluster. Os destinos podem ser todas as VMs na rede VPC ou é possível identificar VMs por tag de rede 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 na execução bem-sucedida dos serviços.

  • A prioridade da regra precisa ser maior que a prioridade de qualquer regra de firewall de negação de entrada que se aplique às mesmas origens e destinos.

Criar uma regra de firewall de permissão de saída

Se você ou seu administrador de rede ou segurança criar uma regra de firewall de saída para aplicar a uma rede VPC de cluster do Dataproc, ela precisa ter as seguintes características:

  • O parâmetro destinos especifica os destinos dos pacotes. Todas as VMs do cluster do Dataproc precisam iniciar tráfego entre si e para a API de controle do Dataproc. Como os endereços IP da API de controle não são estáticos, o destino precisa ser especificado pelo intervalo de IP 0.0.0.0/0.

  • Os destinos da regra precisam identificar as VMs do cluster. Os destinos podem ser todas as VMs na rede VPC ou é possível identificar VMs por tag de rede 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 na execução bem-sucedida dos serviços.

  • A prioridade da regra precisa ser maior do que a prioridade de qualquer regra de firewall de negação de saída que se aplique aos mesmos destinos e metas.

Diagnosticar regras de firewall de rede VPC

Para auditar pacotes não processados por regras de firewall de prioridade mais alta, é possível criar as duas regras de firewall de negação de baixa prioridade (65534) a seguir. 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 potencialmente mais específicas. 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 determinar se você quer criar ou alterar regras de prioridade mais alta para permitir pacotes. Por exemplo, se os pacotes enviados entre 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 personalizado. Ao criar o cluster, associe a rede a ele.

Ambiente do Assured Workloads:quando você usa um ambiente do Assured Workloads para conformidade 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 sua rede na seção "Configuração de rede" no painel Personalizar cluster. Depois de escolher a rede, o seletor Sub-rede vai mostrar as sub-redes disponíveis na região selecionada para o cluster.

CLI do Google Cloud

Use gcloud dataproc clusters create com a sinalização ‑‑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, e cada sub-rede recebe 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. Use a flag ‑‑subnet para criar um cluster que use uma sub-rede de rede VPC de modo automático ou 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 IAM e administrador Configurações no console 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. Certifique-se de que 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 Usuário da rede no projeto host:

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

      2. Use o seletor para escolher o novo projeto host.

      3. Clique em Permitir acesso.

      4. Preencha o formulário "Conceder acesso":

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

        2. Atribuir papéis: insira "Rede do Compute" na caixa de filtro e selecione o papel 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.

Como 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 IAM e administrador Configurações no console 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. Certifique-se de que 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 Usuário da rede no projeto host:

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

      2. Use o seletor para escolher o projeto host.

      3. Clique na rede que contém a sub-rede que seu 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 seu cluster vai usar.

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

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

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

        2. Preencha o formulário "Conceder acesso":

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

          2. Atribuir papéis: insira "Rede do Compute" na caixa de filtro e selecione o papel 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 somente com IP interno

Esta seção se aplica a clusters de versão de imagem pré-2.2. A criação de VMs de cluster com endereços somente IP interno é ativada por padrão ao criar clusters do Dataproc com versões de imagem 2.2 e mais recentes.

É possível usar o console Google Cloud , a CLI gcloud ou a API Dataproc para criar um cluster somente com endereços IP internos. O Dataproc ativa automaticamente o Acesso privado do Google na sub-rede regional do cluster quando a opção "somente IP interno" está ativada para permitir conexões com APIs e serviços do Google.

Console

É possível criar um cluster do Dataproc somente com endereços IP internos na página Criar um cluster do Dataproc no console Google Cloud . Clique em Somente IP interno no painel Personalizar cluster para ativar esse recurso para o cluster.

CLI da gcloud

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

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

Como as redes automáticas são criadas com sub-redes em cada região com o mesmo nome da rede automática, passe o nome da rede automática para ‑‑network flag a fim de criar um cluster que usará a sub-rede automática na região do cluster.

Como alternativa, use a flag ‑‑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

É possível usar o campo GceClusterConfig.internalIpOnly como parte de uma solicitação clusters.create para criar um cluster que ative 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
    },
    ...

Fazer o download de dependências com clusters somente de IP interno

Por padrão, os clusters somente internos não têm acesso à Internet. Portanto, os jobs que fazem o download de dependências da Internet, como os que baixam 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 do 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.

Redes do Dataproc e dos 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 do VPC Service Controls com clusters do Dataproc:

A seguir