Connettiti a un'origine pubblica da un'istanza privata

Questa pagina descrive come connettersi ad applicazioni Software as a Service (SaaS) come Salesforce e a servizi cloud di terze parti come Amazon S3 da un'istanza Cloud Data Fusion privata quando si sviluppa una pipeline.

Nella presente guida vengono utilizzati i termini in uscita e controllo in uscita:

  • In uscita si riferisce al traffico di rete in uscita da Google Cloud sulla rete internet pubblica. Di solito, il traffico in uscita si verifica quando crei una pipeline che legge o scrive in un servizio SaaS come Salesforce o un servizio cloud pubblico come Amazon S3.

  • Il controllo in uscita definisce sistemi di protezione per il traffico in uscita utilizzando una VM proxy, che consente l'esecuzione riuscita del traffico in uscita verso un insieme di domini preconfigurati e il mancato funzionamento di tutti gli altri. Consente un perimetro di sicurezza più elevato per il traffico in uscita e può impedire il traffico in uscita indesiderato da un'istanza privata.

Il seguente diagramma dell'architettura di sistema mostra in che modo un'istanza privata di Cloud Data Fusion si connette alla rete internet pubblica quando sviluppi una pipeline:

Diagramma dell'architettura dell'istanza privata

Quando progetti la tua pipeline in questo scenario, Cloud Data Fusion instrada il traffico in uscita attraverso il progetto del tuo cliente nell'anteprima di Cloud Data Fusion o in Wrangler. Questa procedura utilizza le seguenti risorse:

  • Una route di rete VPC personalizzata: una rete VPC personalizzata instrada il traffico attraverso una route personalizzata importata alle VM gateway, che esportano in un VPC di progetto tenant utilizzando il peering VPC.

  • Una VM gateway: una VM gateway instrada il traffico in uscita da Google Cloud dal progetto tenant di Cloud Data Fusion a un cloud SaaS o di terze parti sulla rete internet pubblica. Gestisci questa VM nel progetto del tuo cliente. Puoi configurarlo in un ambiente ad alta disponibilità utilizzando un bilanciatore del carico interno (ILB). Ti consigliamo di riutilizzare la VM per più istanze private di Cloud Data Fusion all'interno dello stesso VPC.

Per informazioni sulla configurazione del controllo del traffico in uscita negli ambienti di progettazione ed esecuzione, consulta Controllo del traffico in uscita in un'istanza privata.

Prima di iniziare

Configura la connettività a internet

I passaggi seguenti descrivono come accedere a un bucket Amazon S3 da un'istanza privata di Cloud Data Fusion in Wrangler. Gli stessi passaggi si applicano all'accesso a qualsiasi origine dati sulla rete internet pubblica quando progetti una pipeline in Preview o Wrangler.

In questa guida viene utilizzata una sola VM, ma per le applicazioni mission-critical ti consigliamo di creare VM con bilanciamento del carico. Per ulteriori informazioni, consulta la sezione Configurare una VM ad alta disponibilità.

Crea un gateway NAT

Crea un gateway Cloud NAT nella stessa regione e nella stessa rete VPC della tua istanza privata di Cloud Data Fusion.

Vai a Cloud NAT

crea un'istanza VM del gateway e le regole firewall

Console

  1. Vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic su Crea istanza. Ti consigliamo di utilizzare una VM senza IP esterno.

  3. Utilizza lo stesso VPC in cui è configurato il peering di rete con l'istanza privata di Cloud Data Fusion. Per ulteriori informazioni sul peering di rete VPC in questo scenario, consulta Prima di iniziare.

  4. Abilita l'inoltro IP per l'istanza nella stessa rete dell'istanza di Cloud Data Fusion.

  5. Nel campo Script di avvio, inserisci il seguente script:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE
    echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf
    iptables-save
    

    Per ulteriori informazioni, consulta la sezione Esecuzione degli script di avvio.

    Per ottenere l'intervallo IP allocato per l'istanza di Cloud Data Fusion, vai alla pagina Dettagli istanza di Cloud Data Fusion.

    Interfaccia in uscita temporanea

gcloud

Per creare la VM del gateway e le regole firewall, esegui il seguente script in Google Cloud CLI:

export CDF_PROJECT=CDF_PROJECT
export GATEWAY_VM=GATEWAY_VM_NAME
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 $GATEWAY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --network-tier=PREMIUM --metadata=startup-script=\#\!\ /bin/bash$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables-save  --can-ip-forward --no-address --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-v20210316 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=$GATEWAY_VM --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=CDF_IP_RANGE --target-tags=http-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=CDF_IP_RANGE --target-tags=https-server

Sostituisci quanto segue:

  • CDF_PROJECT: l'identificatore univoco personalizzabile per il tuo progetto
  • GATEWAY_VM: il nome della VM da configurare
  • ZONE: la zona della VM
  • SUBNET: la subnet
  • VPC_NETWORK: il nome della VM
  • COMPUTE_ENGINE_SA: il nome del tuo account di servizio Compute Engine
  • CDF_IP_RANGE: l'intervallo IP allocato all'istanza di Cloud Data Fusion

Utilizzo di un VPC condiviso

Se utilizzi un VPC condiviso per connettere la tua istanza privata di Cloud Data Fusion a origini sulla rete internet pubblica, crea una VM gateway nel progetto host in cui è configurato il peering di rete VPC con il progetto tenant.

Crea una route personalizzata

Crea una route personalizzata per connetterti all'istanza VM gateway che hai creato.

Console

Per creare la route nella console Google Cloud, vedi Aggiunta di una route statica.

Quando configuri la route:

  • Imposta il campo Priority (Priorità) su un valore maggiore o uguale a 1001. Imposta la destinazione sull'intervallo IP allocato all'istanza di Cloud Data Fusion.
  • Utilizza lo stesso progetto e lo stesso VPC dell'istanza privata di Cloud Data Fusion.
  • Assicurati che la configurazione del peering di rete VPC consenta l'esportazione delle route, in modo che il VPC del progetto tenant di Cloud Data Fusion importi questa route personalizzata tramite il peering di rete VPC.

gcloud

Per creare la route in gcloud CLI:

export ROUTE=ROUTE
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \
    --network=$VPC_NETWORK --priority=1001 \
    --destination-range=0.0.0.0/0 \
    --next-hop-instance=$GATEWAY_VM \
    --next-hop-instance-zone=$ZONE

Sostituisci quanto segue:

  • ROUTE: nome della route personalizzata.

Verificare la configurazione

Dopo aver eseguito i passaggi precedenti, verifica di poter accedere ai servizi del bucket S3 (o ad altri servizi SaaS o cloud pubblico) in Preview e Wrangler.

Configura un gateway a disponibilità elevata

Consigliato: per le applicazioni mission critical, ti consigliamo di creare VM con bilanciamento del carico.

Creare regole firewall per i controlli di integrità

Crea regole firewall per consentire:

  • Porta 80 (HTTP) e porta 443 (HTTPS) da tutti gli intervalli di origine.
  • Traffico TCP, UDP e ICMP dagli indirizzi IP Prober del controllo di integrità. Ad esempio: 130.211.0.0/22,35.191.0.0/16.

Console

Crea regole firewall per consentire le porte da tutti gli intervalli di origine e le regole firewall per consentire il traffico TCP, UDP e ICMP dagli indirizzi IP del controllo di integrità come 130.211.0.0/22,35.191.0.0/16.

Vedi Creazione di controlli di integrità.

gcloud

Crea una regola firewall per i controlli di integrità:

export CDF_PROJECT=PROJECT_ID
export VPC_NETWORK=VPC_NETWORK

gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-http \
    --direction=INGRESS --priority=1000 \
    --network=$VPC_NETWORK \
    --action=ALLOW --rules=tcp:80 \
    --source-ranges=CDF_IP_RANGE \
    --target-tags=http-server

gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-https \
    --direction=INGRESS --priority=1000 --network=$VPC_NETWORK \
    --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE \
    --target-tags=https-server

gcloud compute --project=$CDF_PROJECT firewall-rules create allow-health-checks \
    --network=$VPC_NETWORK \
    --action=allow --direction=ingress \
    --target-tags=allow-health-checks \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --rules=tcp,udp,icmp

Sostituisci quanto segue:

  • PROJECT_ID: l'identificatore univoco personalizzabile per il progetto.
  • VPC_NETWORK: il nome della tua rete VPC.
  • CDF_IP_RANGE: l'intervallo di indirizzi IP allocato a Cloud Data Fusion.

Crea modello di istanza VM gateway

Console

Quando crei un modello di istanza nella console:

  • Crealo nello stesso VPC dell'istanza di Cloud Data Fusion.
  • Consigliato: utilizza una VM con un indirizzo IP privato.
  • Attiva le porte HTTP/HTTPS.
  • Abilita IP forwarding
  • Nel campo Script di avvio, inserisci il seguente script:

    #! /bin/bash
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE
    echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf
    iptables-save
    

    Per ulteriori informazioni, consulta la sezione Esecuzione degli script di avvio.

    Per ottenere l'intervallo IP allocato per l'istanza di Cloud Data Fusion, vai alla pagina Dettagli istanza di Cloud Data Fusion.

gcloud

Crea un modello di istanza:

export TEMPLATE_NAME=TEMPLATE_NAME
export REGION=REGION
export SUBNET=SUBNET
export SERVICE_ACCOUNT=SERVICE_ACCOUNT

gcloud beta compute --project=$CDF_PROJECT instance-templates create $TEMPLATE_NAME \
--machine-type=e2-medium \
--subnet=projects/$CDF_PROJECT/regions/$REGION/subnetworks/$SUBNET \
--network-tier=PREMIUM --metadata=startup-script=sudo\ bash\ -c\ \"echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward\"$'\n'sudo\ iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'sudo\ bash\ -c\ \"echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf\"$'\n'sudo\ iptables-save \
--can-ip-forward --no-address --maintenance-policy=MIGRATE \
--service-account=$SERVICE_ACCOUNT \
--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 \
--region=$REGION --tags=http-server,https-server,allow-health-checks \
--image=debian-10-buster-v20210316 \
--image-project=debian-cloud --boot-disk-size=10GB \
--boot-disk-type=pd-balanced \
--boot-disk-device-name=$TEMPLATE_NAME \
--no-shielded-secure-boot --no-shielded-vtpm \
--no-shielded-integrity-monitoring \
--reservation-affinity=any

Crea un controllo di integrità

Nessun servizio viene eseguito su questa istanza VM del gateway, quindi puoi utilizzare la porta 22 per il controllo di integrità.

Console

Vedi Creazione di controlli di integrità.

gcloud

Crea un controllo di integrità:

export HEATH_CHECK=HEALTH_CHECK_NAME

gcloud beta compute health-checks create tcp $HEATH_CHECK --project=$CDF_PROJECT \
--port=22 --proxy-header=NONE --no-enable-logging \
--check-interval=5 --timeout=5 \
--unhealthy-threshold=2 --healthy-threshold=2

Crea un gruppo di istanze

Utilizzando il controllo di integrità creato nel passaggio precedente, crea un gruppo di istanze:

Console

Consulta Creazione di gruppi di istanze gestite.

gcloud

Crea un gruppo di istanze:

export INSTANCE_GROUP=INSTANCE_GROUP
gcloud beta compute --project=$CDF_PROJECT instance-groups managed create $INSTANCE_GROUP \
--base-instance-name=$INSTANCE_GROUP \
--template=$TEMPLATE_NAME --size=1 --zone=$ZONE \
--health-check=test --initial-delay=300

gcloud beta compute --project "$CDF_PROJECT" instance-groups managed set-autoscaling "$INSTANCE_GROUP" \
--zone "$ZONE" --cool-down-period "60" \
--max-num-replicas "10" --min-num-replicas "1" \
--target-cpu-utilization "0.6" --mode "on"

Crea un bilanciatore del carico

Crea un bilanciatore del carico TCP (ILB) dal gruppo di istanze creato nel passaggio precedente.

Aggiungi la route personalizzata al bilanciatore del carico

Aggiungi la route personalizzata al bilanciatore del carico interno (ILB) nello stesso VPC dell'istanza di Cloud Data Fusion.

Console

Vai alla pagina Rete VPC.

Vai a Reti VPC

Nella scheda Route, fai clic su Crea route.

Aggiungi route personalizzata

gcloud

Aggiungi la route personalizzata al bilanciatore del carico interno:

export ROUTE=ROUTE_NAME
export ILB_FRONTEND=<ip_of_ilb_frontend>
gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \
--network=$VPC_NETWORK --priority=1001 \
--destination-range=0.0.0.0/0 \
--next-hop-ilb=$ILB_FRONTEND \
--next-hop-ilb-region=$REGION

Risoluzione dei problemi

Errori di timeout della connessione in Preview o Wrangler

Durante la configurazione dei controlli in uscita, potresti visualizzare un errore Connection Timeout.

Per risolvere il problema, verifica che siano configurate le seguenti impostazioni:

I controlli di integrità del gruppo di istanze non hanno esito positivo

Verifica che siano presenti regole firewall per consentire il traffico TCP, UDP e ICMP dall'intervallo di origine 130.211.0.0/22,35.191.0.0/16.

Errore della pipeline durante l'esecuzione in Dataproc

Per accedere alla rete internet pubblica al momento dell'esecuzione, abilita Cloud NAT nella stessa regione e nella stessa rete del cluster Dataproc.

Passaggi successivi