Conéctacte 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 servicios de nube de terceros, como Amazon S3, desde una instancia privada de Cloud Data Fusion cuando desarrollas una canalización.

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

  • Salida hace referencia al tráfico de red que sale de Google Cloud a través de la Internet pública. Por lo general, esto sucede cuando creas una canalización que lee o escribe en un servicio de SaaS, como Salesforce, o un servicio de nube pública, como Amazon S3.

  • El control de salida define barreras de seguridad para el tráfico de salida mediante una VM de proxy, que permite que el tráfico de salida a un conjunto de dominios preconfigurados se realice correctamente y que todos los demás fallen. Habilita un perímetro de seguridad más alto para el tráfico de salida y puede evitar la salida no deseada desde una instancia privada.

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

Diagrama de arquitectura de instancia privada

Cuando diseñas tu canalización en esta situación, Cloud Data Fusion enruta el tráfico de salida a través de tu proyecto de cliente en la vista previa de Cloud Data Fusion o Wrangler. En este proceso, se usan los siguientes recursos:

  • Una ruta de red de VPC personalizada: Una red de VPC personalizada enruta el tráfico a través de una ruta personalizada importada a las VM de puerta de enlace, que se exportan a una VPC del proyecto de usuario mediante el Intercambio de tráfico entre VPC.

  • Una VM de puerta de enlace: una VM de puerta de enlace enruta el tráfico de salida de Google Cloud desde el proyecto de usuario de Cloud Data Fusion a un SaaS o una nube de terceros a través de la Internet pública. Administra esta VM en tu proyecto de cliente. Puedes configurarla en un entorno de alta disponibilidad (HA) mediante un balanceador de cargas interno (ILB). Se recomienda que vuelvas a usar la VM para varias instancias privadas de Cloud Data Fusion dentro de la misma VPC.

Para obtener información sobre la configuración del control de salida en los entornos de diseño y ejecución, consulta Controla la salida en una instancia privada.

Antes de comenzar

Configura la conexión a Internet

En los siguientes pasos, se describe cómo acceder a un bucket de Amazon S3 desde una instancia privada de Cloud Data Fusion en Wrangler. Los mismos pasos se aplican al acceso a cualquier fuente de datos a través de la Internet pública cuando diseñas una canalización en vista previa o Wrangler.

En esta guía, se usa una sola VM, pero para las aplicaciones esenciales, te recomendamos que crees VM con balanceo de cargas. Para obtener más información, consulta Configura VM de alta disponibilidad.

Crea una puerta de enlace de NAT

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

Ir a Cloud NAT

Crea una instancia de VM de puerta de enlace y reglas de firewall

Console

  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 intercambio de tráfico entre redes con la instancia privada de Cloud Data Fusion. Para obtener más información sobre el intercambio de tráfico entre redes de VPC en esta situación, consulta Antes de comenzar.

  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, ingresa 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 la página Ejecuta secuencias de comandos de inicio.

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

    Interfaz de salida de etapa de pruebas

gcloud

Para crear la VM de la puerta de enlace y las reglas de firewall, 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=0.0.0.0/0 --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=0.0.0.0/0 --target-tags=https-server
  • Reemplaza CDF_PROJECT por el identificador único personalizable de tu proyecto.
  • Reemplaza GATEWAY_VM por el nombre de la VM que deseas configurar.
  • Reemplaza ZONE por la zona de tu VM.
  • Reemplaza SUBNET por la subred.
  • Reemplaza VPC_NETWORK por el nombre de tu VM.
  • Reemplaza COMPUTE_ENGINE_SA por el nombre de tu cuenta de servicio de Compute Engine.

Usa una VPC compartida

Si usas una VPC compartida para conectar tu instancia privada de Cloud Data Fusion a las fuentes de Internet pública, crea una VM de puerta de enlace en el proyecto host en el que el intercambio de tráfico entre redes de VPC se configura con el proyecto de usuario.

Crea una ruta personalizada

Crea una ruta personalizada para conectarte a la instancia de VM de la puerta de enlace que creaste.

Console

Para crear tu ruta en la consola, consulta Agrega una ruta estática.

Cuando configures la ruta, haz lo siguiente:

  • Establece la Prioridad en 1001 o más. Configura el destino como 0.0.0.0/0.
  • Usa el mismo proyecto y VPC que la instancia privada de Cloud Data Fusion.
  • Asegúrate de que la configuración del intercambio de tráfico entre redes de VPC permita exportar rutas. Esto permite que la VPC del proyecto de usuario de Cloud Data Fusion importe esta ruta personalizada mediante el intercambio de tráfico entre 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

Reemplaza ROUTE por el nombre de la ruta personalizada.

Verificar tu configuración

Después de realizar los pasos anteriores, verifica que puedas acceder a los servicios de bucket de S3 (o a otros servicios de SaaS o nube pública) en Vista previa y Wrangler.

Configura una puerta de enlace con alta disponibilidad

Recomendado: Para aplicaciones de servicio crítico, te recomendamos que crees VM con balanceo de cargas.

Crea reglas de firewall para las verificaciones de estado

Crea reglas de firewall para permitir lo siguiente:

  • Puerto 80 (HTTP) y puerto 443 (HTTPS) de todos los rangos de origen.
  • Tráfico de TCP, ICMP y UDP de direcciones IP de sondeo de verificación de estado Por ejemplo: 130.211.0.0/22,35.191.0.0/16.

Console

Crea reglas de firewall para permitir puertos de todos los rangos de origen y reglas de firewall para permitir el tráfico de TCP, ICMP y UDP de direcciones IP de sondeo de verificación de estado como 130.211.0.0/22,35.191.0.0/16.

Consulta Crea verificaciones de estado.

gcloud

Crea una regla de firewall para las verificaciones de 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=0.0.0.0/0  \
    --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=0.0.0.0/0 \
    --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

Crea una plantilla de instancia de VM de la puerta de enlace

Console

Cuando creas una plantilla de instancias en Console, haz lo siguiente:

  • Créala en la misma VPC que la instancia de Cloud Data Fusion.
  • Recomendado: Usa una VM con una dirección IP privada.
  • Habilita los puertos HTTP/HTTPS.
  • Habilita el reenvío de IP
  • En el campo Secuencia de comandos de inicio, ingresa 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 la página Ejecuta secuencias de comandos de inicio.

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

gcloud

Crea una plantilla de instancias:

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 una verificación de estado

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

Console

Consulta Crea verificaciones de estado.

gcloud

Crea una verificación de estado de la siguiente forma:

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 grupo de instancias

Con la verificación de estado creada en el paso anterior, crea un grupo de instancias:

Console

Consulta Crea grupos de instancias administrados.

gcloud

Crear 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"

Crea un balanceador de cargas

Crea un balanceador de cargas de TCP (ILB) desde el grupo de instancias creado en el paso anterior.

Agrega la ruta personalizada al balanceador de cargas

Agrega la ruta personalizada al balanceador de cargas interno (ILB) en la misma VPC que la instancia de Cloud Data Fusion.

Console

Ve a la página Redes de VPC.

Ir a las redes de VPC

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

Agregar ruta personalizada

gcloud

Agrega la ruta personalizada al balanceador de cargas 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

Obtén errores de tiempo de espera de conexión en vista previa o Wrangler

Cuando configuras controles de salida, es posible que recibas un error Connection Timeout.

Para solucionar el problema, verifica que se hayan implementado las siguientes opciones de configuración:

Las verificaciones de estado del grupo de instancias no se realizaron de forma correcta

Comprueba que las reglas de firewall para permitir el tráfico de TCP, ICMP y UDP del rango de origen 130.211.0.0/22,35.191.0.0/16 estén presentes.

La canalización falla mientras se ejecuta en Dataproc

Habilita Cloud NAT en la misma región y red que el clúster de Dataproc para acceder a la Internet pública en el momento de la ejecución.

¿Qué sigue?