Conectarse a una fuente pública desde una instancia privada

En esta página se describe cómo conectarse a aplicaciones de software como servicio (SaaS), como Salesforce, y a servicios en la nube de terceros, como Amazon S3, desde una instancia privada de Cloud Data Fusion al desarrollar una canalización.

En esta guía se usan los términos salida y control de salida:

  • Salida se refiere al tráfico de red que sale Google Cloud por la red pública de Internet. Normalmente, la salida se produce cuando creas una canalización que lee o escribe en un servicio SaaS, como Salesforce, o en un servicio de nube pública, como Amazon S3.

  • El control de salida define las protecciones del tráfico de salida mediante una VM proxy, que permite que el tráfico de salida se dirija a un conjunto de dominios preconfigurados y que falle en el resto. Permite un perímetro de seguridad más alto para el tráfico de salida y puede evitar la salida no deseada de una instancia privada.

En el siguiente diagrama de arquitectura del sistema se muestra cómo se conecta una instancia privada de Cloud Data Fusion a Internet público cuando desarrollas una canalización:

Diagrama de la arquitectura de la instancia privada

Cuando diseñas tu flujo de procesamiento en este caso, Cloud Data Fusion enruta el tráfico de salida a través de tu proyecto de cliente en la vista previa o Wrangler de Cloud Data Fusion. Este proceso utiliza los siguientes recursos:

  • Ruta de red de VPC personalizada: una ruta de red de VPC personalizada dirige el tráfico a través de una ruta personalizada importada a las VMs de la puerta de enlace, que se exportan a una VPC de proyecto de inquilino mediante el emparejamiento de VPCs.

  • Una máquina virtual de pasarela: una máquina virtual de pasarela enruta el tráfico saliente desde el proyecto de inquilino de Cloud Data Fusion a un SaaS o a una nube de terceros a través de Internet público. Google Cloud Gestionas esta VM en el proyecto de tu cliente. Puedes configurarlo en un entorno de alta disponibilidad (HA) mediante un balanceador de carga interno (ILB). Te recomendamos que reutilices la máquina virtual para varias instancias privadas de Cloud Data Fusion en la misma VPC.

Para obtener información sobre cómo configurar el control de salida en tus entornos de diseño y ejecución, consulta Controlar la salida en una instancia privada.

Antes de empezar

Configurar la conectividad a Internet

En los siguientes pasos se describe cómo acceder a un segmento de Amazon S3 desde una instancia privada de Cloud Data Fusion en Wrangler. Los mismos pasos se aplican para acceder a cualquier fuente de datos a través de Internet público al diseñar una canalización en Vista Previa o Wrangler.

En esta guía solo se usa una VM, pero, para las aplicaciones críticas, te recomendamos que crees VMs con balanceo de carga. Para obtener más información, consulta Configurar una VM de alta disponibilidad.

Crear una pasarela de NAT

Crea una puerta de enlace Cloud NAT en la misma región y red de VPC que tu instancia privada de Cloud Data Fusion.

Ir a Cloud NAT

Crear una instancia de VM de pasarela y reglas de cortafuegos

Consola

  1. Ve a la página Instancias de VM.

    Ir a instancias de VM

  2. Haz clic en Crear instancia. Se recomienda usar una VM sin IP externa.

  3. Usa la misma VPC que tiene configurado el emparejamiento de redes con la instancia privada de Cloud Data Fusion. Para obtener más información sobre el emparejamiento entre redes de VPC en este caso, consulta la sección Antes de empezar.

  4. Habilita el reenvío de IP para la instancia en la misma red que la instancia de Cloud Data Fusion.

  5. En el campo Secuencia de comandos de inicio, introduce la siguiente secuencia de comandos:

    #! /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
    

    Para obtener más información, consulta Ejecutar secuencias de comandos de inicio.

    Para obtener el intervalo de IPs asignado a la instancia de Cloud Data Fusion, ve a la página Detalles de la instancia de Cloud Data Fusion.

    Interfaz de salida de staging

gcloud

Para crear la VM de la pasarela y las reglas de cortafuegos, ejecuta la siguiente secuencia de comandos en la CLI de Google Cloud:

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

Haz los cambios siguientes:

  • CDF_PROJECT: identificador único personalizable de tu proyecto.
  • GATEWAY_VM: el nombre de la VM que quieres configurar
  • ZONE: la zona de tu VM
  • SUBNET: la subred
  • VPC_NETWORK: el nombre de tu VM
  • COMPUTE_ENGINE_SA: el nombre de tu cuenta de servicio de Compute Engine
  • CDF_IP_RANGE: el intervalo de IPs asignado a la instancia de Cloud Data Fusion

Usar una VPC compartida

Si utilizas una VPC compartida para conectar tu instancia privada de Cloud Data Fusion a fuentes de Internet públicas, crea una máquina virtual de pasarela en el proyecto host en el que se haya configurado el emparejamiento de redes de VPC con el proyecto de inquilino.

Crear una ruta personalizada

Crea una ruta personalizada para conectarte a la instancia de VM de pasarela que has creado.

Consola

Para crear tu ruta en la consola Google Cloud , consulta Añadir una ruta estática.

Cuando configures la ruta, haz lo siguiente:

  • Asigna al campo Prioridad un valor igual o superior a 1001. Defina el destino en el intervalo de IPs asignado a la instancia de Cloud Data Fusion.
  • Usa el mismo proyecto y la misma VPC que la instancia privada de Cloud Data Fusion.
  • Asegúrate de que la configuración del emparejamiento de redes de VPC permita exportar rutas para que la VPC del proyecto de inquilino de Cloud Data Fusion importe esta ruta personalizada mediante el emparejamiento de redes de VPC.

gcloud

Para crear tu ruta en la CLI de gcloud, haz lo siguiente:

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

Haz los cambios siguientes:

  • ROUTE: el nombre de la ruta personalizada.

Verificar la configuración

Después de seguir los pasos anteriores, comprueba que puedes acceder a los servicios del bucket de S3 (u otro servicio de SaaS o de nube pública) en Vista Previa y Wrangler.

Configurar una pasarela de alta disponibilidad

Recomendación: Para las aplicaciones esenciales, te recomendamos que crees máquinas virtuales con balanceo de carga.

Crear reglas de cortafuegos para comprobaciones del estado

Crea reglas de cortafuegos para permitir lo siguiente:

  • Puertos 80 (HTTP) y 443 (HTTPS) de todos los intervalos de origen.
  • Tráfico TCP, UDP e ICMP de las direcciones IP de sondeo de comprobación del estado. Por ejemplo: 130.211.0.0/22,35.191.0.0/16.

Consola

Crea reglas de cortafuegos para permitir puertos de todos los intervalos de origen y reglas de cortafuegos para permitir el tráfico TCP, UDP e ICMP de las direcciones IP de los verificadores de comprobación del estado, como 130.211.0.0/22,35.191.0.0/16.

Consulta Crear comprobaciones del estado.

gcloud

Crea una regla de cortafuegos para las comprobaciones del estado:

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

Haz los cambios siguientes:

  • PROJECT_ID: identificador único personalizable de tu proyecto.
  • VPC_NETWORK: el nombre de tu red de VPC.
  • CDF_IP_RANGE: el intervalo de direcciones IP asignado a Cloud Data Fusion.

Crear una plantilla de instancia de VM de pasarela

Consola

Cuando creas una plantilla de instancia en la consola, ocurre lo siguiente:

  • Crea la instancia en la misma VPC que la instancia de Cloud Data Fusion.
  • Recomendación: usa una VM con una dirección IP privada.
  • Habilita los puertos HTTP/HTTPS.
  • Habilitar el reenvío de IP
  • En el campo Secuencia de comandos de inicio, introduce la siguiente secuencia de comandos:

    #! /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
    

    Para obtener más información, consulta Ejecutar secuencias de comandos de inicio.

    Para obtener el intervalo de IPs asignado a la instancia de Cloud Data Fusion, ve a la página Detalles de la instancia de Cloud Data Fusion.

gcloud

Crea una plantilla de instancia:

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

Crear una comprobación del estado

No se ejecuta ningún servicio en esta instancia de VM de pasarela, por lo que puedes usar el puerto 22 para tu comprobación del estado.

Consola

Consulta Crear comprobaciones del estado.

gcloud

Crea una comprobación del estado:

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

Crear un grupo de instancias

Con la comprobación del estado que has creado en el paso anterior, crea un grupo de instancias:

Consola

Consulta Crear grupos de instancias gestionadas.

gcloud

Crea un grupo de instancias:

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"

Crear un balanceador de carga

Crea un balanceador de carga TCP (ILB) a partir del grupo de instancias creado en el paso anterior.

Añadir la ruta personalizada al balanceador de carga

Añade la ruta personalizada al balanceador de carga interno (ILB) de la misma VPC que la instancia de Cloud Data Fusion.

Consola

Ve a la página Red de VPC.

Ir a redes de VPC

En la pestaña Rutas, haz clic en Crear ruta.

Añadir ruta personalizada

gcloud

Añade la ruta personalizada al balanceador de carga 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

Solución de problemas

Recibir errores de tiempo de espera de conexión en Vista previa o Wrangler

Al configurar los controles de salida, puede que se produzca un error Connection Timeout.

Para solucionar el problema, comprueba que se cumplen los siguientes requisitos:

Las comprobaciones del estado del grupo de instancias no se realizan correctamente

Comprueba que haya reglas de cortafuegos para permitir el tráfico TCP, UDP e ICMP desde el intervalo de origen 130.211.0.0/22,35.191.0.0/16.

El flujo de procesamiento falla al ejecutarse en Dataproc

Para acceder a Internet pública en tiempo de ejecución, habilita Cloud NAT en la misma región y red que el clúster de Dataproc.

Siguientes pasos