Configuração de rede do cluster do Dataproc

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

Requisitos de conetividade do Dataproc

O cluster do Dataproc tem de estar numa rede de nuvem privada virtual que cumpra os requisitos de firewall e de encaminhamento para aceder em segurança às APIs Google e a outros recursos.

Requisitos do trajeto

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

Por predefinição, os clusters da versão de imagem 2.2 e posteriores do Dataproc aprovisionam VMs com endereços apenas de IP interno. O Dataproc ativa automaticamente o acesso privado à Google (PGA) na sub-rede do cluster para permitir que as VMs do cluster com endereços IP internos alcancem as APIs e os serviços Google através de uma rota predefinida gerada pelo sistema para o gateway de Internet predefinido.

Regra Tipo Intervalo de IP de destino Prioridade Limites de âmbito Salto seguinte
default-route-[id] Estático 0.0.0.0/0 1000 - Gateway da Internet predefinido

A PGA garante que o tráfego do cluster não atravessa a Internet pública e não sai dos centros de dados da Google (consulte o diagrama de exemplo da PGA).

Não é recomendável eliminar a rota predefinida para o gateway de Internet. Se quiser controlar o acesso à rede à Internet, use regras ou políticas de firewall.

Se tiver eliminado a rota predefinida para o gateway da Internet, tem de adicionar uma rota predefinida. O intervalo de IPs de destino tem de ser 0.0.0.0/0, uma vez que os intervalos de IPs da API de controlo do Dataproc não são estáticos.

Requisitos de firewall

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

  • Tráfego iniciado a partir de VMs do cluster do Dataproc para a API de controlo do Dataproc e outras VMs do cluster do Dataproc. Este tráfego é permitido por predefinição a partir da regra implícita allow-all de saída da rede VPC. Se adicionou regras de firewall de negação de saída de substituição, crie uma regra de firewall de permissão de saída.

  • O tráfego de resposta da API Dataproc Control para as VMs do cluster do Dataproc é permitido por predefinição devido ao estado da firewall da rede VPC.

  • Tráfego recebido pelas VMs do cluster do Dataproc de outras VMs do cluster do Dataproc. Este tráfego é recusado por predefinição a partir da regra de firewall implícita de recusa de entrada da rede VPC. Tem de criar uma regra de firewall de permissão de entrada.

Práticas recomendadas:

  • Use etiquetas de rede para as VMs do cluster do Dataproc, de modo a poder restringir a aplicabilidade das regras de firewall necessárias apenas às VMs do cluster do Dataproc. Se não usar etiquetas de rede, pode especificar alvos pela conta de serviço usada para as VMs do cluster. Caso contrário, pode configurar regras de firewall para aplicar a todas as VMs na rede de VPC.
  • Para um acesso e uma conetividade de rede mais seguros, use etiquetas seguras em vez de etiquetas de rede para definir origens e destinos de regras de firewall.

Crie uma regra de firewall de permissão de entrada

Se você ou o administrador de rede ou de segurança criar uma regra de firewall de entrada para aplicar a uma rede VPC de cluster do Dataproc, esta tem de ter as seguintes caraterísticas:

  • O parâmetro sources especifica as origens dos pacotes. Todas as VMs do cluster do Dataproc têm de conseguir comunicar entre si. Pode identificar as VMs no cluster pelo intervalo de endereços IP (o intervalo principal da sub-rede do cluster do Dataproc), pelas etiquetas de rede ou pelas contas de serviço associadas às VMs.

  • As segmentações da regra têm de identificar as VMs do cluster. Os destinos podem ser todas as VMs na rede VPC ou pode identificar VMs por etiqueta de rede de destino ou conta de serviço de destino.

  • A regra tem de 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 que são executados em várias portas. A especificação de todas as portas ajuda os serviços a serem executados com êxito.

  • A prioridade da regra tem de ser superior à prioridade de quaisquer regras de firewall de negação de entrada que se apliquem às mesmas origens e destinos.

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

Se o administrador de rede ou de segurança criar uma regra de firewall de saída para aplicar a uma rede VPC de cluster do Dataproc, esta tem de ter as seguintes caraterísticas:

  • O parâmetro destinations especifica os destinos dos pacotes. Todas as VMs do cluster do Dataproc têm de conseguir iniciar tráfego entre si e para a API de controlo do Dataproc. Uma vez que os endereços IP da API de controlo não são estáticos, o destino tem de ser especificado por intervalo de IP 0.0.0.0/0.

  • As segmentações da regra têm de identificar as VMs do cluster. Os destinos podem ser todas as VMs na rede VPC ou pode identificar VMs por etiqueta de rede de destino ou conta de serviço de destino.

  • A regra tem de 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 que são executados em várias portas. A especificação de todas as portas ajuda os serviços a serem executados com êxito.

  • A prioridade da regra tem de ser superior à prioridade de quaisquer regras de firewall de negação de saída que se apliquem aos mesmos destinos e alvos.

Diagnostique regras de firewall da rede de VPC

Para auditar pacotes não processados por regras de firewall de prioridade mais elevada, pode criar as duas regras de firewall de negação de baixa prioridade (65534) seguintes. Ao contrário das regras de firewall implícitas, pode ativar o registo de regras de firewall em cada uma destas regras de baixa prioridade:

  1. Uma regra de recusa de entrada (origens 0.0.0.0/0, todos os protocolos, todos os destinos na rede da VPC)

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

  • Com estas regras de baixa prioridade e o registo de regras de firewall, pode registar pacotes não processados por regras de firewall de prioridade mais elevada e potencialmente mais específicas. Estas duas regras de baixa prioridade também estão alinhadas com as práticas recomendadas de segurança através da implementação de uma estratégia de "eliminação final de pacotes".

  • Examine os registos das regras de firewall para estas regras para determinar se quer criar ou alterar regras de prioridade mais elevada para permitir pacotes. Por exemplo, se os pacotes enviados entre as VMs do cluster do Dataproc forem ignorados, isto pode ser um sinal de que as regras da firewall têm de ser ajustadas.

Crie uma rede de VPC

Em vez de usar a defaultrede VPC, pode criar o seu próprio modo automático ou rede VPC personalizada. Quando cria o cluster, associa a sua rede ao cluster.

Ambiente do Assured Workloads: quando usa um ambiente do Assured Workloads para conformidade regulamentar, o cluster, a respetiva rede VPC e os respetivos contentores do Cloud Storage têm de estar contidos no ambiente do Assured Workloads.

Crie um cluster que use a sua rede de VPC

Consola

Selecione a sua rede na secção de configuração de rede no painel Personalizar cluster. Depois de escolher a rede, o seletor Sub-rede apresenta as sub-redes disponíveis na região que selecionou para o cluster.

CLI do Google Cloud

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

--network example. Uma vez que as redes automáticas são criadas com sub-redes em cada região, com cada sub-rede a receber o nome da rede, pode transmitir o nome da rede VPC de modo automático à flag ‑‑network. O cluster vai usar a sub-rede da 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. Pode usar 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

Pode especificar o campo networkUri ou subnetworkUri como parte de um pedido clusters.create.GceClusterConfig

Exemplo

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

Crie um cluster que use uma rede VPC noutro projeto

Um cluster do Dataproc pode usar uma rede de VPC partilhada definida num projeto anfitrião. O projeto onde o cluster do Dataproc é criado é denominado projeto de serviço.

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

    1. Abra a página IAM e administrador Definições na Google Cloud consola. Selecione o projeto onde vai criar o cluster do Dataproc. Copie o ID do projeto.
  2. Um principal com a função de administrador da VPC partilhada tem de realizar os seguintes passos. Consulte as direções para configurar a VPC partilhada para ver informações gerais.

    1. Certifique-se de que o projeto anfitrião da VPC partilhada está ativado.

    2. Anexe o projeto com o cluster do Dataproc ao projeto anfitrião.

    3. Configure a conta de serviço do agente de serviço do Dataproc (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) para ter a função Utilizador da rede para o projeto anfitrião:

      1. Abra a página IAM e administrador na Google Cloud consola.

      2. Use o seletor de projetos para selecionar o novo projeto anfitrião.

      3. Clique em Conceder acesso.

      4. Preencha o formulário Conceder acesso:

        1. Adicione membros: introduza a conta de serviço.

        2. Atribua funções: insira "Rede de computação" na caixa de filtro e, de seguida, selecione a função Utilizador da rede de computação.

        3. Clique em Guardar.

  3. Depois de a conta de serviço ter a função Network User para o projeto anfitrião, crie um cluster que use a rede de VPC partilhada.

Crie um cluster que use uma sub-rede VPC noutro projeto

Um cluster do Dataproc pode usar uma sub-rede da VPC partilhada definida num projeto anfitrião. O projeto onde o cluster do Dataproc é criado é denominado projeto de serviço.

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

    1. Abra a página IAM e administrador Definições na Google Cloud consola. Selecione o projeto onde vai criar o cluster do Dataproc. Copie o ID do projeto.
  2. Um principal com a função de administrador da VPC partilhada tem de realizar os seguintes passos. Consulte as direções para configurar a VPC partilhada para ver informações gerais.

    1. Certifique-se de que o projeto anfitrião da VPC partilhada está ativado.

    2. Anexe o projeto com o cluster do Dataproc ao projeto anfitrião.

    3. Configure a conta de serviço do agente de serviço do Dataproc (service-[project-number]@dataproc-accounts.iam.gserviceaccount.com) para ter a função Utilizador da rede para o projeto anfitrião:

      1. Abra a página Redes VPC na Google Cloud consola.

      2. Use o seletor de projetos para selecionar o projeto anfitrião.

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

      4. Na página VPC Network Details, clique na caixa de verificação junto ao 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. Execute os seguintes passos para cada conta de serviço:

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

        2. Preencha o formulário de concessão de acesso:

          1. Adicione membros: introduza a conta de serviço.

          2. Atribua funções: insira "Rede de computação" na caixa de filtro e, de seguida, selecione a função Utilizador da rede de computação.

          3. Clique em Guardar.

  3. Depois de a conta de serviço ter a função Network User para o projeto anfitrião, crie um cluster que use a sub-rede da VPC partilhada.

Crie um cluster apenas com IP interno

Esta secção aplica-se a clusters de versões de imagens pré-2.2. A opção para agrupar VMs com endereços apenas de IP interno está ativada por predefinição quando cria clusters do Dataproc com versões de imagem 2.2 e posteriores.

Pode usar a Google Cloud consola, a CLI gcloud ou a API Dataproc para criar um cluster apenas com endereços IP internos. Tenha em atenção que o Dataproc ativa automaticamente o acesso privado à Google na sub-rede regional do cluster quando a opção "Apenas IP interno" está ativada para permitir ligações às APIs e aos serviços Google.

Consola

Só pode criar um cluster do Dataproc com endereços IP internos a partir da página Criar um cluster do Dataproc na Google Cloud consola. Clique em Apenas IP interno no painel Personalizar cluster para ativar esta funcionalidade para o seu cluster.

CLI gcloud

Pode criar um cluster apenas 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 ...

Uma vez que as redes automáticas são criadas com sub-redes em cada região com o mesmo nome que a rede automática, pode transmitir o nome da rede automática para o ‑‑network flag para criar um cluster que use a sub-rede automática na região do cluster.

Em alternativa, pode usar a flag ‑‑subnet para criar um cluster que vai usar uma sub-rede automática ou personalizada na região onde o cluster vai 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

Pode usar o campo GceClusterConfig.internalIpOnly como parte de um pedido 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
    },
    ...

Transfira dependências com clusters apenas com IP interno

Por predefinição, os clusters apenas com IP interno não têm acesso à Internet. Por conseguinte, as tarefas que transferem dependências da Internet, como as tarefas que transferem pacotes de dependências do Spark do Maven Central, falham. Existem várias soluções alternativas 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ências do Spark em /usr/lib/spark/jars/).

  3. Carregue as dependências para um contentor do Cloud Storage e, em seguida, use uma ação de inicialização para transferir as dependências do contentor durante a criação do cluster.

Redes do Dataproc e dos VPC Service Controls

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

Tenha em atenção as seguintes limitações e estratégias quando usar redes dos VPC Service Controls com clusters do Dataproc:

O que se segue?