Questa sezione descrive l'architettura di alto livello per stabilire il controllo in uscita dalle istanze private di Cloud Data Fusion durante la fase di sviluppo e la fase di esecuzione della pipeline.
Il seguente diagramma dell'architettura di sistema mostra come un'istanza privata di Cloud Data Fusion si connette alla rete internet pubblica quando sviluppi una pipeline:
Puoi controllare le connessioni alle applicazioni SaaS e ai servizi cloud pubblico di terze parti durante lo sviluppo o l'esecuzione della pipeline inviando tutto il traffico in uscita tramite i progetti dei clienti. Questa procedura utilizza le seguenti risorse:
Route della rete VPC personalizzata: una rete VPC personalizzata instrada il traffico tramite una route personalizzata importata alle VM gateway, che vengono esportate in una VPC del progetto del tenant utilizzando il peering VPC.
VM proxy: una VM proxy instrada il traffico in uscita dal progetto tenant Google Cloud di Cloud Data Fusion alla destinazione specificata tramite internet pubblico. Creazione e gestione di una VM gateway nei progetti dei clienti. Ti consigliamo di configurarli in una configurazione ad alta disponibilità (HA) utilizzando un bilanciatore del carico interno (ILB). Se hai più istanze private di Cloud Data Fusion che utilizzano la stessa rete VPC, puoi riutilizzare la stessa VM all'interno del VPC.
Prima di iniziare
Puoi connetterti a un'origine pubblica da un'istanza privata nelle versioni 6.4 o successive di Cloud Data Fusion. Per utilizzare una di queste versioni, puoi creare una nuova istanza Cloud Data Fusion privata o eseguire l'upgrade di un'istanza esistente.
Quando crei una connessione in peering di rete VPC per la tua istanza, seleziona Esporta route.
Configurare il controllo in uscita durante lo sviluppo della pipeline
Il controllo in uscita ti consente di controllare o filtrare ciò che può uscire dalla tua rete, il che è utile negli ambienti VPC Service Controls. Non esiste un proxy di rete preferito per eseguire questa operazione. Esempi di proxy includono proxy Squid, HAProxy e Envoy.
Gli esempi in questa guida descrivono come configurare il proxy HTTP per il filtro HTTP su istanze VM che utilizzano un'immagine Debian. Gli esempi utilizzano un server proxy Squid, che è uno dei modi per configurare un server proxy.
Crea una VM proxy
Crea una VM nella stessa VPC dell'istanza privata di Cloud Data Fusion con il seguente script di avvio e il forwarding IP.
Questo script installa il proxy Squid e lo configura per intercettare il traffico HTTP
e consentire i domini .squid-cache.org
e .google.com
. Puoi sostituire questi
domini con i domini che vuoi collegare all'istanza Cloud Data Fusion.
Console
Vai alla pagina Istanze VM.
Fai clic su Crea istanza.
Utilizza lo stesso VPC in cui è configurato il peering di rete con l'istanza Cloud Data Fusion privata. Per ulteriori informazioni sul peering di rete VPC in questo scenario, consulta Prima di iniziare.
Abilita il forwarding IP per l'istanza nella stessa rete dell'istanza Cloud Data Fusion.
Nel campo Script di avvio, inserisci lo script che segue:
#! /bin/bash apt-get -y install squid3 cat <<EOF > /etc/squid/conf.d/debian.conf # # Squid configuration settings for Debian # logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %ssl::>sni %Sh/%<a %mt logfile_rotate 10 debug_options rotate=10 # configure intercept port http_port 3129 intercept # allow only certain sites acl allowed_domains dstdomain "/etc/squid/allowed_domains.txt" http_access allow allowed_domains # deny all other http requests http_access deny all EOF # Create a file with allowed egress domains # Replace these example domains with the domains that you want to allow # egress from in Data Fusion pipelines cat <<EOF > /etc/squid/allowed_domains.txt .squid-cache.org .google.com EOF /etc/init.d/squid restart iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129 echo 1 > /proc/sys/net/ipv4/ip_forward echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -p tcp --dport 443 -j MASQUERADE
gcloud
export CDF_PROJECT=<cdf-project>
export PROXY_VM=<proxy-vm>
export ZONE=<vm-zone>
export SUBNET=<subnet>
export VPC_NETWORK=<vpc-network>
export COMPUTE_ENGINE_SA=<compute-engine-sa>
gcloud beta compute --project=$CDF_PROJECT instances create $PROXY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --no-address --metadata=startup-script=\#\!\ /bin/bash$'\n'apt-get\ -y\ install\ squid3$'\n'cat\ \<\<EOF\ \>\ /etc/squid/conf.d/debian.conf$'\n'\#$'\n'\#\ Squid\ configuration\ settings\ for\ Debian$'\n'\#$'\n'logformat\ squid\ \%ts.\%03tu\ \%6tr\ \%\>a\ \%Ss/\%03\>Hs\ \%\<st\ \%rm\ \%ru\ \%ssl::\>sni\ \%Sh/\%\<a\ \%mt$'\n'logfile_rotate\ 10$'\n'debug_options\ rotate=10$'\n'$'\n'\#\ configure\ intercept\ port$'\n'http_port\ 3129\ intercept$'\n'$'\n'\#\ allow\ only\ certain\ sites$'\n'acl\ allowed_domains\ dstdomain\ \"/etc/squid/allowed_domains.txt\"$'\n'http_access\ allow\ allowed_domains$'\n'$'\n'\#\ deny\ all\ other\ http\ requests$'\n'http_access\ deny\ all$'\n'EOF$'\n'$'\n'$'\n'\#\ Create\ a\ file\ with\ allowed\ egress\ domains$'\n'\#\ Replace\ these\ example\ domains\ with\ the\ domains\ that\ you\ want\ to\ allow\ $'\n'\#\ egress\ from\ in\ Data\ Fusion\ pipelines$'\n'cat\ \<\<EOF\ \>\ /etc/squid/allowed_domains.txt$'\n'.squid-cache.org$'\n'.google.com$'\n'EOF$'\n'$'\n'/etc/init.d/squid\ restart$'\n'$'\n'iptables\ -t\ nat\ -A\ PREROUTING\ -p\ tcp\ --dport\ 80\ -j\ REDIRECT\ --to-port\ 3129$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -p\ tcp\ --dport\ 443\ -j\ MASQUERADE --can-ip-forward --maintenance-policy=MIGRATE --service-account=$COMPUTE_ENGINE_SA --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server,https-server --image=debian-10-buster-v20210420 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=instance-1 --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any
gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-http --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=https-server
gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:443 --source-ranges=0.0.0.0/0 --target-tags=https-server
Creare un percorso personalizzato
Crea una route personalizzata per connetterti all'istanza VM gateway che hai creato.
Console
Per creare la route nella console Google Cloud, consulta Aggiunta di una route statica.
Quando configuri il percorso:
- Imposta Priorità su un valore maggiore o uguale a
1001
. - Utilizza lo stesso progetto e la stessa VPC dell'istanza privata di Cloud Data Fusion.
- Assicurati che la configurazione del peering di rete VPC consenta di esportare le route, in modo che il VPC del progetto tenant Cloud Data Fusion importi questa route personalizzata tramite il peering di rete VPC.
gcloud
Per creare la route in gcloud CLI:
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \ --network=$VPC_NETWORK --priority=1001 \ --destination-range=0.0.0.0/0 \ --next-hop-instance=$PROXY_VM \ --next-hop-instance-zone=$ZONE
Configura il controllo in uscita per l'esecuzione della pipeline
Dopo aver eseguito l'accesso a internet pubblico con gli hostname consentiti in Preview e Wrangler nel tuo ambiente di progettazione, esegui il deployment della pipeline. Per impostazione predefinita, le pipeline Cloud Data Fusion di cui è stato eseguito il deployment vengono eseguite sui cluster Dataproc.
Per assicurarti che tutto il traffico internet pubblico del cluster Dataproc passi attraverso una o più VM proxy, aggiungi la zona e i record DNS privati. Questo passaggio è necessario perché Cloud NAT non supporta il filtraggio.
Nei record DNS, includi l'indirizzo IP della VM proxy o dell'ILB.
Esegui il deployment della pipeline
Dopo aver verificato la pipeline nella fase di progettazione, esegui il deployment della pipeline. Per impostazione predefinita, le pipeline di cui è stato eseguito il deployment vengono eseguite sui cluster Dataproc.
Per assicurarti che tutto il traffico pubblico di internet dal cluster Dataproc passi attraverso una o più VM proxy, aggiungi una route personalizzata con i tag istanza proxy
e la priorità 1000
alla stessa VPC delle VM Dataproc:
Modifica la pipeline per utilizzare i tag Dataproc perché Cloud NAT attualmente non supporta alcun filtro in uscita.
Passaggi successivi
- Scopri di più sul networking in Cloud Data Fusion.