Se connecter à une source publique à partir d'une instance privée

Cette page explique comment se connecter à des applications SaaS (Software as a Service) telles que Salesforce et à des services cloud tiers tels qu'Amazon S3 depuis une instance Cloud Data Fusion privée lors du développement d'un pipeline.

Tout au long de ce guide, les termes sortie et contrôle de sortie sont utilisés:

  • La sortie fait référence au trafic réseau quittant Google Cloud via l'Internet public. En général, cela se produit lorsque vous créez un pipeline qui lit ou écrit dans un service SaaS tel que Salesforce ou un service cloud public tel qu'Amazon S3.

  • Le contrôle de sortie définit des garde-fous pour le trafic de sortie utilisant une VM de proxy, qui permet la réussite du trafic sortant vers un ensemble de domaines préconfigurés. Elle active un périmètre de sécurité plus élevé pour le trafic de sortie et peut empêcher les sorties indésirables depuis une instance privée.

Le diagramme d'architecture système suivant montre comment une instance Cloud Data Fusion privée se connecte à l'Internet public lorsque vous développez un pipeline:

Schéma de l'architecture d'une instance privée

Lorsque vous concevez votre pipeline dans ce scénario, Cloud Data Fusion achemine le trafic de sortie via votre projet client dans Cloud Data Fusion Preview ou Wrangler. Ce processus utilise les ressources suivantes:

  • Une route réseau personnalisée VPC: un réseau VPC personnalisé achemine le trafic via une route personnalisée importée vers des VM de passerelle, qui exportent vers un VPC de projet locataire à l'aide de l'appairage VPC.

  • Une VM de passerelle: une VM de passerelle achemine le trafic sortant de Google Cloud du projet locataire Cloud Data Fusion vers un cloud SaaS ou tiers via l'Internet public. Vous gérez cette VM dans votre projet client. Vous pouvez le configurer dans un environnement à haute disponibilité à l'aide d'un équilibreur de charge interne. Il est recommandé de réutiliser la VM pour plusieurs instances Cloud Data Fusion privées dans le même VPC.

Pour en savoir plus sur la configuration du contrôle de sortie dans vos environnements de conception et d'exécution, consultez la section Contrôler la sortie dans une instance privée.

Avant de commencer

Configurer la connectivité Internet

Les étapes suivantes décrivent comment accéder à un bucket Amazon S3 à partir d'une instance Cloud Data Fusion privée dans Wrangler. Les mêmes étapes s'appliquent à l'accès à n'importe quelle source de données via le réseau Internet public lorsque vous concevez un pipeline dans Aperçu ou Wrangler.

Ce guide ne comporte qu'une seule VM, mais pour les applications stratégiques, nous vous recommandons de créer des VM à équilibrage de charge. Pour en savoir plus, consultez la page Configurer une VM à haute disponibilité.

Créer une passerelle NAT

Créez une passerelle Cloud NAT dans la même région et le même réseau VPC que votre instance privée Cloud Data Fusion.

Accéder à la page Cloud NAT

Créer une instance de VM de passerelle et des règles de pare-feu

Console

  1. Accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Cliquez sur Create instance (Créer une instance). (Il est recommandé d'utiliser une VM sans adresse IP externe.)

  3. Utilisez le VPC sur lequel l'appairage de réseaux est configuré avec l'instance privée Cloud Data Fusion. Pour en savoir plus sur l'appairage de réseaux VPC dans ce scénario, consultez la section Avant de commencer.

  4. Activez le transfert IP pour l'instance sur le même réseau que l'instance Cloud Data Fusion.

  5. Dans le champ Script de démarrage, saisissez le script suivant:

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

    Pour en savoir plus, consultez la section Exécuter des scripts de démarrage.

    Pour obtenir la plage d'adresses IP allouée pour l'instance Cloud Data Fusion, consultez la page Détails de l'instance Cloud Data Fusion.

    Interface de sortie de préproduction

gcloud

Pour créer la VM de passerelle et les règles de pare-feu, exécutez le script suivant dans l'outil de ligne de commande gcloud:

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= --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= --action=ALLOW --rules=tcp:443 --source-ranges=0.0.0.0/0 --target-tags=https-server
  • Remplacez CDF_PROJECT par l'identifiant unique personnalisable de votre projet.
  • Remplacez GATEWAY_VM par le nom de la VM que vous souhaitez configurer.
  • Remplacez ZONE par la zone de votre VM.
  • Remplacez SUBNET par votre sous-réseau.
  • Remplacez VPC_NETWORK par le nom de votre VM.
  • Remplacez COMPUTE_ENGINE_SA par le nom de votre compte de service Compute Engine.

Utiliser un VPC partagé

Si vous utilisez un VPC partagé pour connecter votre instance Cloud Data Fusion privée aux sources sur l'Internet public, créez une VM de passerelle dans le projet hôte où l'appairage de réseaux VPC est configuré avec le projet locataire.

Créer une route personnalisée

Créez une route personnalisée pour vous connecter à l'instance de VM de passerelle que vous avez créée.

Console

Pour créer votre route dans Cloud Console, consultez la section Ajouter une route statique.

Lorsque vous configurez la route:

  • Définissez la priorité sur une valeur supérieure ou égale à 1001. Définissez la destination sur 0.0.0.0/0.
  • Utilisez le même projet et le même VPC que l'instance privée Cloud Data Fusion.
  • Assurez-vous que la configuration de l'appairage de réseaux VPC autorise l'exportation de routes. Cela permet au projet locataire Cloud Data Fusion d'importer cette route personnalisée via l'appairage de réseaux VPC.

gcloud

Pour créer votre route dans l'outil gcloud, procédez comme suit:

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

Remplacez ROUTE par le nom de la route personnalisée.

Vérifier votre configuration

Après avoir effectué les étapes précédentes, vérifiez que vous pouvez accéder aux services de bucket S3 (ou à d'autres services Saas ou cloud public) dans Preview et Wrangler.

Configurer une passerelle à disponibilité élevée

Recommandé:pour les applications critiques, nous vous recommandons de créer des VM à équilibrage de charge.

Créer des règles de pare-feu pour les vérifications d'état

Créez des règles de pare-feu pour autoriser:

  • Port 80 (HTTP) et port 443 (HTTPS) de toutes les plages sources.
  • Trafic TCP, UDP et ICMP provenant d'adresses IP de vérification de l'état. Exemple : 130.211.0.0/22,35.191.0.0/16.

Console

Créez des règles de pare-feu autorisant les ports de toutes les plages sources et les règles de pare-feu pour autoriser le trafic TCP, UDP et ICMP provenant d'adresses IP du vérificateur d'état telles que 130.211.0.0/22,35.191.0.0/16.

Consultez la page Créer des vérifications d'état.

gcloud

Créez une règle de pare-feu pour les vérifications d'état:

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

Créer un modèle d'instance de VM pour la passerelle

Console

Lorsque vous créez un modèle d'instance dans la console:

  • Créez-la dans le même VPC que l'instance Cloud Data Fusion.
  • Recommandation:Utilisez une VM avec une adresse IP privée.
  • Activez les ports HTTP/HTTPS.
  • Activer le transfert IP
  • Dans le champ Script de démarrage, saisissez le script suivant:

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

    Pour en savoir plus, consultez la section Exécuter des scripts de démarrage.

    Pour obtenir la plage d'adresses IP allouée pour l'instance Cloud Data Fusion, accédez à la page Détails de l'instance Cloud Data Fusion.

gcloud

Créez un modèle d'instance:

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

Créer une vérification d'état

Aucun service n'est exécuté sur cette instance de VM de passerelle. Vous pouvez donc utiliser le port 22 pour votre vérification d'état.

Console

Consultez la page Créer des vérifications d'état.

gcloud

Créez une vérification d'état :

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

Créer un groupe d'instances

À l'aide de la vérification de l'état créée à l'étape précédente, créez un groupe d'instances:

Console

Consultez la section Créer des groupes d'instances gérés.

gcloud

Créez un groupe d'instances:

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"

Créer un équilibreur de charge

Créez un équilibreur de charge TCP (ILB) à partir du groupe d'instances créé à l'étape précédente.

Ajouter la route personnalisée à l'équilibreur de charge

Ajoutez la route personnalisée à l'équilibreur de charge interne (ILB) dans le même VPC que l'instance Cloud Data Fusion.

Console

Accédez à la page Réseau VPC.

Accéder à la page des réseaux VPC

Dans l'onglet Routes, cliquez sur Créer une route.

Ajouter une route personnalisée

gcloud

Ajoutez la route personnalisée à l'équilibreur de charge interne:

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

Dépannage

Erreurs liées à l'expiration du délai de connexion dans l'aperçu ou Wrangler

Lors de la configuration des contrôles de sortie, une erreur Connection Timeout peut s'afficher.

Pour résoudre le problème, vérifiez que les paramètres suivants sont en place:

Échec de la vérification de l'état du groupe d'instances

Vérifiez que les règles de pare-feu autorisent le trafic TCP, UDP et ICMP provenant de la plage source 130.211.0.0/22,35.191.0.0/16.

Échec du pipeline lors de l'exécution dans Dataproc

Activez Cloud NAT dans la même région et le même réseau que le cluster Dataproc pour accéder à l'Internet public au moment de l'exécution.

Étape suivante