Ce document explique comment effectuer les tâches suivantes :
- Configurer des instances de machines virtuelles (VM) Dataflow pour accéder à Internet
- Utilisez des tags pour sécuriser la mise en réseau des VM de nœud de calcul.
- Définir des règles de pare-feu pour le réseau associé à vos jobs 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 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 servicesGoogle 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 de ses services.
Configurez une adresse IP du point de terminaison 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 APIGoogle Cloud . Toutefois, vous pouvez limiter activement l'accès à un sous-ensemble d'API Google Cloud , par exemple si vous utilisez VPC Service Controls.
Dans ce cas, accordez au minimum l'accès à restricted.googleapis.com
. Si vous utilisez Private Service Connect, accordez l'accès au bundle vpc-sc
.
L'accès à des domaines plus permissifs, tels que private.googleapis.com
, fournit également la fonctionnalité requise.
Pour autoriser l'accès aux API Google Cloud nécessaires via un domaine donné, votre environnement doit répondre aux exigences suivantes :
Les règles de pare-feu doivent autoriser le trafic sortant vers toutes les plages d'adresses du domaine choisi.
Le DNS doit résoudre
*.googleapis.com
vers le domaine de votre choix.
Par exemple, si vos règles de pare-feu limitent le trafic de sortie à la plage d'adresses restricted.googleapis.com
, *.googleapis.com
doit être résolu en adresses appartenant à cette plage.
Pour en savoir plus, consultez 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 garantir l'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 élimine la nécessité 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 des adresses IP externes et internes aux nœuds de calcul. Lorsque vous désactivez des adresses IP externes, le job Dataflow ne peut accéder aux ressources qu'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. Vous pouvez également réduire le nombre d'adresses IP externes que vous consommez par rapport au quota de votre projetGoogle Cloud.
Si vous désactivez les adresses IP externes, vos jobs Dataflow ne pourront pas accéder aux API et 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 l'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 l'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
.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
Go
- Activez l'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
.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
Utiliser des tags pour sécuriser la mise en réseau des VM de nœud de calcul
Les tags vous permettent d'appliquer des règles de pare-feu réseau à des instances de VM spécifiques. Lorsque vous exécutez une tâche Dataflow, vous pouvez spécifier des tags pour les VM de nœud de calcul Dataflow qui exécutent la tâche. Toutes les règles de pare-feu associées à ces tags sont ensuite appliquées aux VM de nœud de calcul Dataflow.
Dataflow accepte deux types de tags pour la mise en réseau des VM :
Utiliser des tags sécurisés avec Dataflow
Les tags sécurisés, également appelés tags régis par Identity and Access Management (IAM), sont des paires clé/valeur que vous créez et gérez dans Resource Manager. Contrairement aux tags réseau, les tags sécurisés sont compatibles avec le contrôle des accès à l'aide d'IAM.
Voici quelques-uns des avantages d'utiliser des tags sécurisés au lieu de tags réseau :
Les tags sécurisés empêchent toute modification non autorisée des tags et les modifications indésirables des règles de pare-feu qui en résultent.
Les stratégies de pare-feu réseau globales et régionales sont compatibles avec les tags sécurisés. En utilisant des tags sécurisés, vous pouvez regrouper plusieurs règles de pare-feu et les mettre à jour simultanément. Les mises à jour sont régies par les contrôles d'accès IAM.
Les tags sécurisés héritent des ressources parentes dans la hiérarchie Google Cloud , ce qui vous permet de définir des tags à des niveaux supérieurs, comme au niveau de l'organisation. Pour en savoir plus, consultez Héritage des tags.
Grâce aux tags sécurisés, les règles de pare-feu d'entrée peuvent inclure des sources dans les réseaux VPC connectés à l'aide de l'appairage de réseaux VPC. Pour les jobs Dataflow, cela signifie qu'une règle de pare-feu peut inclure des sources dans le réseau de VM de nœud de calcul et dans les réseaux VPC appairés.
Pour en savoir plus sur les différences entre les tags sécurisés et les tags réseau, consultez la section Comparaison des tags et des tags réseau.
Pour appliquer des tags sécurisés à un job Dataflow, procédez comme suit :
Configurez des tags sécurisés pour vos règles de stratégie de pare-feu. Pour en savoir plus, consultez Configurer des tags sécurisés.
Attribuez le rôle Utilisateur de tags (
roles/resourcemanager.tagUser
) au compte de service Dataflow sur la ressource (valeurs de tag). Pour en savoir plus sur les autorisations nécessaires, consultez Gérer les tags sur les ressources.Lorsque vous créez le job Dataflow, utilisez l'
use_vm_tags
expérimentation au format suivant :
Java
--experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Python
--experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Modèles Flex
--additional-experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Utiliser des tags réseau avec Dataflow
Les tags réseau sont des attributs textuels que vous pouvez définir dans les règles de pare-feu et associer aux VM Compute Engine. Contrairement aux tags sécurisés, les tags réseau sont des chaînes de texte. Ils ne sont pas une ressource gérée par Resource Manager.
Pour appliquer des tags réseau à un job Dataflow, utilisez l'expérience use_network_tags
comme suit :
Java
--experiments=use_network_tags=TAG_NAME
Python
--experiments=use_network_tags=TAG_NAME
Modèles Flex
Pour activer les tags réseau pour les VM de nœud de calcul Dataflow, utilisez l'option de test use_network_tags
:
--additional-experiments=use_network_tags=TAG_NAME
Pour activer les tags réseau pour les VM de lanceur du modèle Flex, utilisez l'option de test use_network_tags_for_flex_templates
:
--additional-experiments=use_network_tags_for_flex_templates=TAG_NAME
La spécification du tag réseau ajoute également le tag réseau par défaut Dataflow
aux VM du lanceur de modèle Flex.
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 la tâche démarrée, vous ne pouvez plus ajouter de tags réseau à la tâche.
Dataflow ajoute toujours le tag réseau par défaut dataflow
à chaque VM de nœud de calcul qu'il crée.
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 devez uniquement 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 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 consoleGoogle 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 la 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é.