Configurazione dell'accesso a Internet e delle regole firewall

Questo documento spiega come configurare le istanze di macchine virtuali (VM) Dataflow per l'accesso a internet, creare tag di rete e definire regole firewall per la rete associata ai job Dataflow.

Questo documento richiede una conoscenza di base delle reti Google Cloud. Per definire una rete per il job Dataflow, consulta Specificare la rete e la subnet. Per saperne di più su come risolvere i problemi di rete, consulta Risolvere i problemi di rete di Dataflow.

Accesso alle API Google Cloud per Dataflow

Le macchine virtuali (VM) worker di Dataflow devono raggiungere le API e i servizi Google Cloud. L'insieme 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:

Per impostazione predefinita, le regole firewall e le configurazioni DNS consentono l'accesso alle API Google Cloud. Tuttavia, potresti limitare attivamente l'accesso a un sottoinsieme di API Google Cloud, ad esempio se utilizzi Controlli di servizio VPC. In questo caso, fornisci almeno l'accesso a restricted.googleapis.com. Se utilizzi Private Service Connect, fornisci l'accesso al bundle vpc-sc. Fornendo l'accesso a domini più permissivi, come private.googleapis.com, viene fornita 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 del firewall devono consentire l'uscita verso tutti gli intervalli di indirizzi del dominio scelto.

  • Il DNS deve risolvere *.googleapis.com nel dominio scelto.

Ad esempio, se le regole del firewall limitano le uscite all'intervallo di indirizzi restricted.googleapis.com, restricted.googleapis.com deve risolvere in indirizzi all'interno di quell'intervallo.*.googleapis.com Per ulteriori informazioni, consulta Configurare il DNS per googleapis.com.

Analogamente, 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 VM potrebbero anche dover accedere a risorse esterne a Google 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 è pensata per l'esecuzione di job che accedono a API e servizi esterni a Google Cloud che richiedono l'accesso a internet. Ad esempio, i job dell'SDK Python potrebbero richiedere l'accesso al 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, eliminando la necessità di accedere a PyPI in fase di runtime.

    Per saperne di più, consulta Gestire le dipendenze della pipeline Python nella documentazione di Apache Beam.

Disattivare l'indirizzo IP esterno

Per impostazione predefinita, il servizio Dataflow assegna ai worker sia indirizzi IP esterni che interni. Quando disattivi gli indirizzi IP esterni, la pipeline Dataflow può accedere alle risorse solo nei seguenti punti:

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. Inoltre, riduci anche il numero di indirizzi IP esterni conteggiati nella tua quota di progetto Google Cloud.

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 informazioni sulla configurazione dell'accesso a internet per i job con indirizzi IP interni, leggi la sezione precedente.

Per disattivare gli indirizzi IP esterni, procedi nel seguente modo:

Java

  1. Abilita l'accesso privato Google per la tua rete o subnet.
  2. Nei parametri del job Dataflow, specifica --usePublicIps=false e --network=NETWORK-NAME o --subnetwork=SUBNETWORK-NAME.

    A seconda della tua scelta, sostituisci una delle seguenti opzioni:

    • NETWORK-NAME: il nome della rete Compute Engine
    • SUBNETWORK-NAME: il nome della sottorete Compute Engine

Python

  1. Per eseguire il commit di tutte le dipendenze dei pacchetti Python, segui le istruzioni sulle dipendenze della pipeline di Apache Beam.
  2. Abilita l'accesso privato Google per la tua rete o subnet.
  3. Nei parametri del job Dataflow, specifica --no_use_public_ips e --network=NETWORK o --subnetwork=SUBNETWORK.
  4. A seconda della tua scelta, sostituisci una delle seguenti opzioni:

    • NETWORK-NAME: il nome della rete Compute Engine
    • SUBNETWORK-NAME: il nome della sottorete Compute Engine

Vai

  1. Abilita l'accesso privato Google per la tua rete o subnet.
  2. Nei parametri del job Dataflow, specifica --no_use_public_ips e --network=NETWORK o --subnetwork=SUBNETWORK.
  3. A seconda della tua scelta, sostituisci una delle seguenti opzioni:

    • NETWORK-NAME: il nome della rete Compute Engine
    • SUBNETWORK-NAME: il nome della sottorete Compute Engine

Tag di rete per Dataflow

I tag di rete sono attributi di testo che puoi collegare alle VM Compute Engine. I tag di rete ti consentono di applicare regole firewall della rete VPC e determinate route statiche personalizzate a istanze VM specifiche. Dataflow supporta l'aggiunta di tag di rete a tutte le VM worker che eseguono un determinato job Dataflow.

Anche se non utilizzi il parametro network, Dataflow aggiunge sempre il tag di rete predefinito dataflow a ogni VM worker creata.

Attivare i tag di rete

Puoi specificare i tag di rete solo quando esegui il modello di job Dataflow per creare un job. Una volta avviato un job, non puoi aggiungere altri tag di rete. Per applicare tag di rete aggiuntivi a un job, devi ricreare il modello di job con i tag di rete richiesti.

Aggiungi quanto segue al codice della pipeline, indipendentemente dal fatto che venga eseguito in Java o Python:

--experiments=use_network_tags=TAG-NAME

Sostituisci TAG-NAME con i nomi dei tag. Se aggiungi più di un tag, separali con un punto e virgola (;), come mostrato nel seguente formato: TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;....

Anche se non utilizzi questo parametro, Dataflow aggiunge sempre il tag di rete dataflow a ogni VM worker creata.

Attivare i tag di rete per le VM con modello flessibile

Quando utilizzi i modelli flessibili, per attivare i tag di rete per le VM worker di Dataflow, utilizza l'opzione --additional-experiments come mostrato nell'esempio seguente:

--additional-experiments=use_network_tags=TAG-NAME

Per attivare i tag di rete sia per le VM worker che per le VM di avvio, devi utilizzare le due opzioni seguenti:

--additional-experiments=use_network_tags=TAG-NAME
--additional-experiments=use_network_tags_for_flex_templates=TAG-NAME

Sostituisci TAG-NAME con i nomi dei tag. Se aggiungi più di un tag, separali con un punto e virgola (;), come mostrato nel seguente formato: TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;....

Dopo aver attivato i tag di rete, questi vengono analizzati e collegati alle VM.

Consulta i limiti applicabili 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 del 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 del progetto, un editor o un amministratore della sicurezza deve creare le regole firewall necessarie nella rete VPC utilizzata dalle VM Dataflow.

Prima di configurare le regole del firewall per Dataflow, leggi i seguenti documenti:

Quando crei regole firewall per Dataflow, specifica i tag di rete di Dataflow. In caso contrario, le regole firewall si applicano a tutte le VM nella rete VPC.

Ove applicabili, i criteri firewall gerarchici vengono valutati per primi 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 utilizzati criteri di firewall gerarchici, è necessario il ruolo compute.orgFirewallPolicyAdmin per apportare modifiche ai criteri.

Se non hai creato tag di rete personalizzati quando hai eseguito 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 hai creato tag di rete personalizzati quando hai eseguito il codice della pipeline, le VM Dataflow li useranno. 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 della firewall per Dataflow.

Esempio di regola firewall in entrata

La regola firewall in entrata consente alle VM Dataflow di ricevere pacchetti tra di loro. Devi sempre creare regole firewall per consentire il traffico in entrata, altrimenti il traffico sarà 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 di lavoro hanno il tag di rete predefinito dataflow. Un proprietario del progetto, un editor o un amministratore della sicurezza 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 firewall

  • NETWORK: il nome della rete utilizzata dalle VM worker

  • CUSTOM_TAG: un elenco di tag di rete separati da virgole

    Di 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 proveniente 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 firewall

    I numeri più bassi hanno priorità più elevate e 0 è la priorità più alta.

Esempio di regola firewall in uscita

La regola del firewall in uscita consente alle VM Dataflow di inviare pacchetti l'una all'altra. Se hai creato regole firewall di rifiuto in uscita, potresti dover creare regole firewall di autorizzazione in uscita personalizzate nella tua rete VPC.

In questo esempio viene creata una regola di uscita del firewall per Dataflow, dove 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 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 firewall

  • NETWORK: il nome della rete utilizzata dalle VM worker

  • CUSTOM_TAG: un elenco di tag di rete separati da virgole

    Di 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 proveniente 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 delimitati da virgole

    Includi l'intervallo di indirizzi IP principale della subnet selezionata.

  • PRIORITY_NUM: la priorità della regola firewall

    I numeri più bassi hanno priorità più elevate e 0 è la priorità più alta.

Per le porte TCP specifiche utilizzate da Dataflow, puoi visualizzare il manifest del contenitore del progetto. Il manifest del container specifica esplicitamente le porte per mappare le porte dell'host nel container.

Accesso SSH alle VM di lavoro

Dataflow non richiede SSH, ma SSH è 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 tramite SSH, devi disporre di una regola del firewall che consenta le connessioni in entrata sulla porta TCP 22 da almeno l'indirizzo IP del sistema su cui stai eseguendo gcloud o del sistema su cui è in esecuzione il browser web che utilizzi per accedere alla console Google 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.

Se devi connetterti a una VM worker che ha solo un indirizzo IP interno, consulta Scegliere un'opzione di connessione per le VM solo interne.

Passaggi successivi