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

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:

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:

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

  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;....

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 :

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