Configurer des règles d'accès à Internet et de pare-feu

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 tâche Dataflow, consultez la section Spécifier votre réseau et votre sous-réseau.

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'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, 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 :

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

  1. Activez Accès privé à Google pour votre réseau ou votre sous-réseau.
  2. 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

  1. Pour mettre en scène toutes les dépendances de package Python, suivez les instructions de dépendance du pipeline Apache Beam.
  2. Activez Accès privé à Google pour votre réseau ou votre sous-réseau.
  3. Dans les paramètres de votre tâche Dataflow, spécifiez --no_use_public_ips, ainsi que --network=NETWORK ou --subnetwork=SUBNETWORK.
  4. 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

  1. Activez Accès privé à Google pour votre réseau ou votre sous-réseau.
  2. Dans les paramètres de votre tâche Dataflow, spécifiez --no_use_public_ips, ainsi que --network=NETWORK ou --subnetwork=SUBNETWORK.
  3. 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

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 :

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-feu

  • NETWORK : nom du réseau utilisé par vos VM de nœud de calcul

  • CUSTOM_TAG : liste de tags réseau séparés par une virgule

    Voici 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-feu

    Les 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 \
    --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-feu

  • NETWORK : nom du réseau utilisé par vos VM de nœud de calcul

  • CUSTOM_TAG : liste de tags réseau séparés par une virgule

    Voici 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 virgules

    Incluez la plage d'adresses IP principale du sous-réseau sélectionné.

  • PRIORITY_NUM : priorité de la règle de pare-feu

    Les 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 nœud de calcul disposant uniquement d'une adresse IP interne, consultez la page Choisir une option de connexion pour les VM internes uniquement.