Ce document explique comment configurer des instances de machines virtuelles (VM) Dataflow pour accéder à Internet, créer des tags réseau et définir des règles de pare-feu pour le réseau associé à vos tâches Dataflow.
Ce document nécessite des connaissances de base sur les réseaux Google Cloud. Pour définir un réseau pour votre job Dataflow, consultez la section Spécifier votre réseau et votre sous-réseau. Pour en savoir plus sur la résolution des problèmes de mise en réseau, consultez la page Résoudre les problèmes de mise en réseau Dataflow.
Accès Internet pour Dataflow
Les machines virtuelles (VM) de nœud de calcul Dataflow doivent pouvoir accéder aux API et aux services Google Cloud. Selon votre cas d'utilisation, vos VM peuvent également avoir besoin d'accéder à des ressources extérieures à Google Cloud. Utilisez l'une des méthodes suivantes pour configurer l'accès Internet pour Dataflow :
Configurez les VM de nœud de calcul avec une adresse IP externe afin qu'elles répondent aux conditions d'accès à Internet.
Configurez l'accès privé à Google. Avec l'accès privé à Google, les VM disposant uniquement d'adresses IP internes peuvent accéder aux adresses IP de Google Cloud et ses services.
Configurez une adresse IP du point de terminaison de Private Service Connect pour accéder aux API et aux services Google Cloud.
Configurez une solution NAT, telle que Cloud NAT. Cette option permet d'exécuter des tâches qui accèdent à des API et à des services en dehors de Google Cloud qui nécessitent un accès à Internet. Par exemple, les jobs du SDK Python peuvent nécessiter l'accès à l'index de packages Python (PyPI) pour télécharger les dépendances des pipelines. Dans ce cas, vous devez configurer les VM de calcul avec des adresses IP externes ou utiliser Cloud NAT. Vous pouvez également fournir des dépendances de pipeline Python lors de l'envoi de jobs. Par exemple, vous pouvez utiliser des conteneurs personnalisés pour fournir des dépendances de pipeline Python, ce qui évite d'avoir à accéder à PyPI lors de l'exécution.
Pour en savoir plus, consultez la page Gérer les dépendances de pipeline Python dans la documentation Apache Beam.
Désactiver l'adresse IP externe
Par défaut, le service Dataflow attribue aux nœuds de calcul des adresses IP externes et internes. Lorsque vous désactivez des adresses IP externes, le pipeline Dataflow peut accéder aux ressources uniquement aux emplacements suivants :
- Une autre instance du même réseau VPC
- Un réseau VPC partagé
- Un réseau sur lequel l'appairage de réseaux VPC est activé
Sans adresses IP externes, vous pouvez toujours effectuer des tâches d'administration et de surveillance. Vous pouvez accéder à vos nœuds de calcul à l'aide de SSH en définissant les options définies dans la liste précédente. Toutefois, le pipeline ne peut accéder à Internet, et les hôtes Internet ne peuvent pas accéder à vos nœuds de calcul Dataflow.
L'utilisation d'adresses IP externes permet de mieux sécuriser votre infrastructure de traitement de données. En outre, vous réduisez également le nombre d'adresses IP externes que vous consommez par rapport au quota de votre projet Google Cloud.
Si vous désactivez les adresses IP externes, vos tâches Dataflow ne peuvent pas accéder aux API et aux services en dehors de Google Cloud qui nécessitent un accès à Internet.
Pour en savoir plus sur la configuration de l'accès à Internet pour les tâches avec des adresses IP internes, consultez la section précédente.
Pour désactiver les adresses IP externes, effectuez l'une des opérations suivantes :
Java
- Activez Accès privé à Google pour votre réseau ou votre sous-réseau.
- Dans les paramètres de votre tâche Dataflow, spécifiez
--usePublicIps=false
, ainsi que--network=NETWORK-NAME
ou--subnetwork=SUBNETWORK-NAME
.Selon votre choix, remplacez l'un des éléments suivants :
- NETWORK-NAME : nom de votre réseau Compute Engine
- SUBNETWORK-NAME : nom de votre sous-réseau Compute Engine
Python
- Pour mettre en scène toutes les dépendances de package Python, suivez les instructions de dépendance du pipeline Apache Beam.
- Activez Accès privé à Google pour votre réseau ou votre sous-réseau.
- Dans les paramètres de votre tâche Dataflow, spécifiez
--no_use_public_ips
, ainsi que--network=NETWORK
ou--subnetwork=SUBNETWORK
. - NETWORK-NAME : nom de votre réseau Compute Engine
- SUBNETWORK-NAME : nom de votre sous-réseau Compute Engine
Selon votre choix, remplacez l'un des éléments suivants :
Go
- Activez Accès privé à Google pour votre réseau ou votre sous-réseau.
- Dans les paramètres de votre tâche Dataflow, spécifiez
--no_use_public_ips
, ainsi que--network=NETWORK
ou--subnetwork=SUBNETWORK
. - NETWORK-NAME : nom de votre réseau Compute Engine
- SUBNETWORK-NAME : nom de votre sous-réseau Compute Engine
Selon votre choix, remplacez l'un des éléments suivants :
Tags réseau pour Dataflow
Les tags réseau sont des attributs textuels que vous pouvez associer aux VM Compute Engine. Les tags réseau vous permettent d'appliquer des règles de pare-feu de réseau VPC et des routes statiques personnalisées à des instances de VM spécifiques. Dataflow permet d'ajouter des tags réseau à toutes les VM de nœud de calcul qui exécutent une tâche Dataflow particulière.
Même si vous n'utilisez pas le paramètre réseau, Dataflow ajoute toujours le tag réseau par défaut dataflow
à chaque VM de nœud de calcul qu'il crée.
Activer les tags réseau
Vous ne pouvez spécifier les tags réseau que lorsque vous exécutez le modèle de tâche Dataflow pour créer une tâche. Une fois la tâche démarrée, vous ne pouvez plus ajouter de tags réseau à la tâche. Pour appliquer des tags réseau supplémentaires à une tâche, vous devez recréer votre modèle de tâche avec les tags réseau requis.
Ajoutez les éléments suivants au code de votre pipeline, que vous l'exécutiez en Java ou en Python :
--experiments=use_network_tags=TAG-NAME
Remplacez TAG-NAME par les noms de vos tags. Si vous indiquez plusieurs tags, ajoutez un point-virgule (;
) après chaque tag, comme dans l'exemple suivant : TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;....
Même si vous n'utilisez pas ce paramètre, Dataflow ajoute toujours le tag réseau dataflow
à chaque VM de nœud de calcul qu'il a créée.
Activer les tags réseau pour les VM du modèle Flex
Lorsque vous utilisez des modèles Flex, pour activer les tags réseau pour les VM de nœud de calcul Dataflow, utilisez l'option --additional-experiments
comme indiqué dans l'exemple suivant :
--additional-experiments=use_network_tags=TAG-NAME
Pour activer les tags réseau pour les VM de nœud de calcul et de lanceur, vous devez utiliser les deux options suivantes :
--additional-experiments=use_network_tags=TAG-NAME
--additional-experiments=use_network_tags_for_flex_templates=TAG-NAME
Remplacez TAG-NAME par les noms de vos tags. Si vous indiquez plusieurs tags, ajoutez un point-virgule (;
) après chaque tag, comme dans l'exemple suivant : TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;....
Une fois les tags réseau activés, ils sont analysés et associés aux VM.
Consultez les limites applicables aux tags réseau.
Règles de pare-feu pour Dataflow
Les règles de pare-feu permettent d'autoriser ou de refuser le trafic depuis et vers vos VM. Si vos tâches Dataflow utilisent Dataflow Shuffle ou Streaming Engine, vous n'avez pas besoin de configurer de règles de pare-feu. Sinon, vous devez configurer des règles de pare-feu afin que les VM Dataflow puissent envoyer et recevoir du trafic réseau sur le port TCP 12345
pour les jobs par flux et sur le port TCP 12346
pour les jobs par lot.
Un propriétaire, éditeur ou administrateur de sécurité d'un projet doit créer les règles de pare-feu nécessaires dans le réseau VPC utilisé par les VM Dataflow.
Avant de configurer des règles de pare-feu pour Dataflow, lisez les documents suivants :
Présentation des règles de pare-feu VPC et Utilisation des règles de pare-feu
Présentation des stratégies de pare-feu hiérarchiques et Utilisation des stratégies de pare-feu hiérarchiques
Lorsque vous créez des règles de pare-feu pour Dataflow, spécifiez les tags réseau Dataflow. Sinon, les règles de pare-feu s'appliquent à toutes les VM du réseau VPC.
Le cas échéant, les stratégies de pare-feu hiérarchiques sont évaluées en premier et ces règles préemptent les règles de pare-feu VPC. Si la tâche Dataflow se trouve dans un projet faisant partie d'un dossier ou d'une organisation dans lequel des stratégies de pare-feu hiérarchiques sont utilisées, le rôle compute.orgFirewallPolicyAdmin
est requis pour modifier les stratégies.
Si vous n'avez pas créé de tags réseau personnalisés lors de l'exécution du code de pipeline, les VM Dataflow utilisent le tag dataflow
par défaut. En l'absence de tags réseau personnalisés, créez les règles de pare-feu avec le tag dataflow
par défaut.
Si vous avez créé des tags réseau personnalisés lors de l'exécution du code de pipeline, les VM Dataflow utilisent ces tags. Créez les règles de pare-feu avec les tags personnalisés.
Certains réseaux VPC, comme le réseau default
créé automatiquement, incluent une règle default-allow-internal
qui répond aux exigences de pare-feu de Dataflow.
Exemple de règle d'entrée de pare-feu
La règle de pare-feu d'entrée permet aux VM Dataflow de recevoir des paquets entre elles. Vous devez toujours créer des règles de pare-feu autorisant les entrées, ou le trafic sera toujours bloqué, même si les règles de sortie autorisent ce trafic.
Dans l'exemple suivant, une règle d'entrée de pare-feu est créée pour Dataflow, où toutes les VM de nœud de calcul possèdent le tag réseau par défaut dataflow
. Un propriétaire de projet, éditeur de projet ou administrateur de sécurité peut utiliser la commande gcloud
suivante pour créer une règle d'autorisation du trafic entrant qui autorise le trafic sur les ports TCP 12345
et 12346
à partir des VM associées au tag réseau dataflow
vers des VM possédant le même tag :
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INGRESS \
--action=allow \
--direction=ingress \
--network=NETWORK \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Remplacez les éléments suivants :
FIREWALL_RULE_NAME_INGRESS
: nom de la règle de pare-feuNETWORK
: nom du réseau utilisé par vos VM de nœud de calculCUSTOM_TAG
: liste de tags réseau séparés par une virguleVoici une liste des consignes concernant l'utilisation des tags réseau :
Si vous omettez
--target-tags
, la règle s'applique à toutes les VM du réseau VPC.Si vous omettez
--source-tags
et toutes les autres spécifications de source, le trafic provenant de n'importe quelle source est autorisé.Si vous n'avez pas spécifié de tags réseau personnalisés et que vous souhaitez que la règle soit spécifique aux VM Dataflow, utilisez
dataflow
comme tag réseau.Si vous avez spécifié des tags réseau personnalisés et que vous souhaitez que la règle soit spécifique aux VM Dataflow, utilisez vos tags réseau personnalisés.
PRIORITY_NUM
: priorité de la règle de pare-feuLes nombres inférieurs ont des priorités plus élevées et 0 est la priorité la plus élevée.
Exemple de règle de sortie de pare-feu
La règle de pare-feu de sortie permet aux VM Dataflow d'échanger des paquets entre elles. Si vous avez créé des règles de refus du trafic sortant pour le pare-feu, vous devrez peut-être créer des règles de pare-feu personnalisées autorisant le trafic sortant sur votre réseau VPC.
Dans cet exemple, une règle de pare-feu de sortie est créée pour Dataflow, où toutes les VM de nœud de calcul possèdent le tag réseau par défaut dataflow
. Un propriétaire de projet, éditeur de projet ou administrateur de sécurité peut utiliser la commande gcloud
suivante pour créer une règle d'autorisation du trafic sortant qui autorise le trafic depuis les ports TCP 12345
et 12346
sur des VM associées au tag réseau dataflow
vers des VM possédant le même tag :
gcloud compute firewall-rules create FIREWALL_RULE_NAME_EGRESS \
--network=NETWORK \
--action=allow \
--direction=egress \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--destination-ranges=DESTINATION-RANGES\
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Remplacez les éléments suivants :
FIREWALL_RULE_NAME_EGRESS
: nom de la règle de pare-feuNETWORK
: nom du réseau utilisé par vos VM de nœud de calculCUSTOM_TAG
: liste de tags réseau séparés par une virguleVoici une liste des consignes concernant l'utilisation des tags réseau :
Si vous omettez
--target-tags
, la règle s'applique à toutes les VM du réseau VPC.Si vous omettez
--source-tags
et toutes les autres spécifications de source, le trafic provenant de n'importe quelle source est autorisé.Si vous n'avez pas spécifié de tags réseau personnalisés et que vous souhaitez que la règle soit spécifique aux VM Dataflow, utilisez
dataflow
comme tag réseau.Si vous avez spécifié des tags réseau personnalisés et que vous souhaitez que la règle soit spécifique aux VM Dataflow, utilisez vos tags réseau personnalisés.
DESTINATION-RANGES
: liste de plages CIDR séparées par des virgulesIncluez la plage d'adresses IP principale du sous-réseau sélectionné.
PRIORITY_NUM
: priorité de la règle de pare-feuLes nombres inférieurs ont des priorités plus élevées et 0 est la priorité la plus élevée.
Pour les ports TCP spécifiques utilisés par Dataflow, vous pouvez afficher le fichier manifeste du conteneur du projet. Le fichier manifeste du conteneur spécifie explicitement les ports afin de faire correspondre les ports hôtes dans le conteneur.
Accès SSH aux VM de calcul
Dataflow ne nécessite pas SSH. Cependant, SSH est utile pour le dépannage.
Si votre VM de nœud de calcul dispose d'une adresse IP externe, vous pouvez vous connecter à la VM via la console Google Cloud ou à l'aide de Google Cloud CLI. Pour vous connecter via SSH, vous devez disposer d'une règle de pare-feu qui autorise les connexions entrantes sur le port TCP 22 au moins depuis l'adresse IP du système sur lequel vous exécutez gcloud
ou du système exécutant le navigateur Web que vous utilisez pour accéder à la console Google Cloud.
Vous pouvez consulter la configuration et l'activité réseau en ouvrant une session SSH sur l'un de vos nœuds de calcul, puis en exécutant iproute2
. Pour en savoir plus, consultez la page concernant iproute2
.
Si vous devez vous connecter à une VM de calcul disposant uniquement d'une adresse IP interne, consultez la section Choisir une option de connexion pour les VM internes uniquement.
Étapes suivantes
- Découvrez l'outil Tests de connectivité. Tests de connectivité est un outil de diagnostic qui vous permet de vérifier la connectivité entre les points de terminaison du réseau.
- Créez et exécutez l'outil Tests de connectivité.