Questo documento spiega come completare le seguenti attività:
- Configura le istanze di macchine virtuali (VM) Dataflow per l'accesso a internet
- Utilizza i tag per proteggere il networking delle VM worker.
- Definisci le regole firewall per la rete associata ai tuoi job Dataflow
Questo documento richiede conoscenze di base delle Google Cloud reti. Per definire una rete per il job Dataflow, consulta Specifica la rete e la subnet. Per saperne di più su come risolvere i problemi di rete, vedi Risolvere i problemi di rete di Dataflow.
Accesso alle Google Cloud API per Dataflow
Le macchine virtuali (VM) worker Dataflow devono raggiungere API e serviziGoogle Cloud . Il set di endpoint Google Cloud dipendenti potrebbe cambiare nel tempo, ma tutti supportano i Controlli di servizio VPC. Utilizza uno dei seguenti metodi per configurare l'accesso alle API Google Cloud :
Configura l'accesso privato Google. Con l'accesso privato Google, le VM che hanno solo indirizzi IP interni possono accedere agli indirizzi IP per Google Cloud e servizi.
Configura un indirizzo IP dell'endpoint Private Service Connect per accedere alle API e ai servizi Google Cloud .
Configura le VM worker con indirizzi IP esterni.
Per impostazione predefinita, le regole firewall e le configurazioni DNS consentono l'accesso alle APIGoogle Cloud . Tuttavia, potresti limitare attivamente l'accesso a un sottoinsieme di API, ad esempio se utilizzi Controlli di servizio VPC. Google Cloud
In questo caso, fornisci almeno l'accesso a
restricted.googleapis.com
. Se utilizzi Private Service Connect, fornisci l'accesso al vpc-sc
bundle.
Fornire l'accesso a domini più permissivi, ad esempio private.googleapis.com
, fornisce anche la funzionalità richiesta.
Per consentire l'accesso alle API Google Cloud necessarie tramite un determinato dominio, il tuo ambiente deve soddisfare i seguenti requisiti:
Le regole firewall devono consentire l'uscita a tutti gli intervalli di indirizzi nel dominio scelto.
Il DNS deve risolvere
*.googleapis.com
nel dominio scelto.
Ad esempio, se le regole firewall limitano l'uscita all'intervallo di indirizzi restricted.googleapis.com
, *.googleapis.com
deve essere risolto in indirizzi all'interno di questo intervallo.
Per ulteriori informazioni, vedi
Configurare il DNS per googleapis.com.
Allo stesso modo, se utilizzi Private Service Connect,
devi creare record DNS
per il dominio predefinito googleapis.com
per garantire l'accesso ad almeno
tutti i servizi nel vpc-sc
bundle.
Accesso a internet per Dataflow
A seconda del caso d'uso, le tue VM potrebbero anche dover accedere a risorse esterne aGoogle Cloud. Utilizza uno dei seguenti metodi per configurare l'accesso a internet per Dataflow:
Configura le VM worker con un indirizzo IP esterno in modo che soddisfino i requisiti di accesso a internet.
Configura una soluzione NAT, ad esempio Cloud NAT. Questa opzione è per l'esecuzione di job che accedono ad API e servizi al di fuori di Google Cloud che richiedono l'accesso a internet. Ad esempio, i job Python SDK potrebbero richiedere l'accesso a Python Package Index (PyPI) per scaricare le dipendenze delle pipeline. In questo caso, devi configurare le VM worker con indirizzi IP esterni o utilizzare Cloud NAT. Puoi anche fornire le dipendenze della pipeline Python durante l'invio del job. Ad esempio, puoi utilizzare container personalizzati per fornire le dipendenze della pipeline Python, il che elimina la necessità di accedere a PyPI in fase di runtime.
Per saperne di più, consulta Gestione delle dipendenze delle pipeline Python nella documentazione di Apache Beam.
Disattivare l'indirizzo IP esterno
Per impostazione predefinita, Dataflow assegna indirizzi IP sia esterni che interni ai worker. Quando disattivi gli indirizzi IP esterni, il job Dataflow può accedere solo alle risorse nelle seguenti posizioni:
- Un'altra istanza nella stessa rete VPC
- Una rete VPC condivisa
- Una rete con il peering di rete VPC abilitato
Senza indirizzi IP esterni, puoi comunque eseguire attività amministrative e di monitoraggio. Puoi accedere ai tuoi worker utilizzando SSH tramite le opzioni elencate nell'elenco precedente. Tuttavia, la pipeline non può accedere a internet e gli host internet non possono accedere ai tuoi worker Dataflow.
Se non utilizzi indirizzi IP esterni, puoi proteggere meglio la tua infrastruttura di elaborazione dati. Puoi anche ridurre il numero di indirizzi IP esterni conteggiati nella tua Google Cloud quota di progetto.
Se disattivi gli indirizzi IP esterni, i job Dataflow non possono accedere alle API e ai servizi esterni a Google Cloud che richiedono l'accesso a internet.
Per disattivare gli indirizzi IP esterni, esegui una delle seguenti operazioni:
Java
- Abilita l'accesso privato Google per la tua rete o subnet.
- Nei parametri del job Dataflow, specifica
--usePublicIps=false
e--network=NETWORK-NAME
o--subnetwork=SUBNETWORK-NAME
.A seconda della tua scelta, sostituisci uno dei seguenti elementi:
- NETWORK-NAME: il nome della rete Compute Engine
- SUBNETWORK-NAME: il nome della tua subnet Compute Engine
Python
- Per preparare tutte le dipendenze dei pacchetti Python, segui le istruzioni per le dipendenze della pipeline di Apache Beam.
- Abilita l'accesso privato Google per la tua rete o subnet.
-
Nei parametri del job Dataflow, specifica
--no_use_public_ips
e--network=NETWORK
o--subnetwork=SUBNETWORK
.A seconda della tua scelta, sostituisci uno dei seguenti elementi:
- NETWORK-NAME: il nome della rete Compute Engine
- SUBNETWORK-NAME: il nome della tua subnet Compute Engine
Vai
- Abilita l'accesso privato Google per la tua rete o subnet.
-
Nei parametri del job Dataflow, specifica
--no_use_public_ips
e--network=NETWORK
o--subnetwork=SUBNETWORK
.A seconda della tua scelta, sostituisci uno dei seguenti elementi:
- NETWORK-NAME: il nome della rete Compute Engine
- SUBNETWORK-NAME: il nome della tua subnet Compute Engine
Utilizzare i tag per proteggere il networking delle VM worker
I tag consentono di applicare regole firewall di rete a istanze VM specifiche. Quando esegui un job Dataflow, puoi specificare i tag per le VM worker Dataflow che eseguono il job. Eventuali regole firewall per questi tag vengono quindi applicate alle VM worker Dataflow.
Dataflow supporta due tipi di tag per il networking delle VM:
Utilizzare tag sicuri con Dataflow
I tag sicuri, chiamati anche tag regolati da Identity and Access Management (IAM), sono coppie chiave-valore che crei e gestisci in Resource Manager. A differenza dei tag di rete, i tag sicuri supportano il controllo dell'accesso tramite IAM.
I vantaggi dell'utilizzo di tag sicuri, anziché di tag di rete, includono quanto segue:
I tag sicuri impediscono la modifica non autorizzata dei tag e le conseguenti modifiche indesiderate alle regole firewall.
I criteri firewall di rete globali e regionali supportano i tag sicuri. Utilizzando i tag sicuri, puoi raggruppare più regole firewall e aggiornarle contemporaneamente, con gli aggiornamenti regolati dai controlli dell'accesso IAM.
I tag sicuri vengono ereditati dalle risorse principali nella gerarchia Google Cloud , il che ti consente di definire i tag a livelli superiori, ad esempio a livello di organizzazione. Per ulteriori informazioni, vedi Ereditarietà dei tag.
Con i tag sicuri, le regole firewall in entrata possono includere origini nelle reti VPC connesse tramite il peering di rete VPC. Per i job Dataflow, ciò significa che una regola firewall può includere origini sia nella rete VM worker sia nelle reti VPC con peering.
Per ulteriori informazioni sulle differenze tra i tag sicuri e i tag di rete, vedi Confronto tra tag e tag di rete.
Per applicare tag sicuri a un job Dataflow, segui questi passaggi:
Configura i tag sicuri per i tuoi criteri firewall. Per ulteriori informazioni, consulta Configurare i tag sicuri.
Concedi il ruolo Utente tag (
roles/resourcemanager.tagUser
) al service account Dataflow nella risorsa (valori dei tag). Per saperne di più sulle autorizzazioni necessarie, consulta Gestisci i tag sulle risorse.Quando crei il job Dataflow, utilizza l'
use_vm_tags
esperimento con il seguente formato:
Java
--experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Python
--experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Modelli flessibili
--additional-experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Utilizzare i tag di rete con Dataflow
I tag di rete sono attributi di testo che puoi impostare nelle regole firewall e collegare alle VM Compute Engine. A differenza dei tag sicuri, i tag di rete sono stringhe di testo; non sono una risorsa gestita da Resource Manager.
Per applicare i tag di rete a un job Dataflow, utilizza
l'use_network_tags
esperimento, come
segue:
Java
--experiments=use_network_tags=TAG_NAME
Python
--experiments=use_network_tags=TAG_NAME
Modelli flessibili
Per abilitare i tag di rete per le VM worker Dataflow, utilizza l'esperimento
use_network_tags
:
--additional-experiments=use_network_tags=TAG_NAME
Per abilitare i tag di rete per le VM di avvio dei modello flessibile, utilizza l'esperimento
use_network_tags_for_flex_templates
:
--additional-experiments=use_network_tags_for_flex_templates=TAG_NAME
Se specifichi il tag di rete, viene aggiunto anche il tag di rete predefinito
Dataflow
alle VM di avvio modello flessibile.
Sostituisci TAG_NAME con i nomi dei tuoi tag. Se aggiungi
più di un tag, separa ogni tag con un punto e virgola (;
), come segue:
TAG_NAME_1;TAG_NAME_2;TAG_NAME_3;...
.
Una volta avviato un job, non puoi aggiungere altri tag di rete.
Dataflow aggiunge sempre il tag di rete predefinito dataflow
a ogni VM worker che crea.
Consulta i limiti applicati ai tag di rete.
Regole firewall per Dataflow
Le regole firewall ti consentono di consentire o negare il traffico da e verso le tue VM. Se i tuoi
job Dataflow utilizzano
Dataflow Shuffle o
Streaming Engine, devi solo
assicurarti che le regole firewall consentano l'accesso alle API Google Cloud .
In caso contrario, devi configurare regole firewall aggiuntive in modo che
le VM Dataflow possano inviare e ricevere traffico di rete sulla porta TCP
12345
per i job di streaming e sulla porta TCP 12346
per i job batch.
Un proprietario, editor o amministratore della sicurezza del progetto
deve creare le regole firewall necessarie nella rete VPC utilizzata dalle
VM Dataflow.
Prima di configurare le regole firewall per Dataflow, leggi i seguenti documenti:
Panoramica delle regole firewall VPC e Utilizzo delle regole firewall VPC
Panoramica dei criteri firewall gerarchici e Utilizzo di criteri e regole firewall gerarchici
Quando crei regole firewall per Dataflow, specifica i tag di rete Dataflow. Altrimenti, le regole firewall si applicano a tutte le VM nella rete VPC.
Ove applicabile, le policy firewall gerarchiche vengono valutate per prime e queste regole hanno la precedenza sulle regole firewall VPC. Se il job Dataflow si trova in un progetto che fa parte di una cartella o
di un'organizzazione in cui vengono utilizzate le policy firewall gerarchiche, per apportare modifiche alle policy è necessario il ruolo
compute.orgFirewallPolicyAdmin
.
Se non crei tag di rete personalizzati quando esegui il codice della pipeline,
le VM Dataflow utilizzano il tag dataflow
predefinito. In assenza di tag di rete personalizzati, crea le regole firewall con il tag dataflow
predefinito.
Se crei tag di rete personalizzati quando esegui il codice della pipeline, le VM Dataflow utilizzano questi tag. Crea le regole firewall con i tag personalizzati.
Alcune reti VPC, come la rete default
creata automaticamente, includono una regola default-allow-internal
che soddisfa il requisito
firewall per Dataflow.
Regola in entrata del firewall di esempio
La regola firewall in entrata consente alle VM Dataflow di ricevere pacchetti l'una dall'altra. Devi sempre creare regole firewall di autorizzazione in entrata o il traffico viene sempre bloccato, anche se le regole in uscita lo consentono.
Nell'esempio seguente, viene creata una regola firewall in entrata per
Dataflow, in cui tutte le VM worker hanno il tag di rete predefinito dataflow
. Un proprietario, un editor o un amministratore della sicurezza del progetto può utilizzare il seguente comando gcloud
per creare una regola di autorizzazione in entrata che consenta il traffico sulle porte TCP 12345
e 12346
dalle VM con il tag di rete dataflow
ad altre VM con lo stesso tag:
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
Sostituisci quanto segue:
FIREWALL_RULE_NAME_INGRESS
: un nome per la regola firewallNETWORK
: il nome della rete utilizzata dalle VM workerCUSTOM_TAG
: un elenco delimitato da virgole di tag di reteDi seguito è riportato un elenco di linee guida per l'utilizzo dei tag di rete:
Se ometti
--target-tags
, la regola si applica a tutte le VM nella rete VPC.Se ometti
--source-tags
e tutte le altre specifiche dell'origine, il traffico da qualsiasi origine è consentito.Se non hai specificato tag di rete personalizzati e vuoi che la regola sia specifica per le VM Dataflow, utilizza
dataflow
come tag di rete.Se hai specificato tag di rete personalizzati e vuoi che la regola sia specifica per le VM Dataflow, utilizza i tag di rete personalizzati.
PRIORITY_NUM
: la priorità della regola firewallI numeri più bassi hanno priorità più alte e
0
è la priorità più alta.
Regola di uscita del firewall di esempio
La regola firewall in uscita consente alle VM Dataflow di inviarsi pacchetti a vicenda. Se hai creato regole firewall di negazione del traffico in uscita, potresti dover creare regole firewall di autorizzazione del traffico in uscita personalizzate nella tua rete VPC.
In questo esempio, viene creata una regola di uscita firewall per Dataflow,
in cui tutte le VM worker hanno il tag di rete predefinito dataflow
. Un proprietario, editor o amministratore della sicurezza del progetto può utilizzare il seguente comando gcloud
per creare una regola di autorizzazione in uscita che consenta il traffico dalle porte TCP 12345
e 12346
sulle VM con il tag di rete dataflow
ad altre VM con lo stesso tag:
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
Sostituisci quanto segue:
FIREWALL_RULE_NAME_EGRESS
: un nome per la regola firewallNETWORK
: il nome della rete utilizzata dalle VM workerCUSTOM_TAG
: un elenco delimitato da virgole di tag di reteDi seguito è riportato un elenco di linee guida per l'utilizzo dei tag di rete:
Se ometti
--target-tags
, la regola si applica a tutte le VM nella rete VPC.Se ometti
--source-tags
e tutte le altre specifiche dell'origine, il traffico da qualsiasi origine è consentito.Se non hai specificato tag di rete personalizzati e vuoi che la regola sia specifica per le VM Dataflow, utilizza
dataflow
come tag di rete.Se hai specificato tag di rete personalizzati e vuoi che la regola sia specifica per le VM Dataflow, utilizza i tag di rete personalizzati.
DESTINATION-RANGES
: un elenco di CIDR delimitato da virgoleIncludi l'intervallo di indirizzi IP principale della subnet selezionata.
PRIORITY_NUM
: la priorità della regola firewallI numeri più bassi hanno priorità più alte e
0
è la priorità più alta.
Per le porte TCP specifiche utilizzate da Dataflow, puoi visualizzare il manifest del container del progetto. Il manifest del container specifica esplicitamente le porte per mappare le porte host nel container.
Accesso SSH alle VM worker
Dataflow non richiede SSH, ma è utile per la risoluzione dei problemi.
Se la VM worker ha un indirizzo IP esterno, puoi connetterti alla VM tramite la console Google Cloud o utilizzando Google Cloud CLI. Per connetterti
utilizzando SSH, devi avere una regola firewall che consenta le connessioni in entrata sulla porta TCP 22 da almeno l'indirizzo IP del sistema su cui esegui
gcloud
o del sistema che esegue il browser web che utilizzi per accedere alla
consoleGoogle Cloud .
Puoi visualizzare la configurazione e l'attività di rete aprendo una
sessione SSH su uno dei tuoi worker
ed eseguendo iproute2
. Per ulteriori informazioni, consulta la
pagina iproute2
nel wiki
della Linux Foundation.
Se devi connetterti a una VM worker che ha solo un indirizzo IP interno, consulta Scegli un'opzione di connessione per le VM solo interne.
Passaggi successivi
- Scopri di più su Connectivity Tests. Connectivity Tests è uno strumento di diagnostica che ti consente di verificare la connettività tra gli endpoint di rete.
- Crea ed esegui test di connettività.