Ce document explique comment effectuer les tâches suivantes:
- Configurer des instances de machine virtuelle (VM) Dataflow pour accéder à Internet
- Créer des tags réseau
- 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 Résoudre les problèmes de mise en réseau Dataflow.
Accès aux API Google Cloud pour Dataflow
Les machines virtuelles (VM) de nœud de calcul Dataflow doivent pouvoir accéder aux API et aux services Google Cloud. L'ensemble des points de terminaison Google Cloud dépendants peut changer au fil du temps, mais ils sont tous compatibles avec VPC Service Controls. Utilisez l'une des méthodes suivantes pour configurer l'accès aux API Google Cloud:
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 les VM de nœud de calcul avec des adresses IP externes.
Par défaut, les règles de pare-feu et les configurations DNS autorisent l'accès aux API Google Cloud. Toutefois, vous pouvez activement restreindre l'accès à un sous-ensemble d'API Google Cloud, par exemple si vous utilisez VPC Service Controls.
Dans ce cas, fournissez au moins un accès à restricted.googleapis.com
. Si vous utilisez Private Service Connect, fournissez l'accès au groupe vpc-sc
.
Fournir un accès à des domaines plus permissifs, tels que private.googleapis.com
, fournit également les fonctionnalités requises.
Pour autoriser l'accès aux API Google Cloud nécessaires via un domaine donné, votre environnement doit respecter les conditions suivantes:
Les règles de pare-feu doivent autoriser la sortie vers toutes les plages d'adresses du domaine choisi.
Le DNS doit résoudre
*.googleapis.com
en fonction du domaine de votre choix.
Par exemple, si vos règles de pare-feu limitent la sortie à la plage d'adresses restricted.googleapis.com
, *.googleapis.com
doit résoudre les adresses de cette plage.
Pour en savoir plus, consultez la section Configurer le DNS pour googleapis.com.
De même, si vous utilisez Private Service Connect, vous devez créer des enregistrements DNS pour le domaine par défaut googleapis.com
afin de vous assurer d'avoir accès à au moins tous les services du bundle vpc-sc
.
Accès Internet pour Dataflow
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 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 vous évite d'accéder à PyPI au moment 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, Dataflow attribue aux nœuds de calcul des adresses IP externes et internes. Lorsque vous désactivez des adresses IP externes, le job Dataflow ne peut accéder aux ressources que dans les 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.
En n'utilisant pas d'adresses IP externes, vous pouvez mieux sécuriser votre infrastructure de traitement de données. Vous pouvez également réduire 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 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;....
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, utilisez 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 qu'à vous assurer que les règles de pare-feu autorisent l'accès aux API Google Cloud.
Sinon, vous devez configurer des règles de pare-feu supplémentaires 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 Utiliser des règles de pare-feu VPC
Présentation des stratégies de pare-feu hiérarchiques et Utiliser des stratégies et des règles 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 ne créez pas de tags réseau personnalisés lorsque vous exécutez le code du 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 créez des tags réseau personnalisés lorsque vous exécutez le code du 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 iproute2
du wiki de The Linux Foundation.
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é.