Este documento explica como concluir as seguintes tarefas:
- Configure instâncias de máquinas virtuais (VMs) do Dataflow para acesso à Internet
- Use etiquetas para proteger a rede de VMs de trabalho.
- Defina regras de firewall para a rede associada aos seus trabalhos do Dataflow
Este documento requer que tenha conhecimentos básicos das redes da Google Cloud Platform. Para definir uma rede para a sua tarefa do Dataflow, consulte o artigo Especifique a sua rede e sub-rede. Para mais informações sobre como resolver problemas de rede, consulte o artigo Resolva problemas de rede do Dataflow.
Acesso às Google Cloud APIs para o Dataflow
As máquinas virtuais (VMs) do worker do Dataflow têm de alcançar as Google Cloud APIs e os serviços. O conjunto de pontos finais dependentes Google Cloud pode mudar ao longo do tempo, mas todos suportam o VPC Service Controls. Use um dos seguintes métodos para configurar o acesso às Google Cloud APIs:
Configure o acesso privado do Google. Com o acesso privado à Google, as VMs que têm apenas endereços IP internos podem aceder a endereços IP para Google Cloud e serviços.
Configure um endereço IP do ponto final do Private Service Connect para aceder a Google Cloud APIs e serviços.
Configure VMs de trabalho com endereços IP externos.
Por predefinição, as regras da firewall e as configurações de DNS permitem o acesso às
Google Cloud APIs. No entanto, pode estar a restringir ativamente o acesso a um subconjunto de APIs, por exemplo, se estiver a usar os VPC Service Controls. Google Cloud
Neste caso, faculte, no mínimo, acesso a
restricted.googleapis.com. Se estiver a usar o Private Service Connect,
conceda acesso ao vpc-sc pacote.
Dar acesso a domínios mais permissivos, como private.googleapis.com, também oferece a funcionalidade necessária.
Para permitir o acesso às APIs Google Cloud necessárias através de um determinado domínio, o seu ambiente tem de cumprir os seguintes requisitos:
As regras da firewall têm de permitir a saída para todos os intervalos de endereços no domínio escolhido.
O DNS tem de resolver
*.googleapis.compara o domínio escolhido.
Por exemplo, se as regras de firewall limitarem a saída ao intervalo de endereços restricted.googleapis.com, *.googleapis.com tem de ser resolvido para endereços dentro desse intervalo.
Para mais informações, consulte o artigo
Configure o DNS para googleapis.com.
Da mesma forma, se estiver a usar o Private Service Connect,
tem de criar registos DNS
para o domínio predefinido para garantir o acesso a, pelo menos, todos os serviços no vpc-sc
pacote.googleapis.com
Acesso à Internet para o Dataflow
Consoante o seu exemplo de utilização, as suas MVs também podem precisar de acesso a recursos fora da Google Cloud Platform. Use um dos seguintes métodos para configurar o acesso à Internet para o Dataflow:
Configure VMs de trabalho com um endereço IP externo para que cumpram os requisitos de acesso à Internet.
Configure uma solução NAT, como o Cloud NAT. Esta opção destina-se à execução de tarefas que acedem a APIs e serviços fora do Google Cloud que requerem acesso à Internet. Por exemplo, as tarefas do SDK Python podem exigir acesso ao índice de pacotes Python (PyPI) para transferir dependências de pipelines. Neste caso, tem de configurar VMs de trabalho com endereços IP externos ou usar o Cloud NAT. Também pode fornecer dependências da pipeline Python durante o envio de tarefas. Por exemplo, pode usar contentores personalizados para fornecer dependências de pipelines Python, o que elimina a necessidade de aceder ao PyPI em tempo de execução.
Para mais informações, consulte o artigo Gerir dependências de pipelines Python na documentação do Apache Beam.
Desative o endereço IP externo
Por predefinição, o Dataflow atribui endereços IP externos e internos aos trabalhadores. Quando desativa os endereços IP externos, a tarefa do Dataflow só pode aceder a recursos nos seguintes locais:
- Outra instância na mesma rede VPC
- Uma rede de VPC partilhada
- Uma rede com o intercâmbio da rede da VPC ativado
Mesmo sem endereços IP externos, pode continuar a realizar tarefas administrativas e de monitorização. Pode aceder aos seus trabalhadores através de SSH com as opções indicadas na lista anterior. No entanto, o pipeline não pode aceder à Internet e os anfitriões da Internet não podem aceder aos seus trabalhadores do Dataflow.
Ao não usar endereços IP externos, pode proteger melhor a sua infraestrutura de processamento de dados. Também pode reduzir o número de endereços IP externos que consome em relação à Google Cloud quota do projeto.
Se desativar os endereços IP externos, as tarefas do Dataflow não podem aceder a APIs e serviços fora do Google Cloud Platform que requerem acesso à Internet. Google Cloud
Para desativar os endereços IP externos, faça uma das seguintes ações:
Java
- Ative o acesso privado à Google para a sua rede ou sub-rede.
- Nos parâmetros da tarefa do Dataflow, especifique
--usePublicIps=falsee--network=NETWORK-NAMEou--subnetwork=SUBNETWORK-NAME.Consoante a sua escolha, substitua um dos seguintes elementos:
- NETWORK-NAME: o nome da sua rede do Compute Engine
- SUBNETWORK-NAME: o nome da sub-rede do Compute Engine
Python
- Para preparar todas as dependências de pacotes Python, siga as instruções de dependências de pipelines do Apache Beam.
- Ative o acesso privado à Google para a sua rede ou sub-rede.
-
Nos parâmetros da tarefa do Dataflow, especifique
--no_use_public_ipse--network=NETWORKou--subnetwork=SUBNETWORK.Consoante a sua escolha, substitua um dos seguintes elementos:
- NETWORK-NAME: o nome da sua rede do Compute Engine
- SUBNETWORK-NAME: o nome da sub-rede do Compute Engine
Ir
- Ative o acesso privado à Google para a sua rede ou sub-rede.
-
Nos parâmetros da tarefa do Dataflow, especifique
--no_use_public_ipse--network=NETWORKou--subnetwork=SUBNETWORK.Consoante a sua escolha, substitua um dos seguintes elementos:
- NETWORK-NAME: o nome da sua rede do Compute Engine
- SUBNETWORK-NAME: o nome da sub-rede do Compute Engine
Use etiquetas para proteger a rede de VMs de trabalho
As etiquetas permitem-lhe aplicar regras de firewall de rede a instâncias de VMs específicas. Quando executa uma tarefa do Dataflow, pode especificar etiquetas para as VMs de trabalhador do Dataflow que executam a tarefa. As regras de firewall para essas etiquetas são, em seguida, aplicadas às VMs do worker do Dataflow.
O Dataflow suporta dois tipos de etiquetas para a rede de VMs:
Use etiquetas seguras com o Dataflow
As etiquetas seguras, também denominadas etiquetas regidas pela gestão de identidade e acesso (IAM), são pares de chave-valor que cria e gere no Resource Manager. Ao contrário das etiquetas de rede, as etiquetas seguras suportam o controlo de acesso através da IAM.
As vantagens da utilização de etiquetas seguras, em vez de etiquetas de rede, incluem o seguinte:
As etiquetas seguras impedem a modificação não autorizada das etiquetas e as alterações indesejadas resultantes às regras de firewall.
As políticas de firewall de rede globais e regionais suportam etiquetas seguras. Ao usar etiquetas seguras, pode agrupar várias regras de firewall e atualizá-las em simultâneo, com as atualizações regidas pelos controlos de acesso do IAM.
As etiquetas seguras são herdadas dos recursos principais na hierarquia da Google Cloud Platform, o que lhe permite definir etiquetas em níveis superiores, como o nível da organização. Para mais informações, consulte o artigo Herança de etiquetas.
Com etiquetas seguras, as regras de firewall de entrada podem incluir origens em redes VPC ligadas através do peering de redes VPC. Para os trabalhos do Dataflow, isto significa que uma regra de firewall pode incluir origens na rede de VMs de trabalho e nas redes VPC em intercâmbio.
Para mais informações sobre as diferenças entre etiquetas seguras e etiquetas de rede, consulte o artigo Comparação de etiquetas e etiquetas de rede.
Para aplicar etiquetas seguras a uma tarefa do Dataflow, siga os seguintes passos:
Configure etiquetas seguras para as suas políticas de firewall. Para mais informações, consulte o artigo Configure etiquetas seguras.
Conceda a função Utilizador de etiquetas (
roles/resourcemanager.tagUser) à conta de serviço do Dataflow no recurso (valores das etiquetas). Para mais informações sobre as autorizações necessárias, consulte o artigo Gerir etiquetas em recursos.Quando criar a tarefa do Dataflow, use a
use_vm_tagsopção de serviço com o seguinte formato:
Java
--dataflowServiceOptions=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Python
--dataflow_service_options=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Ir
--dataflow_service_options=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
gcloud
Use o comando
gcloud dataflow jobs run
com a opção additional-experiments. Se estiver a usar modelos flexíveis, use o comando gcloud dataflow flex-template run.
--additional-experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Use etiquetas de rede com o Dataflow
As etiquetas de rede são atributos de texto que pode definir nas regras de firewall e anexar a VMs do Compute Engine. Ao contrário das etiquetas seguras, as etiquetas de rede são strings de texto. Não são um recurso gerido pelo Resource Manager.
Para aplicar etiquetas de rede a uma tarefa do Dataflow, use o
use_network_tags
experiment, da seguinte forma:
Java
--dataflowServiceOptions=use_network_tags=TAG_NAME
Python
--dataflow_service_options=use_network_tags=TAG_NAME
Ir
--dataflow_service_options=use_network_tags=TAG_NAME
gcloud
Use o comando
gcloud dataflow jobs run
com a opção additional-experiments. Se estiver a usar modelos flexíveis, use o comando gcloud dataflow flex-template run.
--additional-experiments=use_network_tags=TAG_NAME
A especificação da etiqueta de rede também adiciona a etiqueta de rede predefinida
Dataflow às VMs do iniciador de modelos flexíveis.
Substitua TAG_NAME pelos nomes das suas etiquetas. Se adicionar mais do que uma etiqueta, separe cada etiqueta com um ponto e vírgula (;), da seguinte forma:
TAG_NAME_1;TAG_NAME_2;TAG_NAME_3;....
Depois de iniciar uma tarefa, não pode adicionar mais etiquetas de rede à tarefa.
O Dataflow adiciona sempre a etiqueta de rede predefinida dataflow a todas as VMs de trabalho que cria.
Consulte os limites aplicáveis às etiquetas de rede.
Regras de firewall para o Dataflow
As regras de firewall permitem-lhe permitir ou negar tráfego de e para as suas VMs. Se os seus trabalhos do Dataflow usarem o Dataflow Shuffle ou o Streaming Engine, só tem de garantir que as regras da firewall permitem o acesso às Google Cloud APIs.
Caso contrário, tem de configurar regras de firewall adicionais para que as VMs do Dataflow possam enviar e receber tráfego de rede na porta TCP 12345 para tarefas de streaming e na porta TCP 12346 para tarefas em lote.
Um proprietário, um editor ou um administrador de segurança do projeto tem de criar as regras de firewall necessárias na rede da VPC usada pelas VMs do Dataflow.
Antes de configurar regras de firewall para o Dataflow, leia os seguintes documentos:
Vista geral das regras de firewall de VPC e Use regras de firewall de VPC
Vista geral das políticas de firewall hierárquicas e Use políticas e regras de firewall hierárquicas
Quando cria regras de firewall para o Dataflow, especifique as etiquetas de rede do Dataflow. Caso contrário, as regras de firewall aplicam-se a todas as VMs na rede da VPC.
Quando aplicável, as políticas de firewall hierárquicas são avaliadas primeiro e estas regras têm precedência sobre as regras de firewall da VPC. Se a tarefa do Dataflow estiver num projeto que faça parte de uma pasta ou de uma organização onde são usadas políticas de firewall hierárquicas, é necessário o papel compute.orgFirewallPolicyAdmin para fazer modificações nas políticas.
Se não criar etiquetas de rede personalizadas quando executar o código do pipeline, as VMs do Dataflow usam a etiqueta dataflow predefinida. Na ausência de etiquetas de rede personalizadas, crie as regras de firewall com a etiqueta dataflow predefinida.
Se criar etiquetas de rede personalizadas quando executar o código do pipeline, as VMs do Dataflow usam essas etiquetas. Crie as regras de firewall com as etiquetas personalizadas.
Algumas redes de VPC, como a rede criada automaticamente, incluem uma regra que cumpre o requisito da firewall para o Dataflow.defaultdefault-allow-internal
Exemplo de regra de entrada de firewall
A regra de firewall de entrada permite que as VMs do Dataflow recebam pacotes umas das outras. Tem de criar sempre regras de firewall de permissão de entrada ou o tráfego é sempre bloqueado, mesmo que as regras de saída permitam esse tráfego.
No exemplo seguinte, é criada uma regra de entrada da firewall para o Dataflow, em que todas as VMs de trabalho têm a etiqueta de rede predefinida dataflow. Um proprietário, um editor ou um administrador de segurança de um projeto pode usar o seguinte comando gcloud para criar uma regra de permissão de entrada que permita o tráfego nas portas TCP 12345 e 12346 de VMs com a etiqueta de rede dataflow para outras VMs com a mesma etiqueta:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INGRESS \
--action=allow \
--direction=ingress \
--network=NETWORK \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Substitua o seguinte:
FIREWALL_RULE_NAME_INGRESS: um nome para a regra de firewallNETWORK: o nome da rede que as VMs de trabalho usamCUSTOM_TAG: uma lista de etiquetas de rede separadas por vírgulasSegue-se uma lista de diretrizes para usar etiquetas de rede:
Se omitir
--target-tags, a regra aplica-se a todas as VMs na rede VPC.Se omitir
--source-tagse todas as outras especificações de origem, o tráfego de qualquer origem é permitido.Se não tiver especificado etiquetas de rede personalizadas e quiser que a regra seja específica para VMs do Dataflow, use
dataflowcomo etiqueta de rede.Se especificou etiquetas de rede personalizadas e quer que a regra seja específica das VMs do Dataflow, use as suas etiquetas de rede personalizadas.
PRIORITY_NUM: a prioridade da regra de firewallOs números mais baixos têm prioridades mais elevadas e
0é a prioridade mais elevada.
Exemplo de regra de saída de firewall
A regra de firewall de saída permite que as VMs do Dataflow enviem pacotes entre si. Se criou regras de firewall de negação de saída, pode ter de criar regras de firewall de permissão de saída personalizadas na sua rede da VPC.
Neste exemplo, é criada uma regra de saída de firewall para o Dataflow, em que todas as VMs de trabalho têm a etiqueta de rede predefinida de dataflow. Um proprietário, um editor ou um administrador de segurança de um projeto pode usar o seguinte comando gcloud para criar uma regra de permissão de saída que permita o tráfego das portas TCP 12345 e 12346 em VMs com a etiqueta de rede dataflow para outras VMs com a mesma etiqueta:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_EGRESS \
--network=NETWORK \
--action=allow \
--direction=egress \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--destination-ranges=DESTINATION-RANGES\
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Substitua o seguinte:
FIREWALL_RULE_NAME_EGRESS: um nome para a regra de firewallNETWORK: o nome da rede que as VMs de trabalho usamCUSTOM_TAG: uma lista de etiquetas de rede separadas por vírgulasSegue-se uma lista de diretrizes para usar etiquetas de rede:
Se omitir
--target-tags, a regra aplica-se a todas as VMs na rede VPC.Se omitir
--source-tagse todas as outras especificações de origem, o tráfego de qualquer origem é permitido.Se não tiver especificado etiquetas de rede personalizadas e quiser que a regra seja específica para VMs do Dataflow, use
dataflowcomo etiqueta de rede.Se especificou etiquetas de rede personalizadas e quer que a regra seja específica das VMs do Dataflow, use as suas etiquetas de rede personalizadas.
DESTINATION-RANGES: uma lista de CIDRs delimitada por vírgulasIncluir o intervalo de endereços IP principal da sub-rede selecionada.
PRIORITY_NUM: a prioridade da regra de firewallOs números mais baixos têm prioridades mais elevadas e
0é a prioridade mais elevada.
Para portas TCP específicas usadas pelo Dataflow, pode ver o manifesto do contentor do projeto. O manifesto do contentor especifica explicitamente as portas para mapear as portas do anfitrião no contentor.
Acesso SSH a VMs de trabalho
O Dataflow não requer SSH. No entanto, o SSH é útil para a resolução de problemas.
Se a VM de trabalho tiver um endereço IP externo, pode
ligar-se à VM através da
consola Google Cloud ou usando a Google Cloud CLI. Para estabelecer ligação
através de SSH, tem de ter uma regra de firewall que permita ligações recebidas na porta TCP
22, pelo menos, a partir do endereço IP do sistema no qual está a executar o
gcloud ou o sistema que executa o navegador de Internet que usa para aceder à consola do
Google Cloud .
Pode ver a configuração e a atividade da rede
abrindo uma
sessão SSH num dos seus trabalhadores
e executando iproute2. Para mais informações, consulte a
iproute2 página no
wiki da Linux Foundation.
Se precisar de estabelecer ligação a uma VM de trabalho que só tenha um endereço IP interno, consulte o artigo Escolha uma opção de ligação para VMs apenas internas.
O que se segue?
- Saiba mais sobre os testes de conetividade. Os testes de conetividade são uma ferramenta de diagnóstico que lhe permite verificar a conetividade entre pontos finais de rede.
- Crie e execute testes de conetividade.