Cette section décrit l'architecture de haut niveau permettant d'établir des conditions de sortie des instances privées Cloud Data Fusion pendant le développement et d'exécution du pipeline.
Le schéma 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 :
Vous pouvez contrôler les connexions aux applications SaaS et aux services cloud publics tiers lors du développement ou de l'exécution du pipeline, en acheminant tout le trafic de sortie via les projets clients. Ce processus utilise les ressources suivantes :
Une route de réseau VPC personnalisé : 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 de VPC.
VM proxy: une VM proxy achemine le trafic sortant de Google Cloud à partir du projet locataire Cloud Data Fusion vers la destination spécifiée via l'Internet public. Créez et gérez une VM de passerelle dans vos projets clients. Il est recommandé de les configurer dans une configuration de haute disponibilité à l'aide d'un équilibreur de charge interne (ILB). Si plusieurs instances Cloud Data Fusion privées utilisent le même réseau VPC, vous pouvez réutiliser la même VM dans le VPC.
Avant de commencer
Vous pouvez vous connecter à une source publique à partir d'une instance privée dans Cloud Data Fusion 6.4 ou version ultérieure Pour utiliser l'une de ces versions, vous pouvez créer une instance Cloud Data Fusion privée ou mettre à niveau une instance existante.
Lorsque vous créez une connexion d'appairage de réseaux VPC pour votre instance, sélectionnez Exporter les routes.
Configurer le contrôle de sortie lors du développement du pipeline
Le contrôle de sortie vous permet de contrôler ou de filtrer ce qui peut sortir de votre réseau, ce qui est utile dans les environnements VPC Service Controls. Il n'existe aucun proxy réseau préféré pour effectuer cette tâche. Voici quelques exemples de proxys :Proxy Squid ,HAProxy etEnvoy.
Les exemples de ce guide décrivent comment configurer un proxy HTTP pour le filtrage HTTP sur des instances de VM utilisant une image Debian. Les exemples utilisent un serveur proxy Squid, qui est l'un des moyens de configurer un serveur proxy.
Créer une machine virtuelle proxy
Créez une VM dans le même VPC que votre instance Cloud Data Fusion privée avec le script de démarrage et le transfert IP suivants.
Ce script installe le proxy Squid et le configure pour intercepter le trafic HTTP, et autoriser les domaines .squid-cache.org
et .google.com
. Vous pouvez remplacer ces domaines par les domaines que vous souhaitez connecter à votre instance Cloud Data Fusion.
Console
Accédez à la page Instances de VM.
Cliquez sur Create instance (Créer une instance).
Utilisez le VPC pour lequel l'appairage de réseaux est configuré avec l'instance Cloud Data Fusion privée. Pour en savoir plus sur d'appairage de réseaux VPC dans ce scénario, consultez Avant de commencer
Activez le transfert IP pour l'instance au sein du même réseau que l'instance Cloud Data Fusion.
Dans le champ Script de démarrage, saisissez le script suivant :
#! /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
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 la console Google Cloud, consultez la section Ajouter une route statique.
Lorsque vous configurez la route, procédez comme suit:
- Définissez la priorité sur supérieur ou égal à
1001
. - Utilisez le même projet et le même VPC que l'instance Cloud Data Fusion privée.
- Assurez-vous que la configuration de l'appairage de réseaux VPC permet d'exporter de configuration, de sorte que le VPC du projet locataire Cloud Data Fusion importe via l'appairage de réseaux VPC.
gcloud
Pour créer votre route dans 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
Configurer le contrôle de sortie pour l'exécution de pipelines
Une fois que vous êtes en mesure d'accéder à l'Internet public avec les noms d'hôte autorisés dans Aperçu et Wrangler dans votre environnement de conception, déployez votre pipeline. Les pipelines Cloud Data Fusion déployés s'exécutent par défaut sur les clusters Dataproc.
Pour garantir que tout le trafic Internet public provenant du le cluster Dataproc passe par une ou plusieurs VM de proxy, ajoutez le une zone et des enregistrements DNS privés. Cette étape est obligatoire, car Cloud NAT sont compatibles avec le filtrage.
Dans les enregistrements DNS, incluez l'adresse IP de la VM proxy ou de l'équilibreur de charge interne.
Déployer votre pipeline
Après avoir vérifié le pipeline lors de la phase de conception, pour déployer votre pipeline. Par défaut, les pipelines déployés s'exécutent sur les clusters Dataproc.
Pour vous assurer que tout le trafic Internet public du cluster Dataproc passe par une ou plusieurs VM proxy, ajoutez une route personnalisée avec des tags d'instance proxy
et une priorité 1000
au même VPC que les VM Dataproc :
Modifier votre pipeline pour utiliser des tags Dataproc, car Cloud NAT n'est actuellement pas compatible avec le filtrage de sortie.
Étape suivante
- En savoir plus sur la mise en réseau dans Cloud Data Fusion.