Configurez VPC Service Controls

Cloud Composer 1 | Cloud Composer 2

VPC Service Controls permet aux organisations de définir un périmètre autour des ressources Google Cloud afin de limiter les risques d'exfiltration de données.

Les environnements Cloud Composer peuvent être déployés dans un périmètre de service. En configurant votre environnement avec VPC Service Controls, vous pouvez garder vos données sensibles privées tout en profitant des fonctionnalités d'orchestration des workflows entièrement gérées de Cloud Composer.

La compatibilité de VPC Service Controls pour Cloud Composer implique les éléments suivants :

  • Cloud Composer peut désormais être sélectionné en tant que service sécurisé dans un périmètre VPC Service Controls.
  • Toutes les ressources sous-jacentes utilisées par Cloud Composer sont configurées pour assurer l'architecture de VPC Service Controls et respecter ses règles.

Le déploiement d'environnements Cloud Composer avec VPC Service Controls offre les avantages suivants :

  • Réduction du risque d'exfiltration des données
  • Protection contre l'exposition des données en raison d'une mauvaise configuration des contrôles des accès
  • Réduction du risque de copie des données par des utilisateurs malveillants vers des ressources Google Cloud non autorisées ou des pirates informatiques externes accédant aux ressources Google Cloud depuis Internet

Serveur Web Airflow en mode VPC Service Controls

En mode VPC Service Controls, Cloud Composer exécute deux instances du serveur Web Airflow. Identity-Aware Proxy équilibre la charge du trafic utilisateur entre ces instances. Les serveurs Web Airflow s'exécutent en mode lecture seule dont les conséquences sont les suivantes :

  • La sérialisation des DAG est activée. Le serveur Web Airflow n'analyse donc pas les fichiers de définition DAG.

  • Les plug-ins ne sont pas synchronisés avec le serveur Web. Vous ne pouvez donc pas modifier ou étendre les fonctionnalités du serveur Web avec des plug-ins.

  • Le serveur Web Airflow utilise une image de conteneur préconfigurée par le service Cloud Composer. Si vous installez des images PyPI dans votre environnement, elles ne sont pas installées sur l'image de conteneur du serveur Web.

Nous vous recommandons de protéger l'accès au serveur Web Airflow au moyen de LCA réseau. Vous pouvez spécifier les plages d'adresses IP pouvant accéder au serveur Web Airflow pour un nouvel environnement ou un environnement existant.

Créer un périmètre de service

Pour savoir comment créer et configurer des périmètres de service, consultez la page Créer un périmètre de service. Veillez à sélectionner Cloud Composer comme l'un des services sécurisés au sein du périmètre.

Créer des environnements dans un périmètre

Certaines étapes supplémentaires sont requises pour déployer Cloud Composer dans un périmètre. Lors de la création d'un environnement Cloud Composer :

  1. Activez l'API Access Context Manager et l'API Cloud Composer pour votre projet. Consultez la section Activer des API.

  2. Ajoutez les services suivants au périmètre de protection maximale de votre environnement : Cloud SQL, Pub/Sub, Monitoring, Cloud Storage, Kubernetes Engine, Container Registry, Artifact Registry et Compute Engine.

  3. Utilisez la version composer-1.10.4 ou ultérieure.

  4. Assurez-vous que la sérialisation des DAG est activée. Si votre environnement utilise Cloud Composer version 1.15.0 et ultérieure, la sérialisation est activée par défaut.

  5. Créez un environnement Cloud Composer où l'option Adresse IP privée est activée. Notez que ce paramètre doit être configuré lors de la création de l'environnement.

  6. Lors de la création de votre environnement, n'oubliez pas de configurer l'accès au serveur Web Airflow. Pour bénéficier d'une protection maximale, autorisez uniquement l'accès au serveur Web à partir de plages d'adresses IP spécifiques. Pour en savoir plus, consultez l'étape "Configurer l'accès au réseau du serveur Web" de la page Créer un environnement.

Configurer des environnements existants avec VPC Service Controls

Vous pouvez ajouter le projet contenant votre environnement au périmètre si :

Installer des packages PyPI

Dans la configuration par défaut de VPC Service Controls, Cloud Composer n'accepte que l'installation de packages PyPI à partir de dépôts privés accessibles depuis l'espace d'adresses IP privées du réseau VPC. La configuration recommandée pour ce processus consiste à configurer un dépôt PyPI privé, à le remplir avec les packages approuvés utilisés par votre organisation, puis à configurer Cloud Composer pour installer des dépendances Python à partir d'un dépôt privé.

Il est également possible d'installer des packages PyPI à partir de dépôts situés en dehors de l'espace d'adresses IP privées. Procédez comme suit :

  1. Configurez Cloud NAT pour permettre à Composer de s'exécuter dans l'espace d'adresses IP privées et de se connecter à des dépôts PyPI externes.
  2. Configurez vos règles de pare-feu pour autoriser les connexions sortantes du cluster Composer vers le dépôt.

Lorsque vous utilisez cette configuration, assurez-vous que vous comprenez bien les risques liés à l'utilisation de dépôts externes. Assurez-vous que le contenu et l'intégrité des dépôts externes sont fiables, car ces connexions peuvent être utilisées comme vecteur d'exfiltration.

Checklist de configuration du réseau

Pour que vous puissiez créer des environnements Cloud Composer dans un périmètre, votre réseau VPC doit être configuré correctement. Veillez à respecter les exigences de configuration répertoriées ci-dessous.

Règles de pare-feu

Accédez à la section VPC network -> Firewall (Réseau VPC -> Firewall) de la console, puis vérifiez que les règles de pare-feu suivantes sont configurées.

  • Configurez le service DNS dans votre VPC comme décrit dans la section Compatibilité de VPC Service Controls avec Cloud DNS. Vous pouvez également autoriser la sortie de la plage d'adresses IP du nœud GKE vers n'importe quel emplacement sur le port 53.

  • Autoriser le trafic entrant et sortant de la plage d'adresses IP de nœuds GKE vers la plage d'adresses IP des nœuds GKE, tous les ports.

  • Autorisez le trafic entrant et sortant entre la plage d'adresses IP de nœuds GKE et la plage d'adresses IP des pods, tous ports.

  • Autorisez le trafic entrant et sortant entre la plage d'adresses IP du nœud GKE et la plage d'adresses IP des services, tous ports.

  • Autorise le trafic d'entrée et de sortie entre les pods GKE et les plages d'adresses IP des services, tous les ports.

  • Autorisez la sortie de la plage d'adresses IP du nœud GKE vers la plage d'adresses IP maître GKE, tous les ports.

  • Autorisez la sortie de la plage d'adresses IP du nœud GKE vers 199.36.153.4/30, port 443 (restricted.googleapis.com).

  • Autorisez l'entrée provenant des vérifications de l'état GCP 130.211.0.0/22,35.191.0.0/16 vers la plage d'adresses IP du nœud. Ports TCP 80 et 443.

  • Autorisez la sortie de la plage d'adresses IP du nœud vers les vérifications de l'état de GCP. Ports TCP 80 et 443.

  • Autorisez la sortie de la plage d'adresses IP du nœud GKE vers la plage d'adresses IP du serveur Web, ports TCP 3306 et 3307.

Consultez la page Utiliser des règles de pare-feu pour apprendre à vérifier, ajouter et mettre à jour des règles pour votre réseau VPC. Utilisez l'outil de connectivité pour valider la connectivité entre les plages d'adresses IP mentionnées ci-dessus.

Connectivité au point de terminaison restricted.googleapis.com

Configurez la connectivité au point de terminaison restricted.googleapis.com :

  • Vérifiez l'existence d'une mise en correspondance DNS entre *.googleapis.com et restricted.googleapis.com.

  • Le DNS *.gcr.io doit correspondre à 199.36.153.4/30 de la même manière que le point de terminaison final googleapis.com. Pour ce faire, créez une zone comme suit : CNAME *.gcr.io -> gcr.io. A gcr.io. -> 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7.

  • Le DNS *.pkg.dev doit correspondre à 199.36.153.4/30 de la même manière que le point de terminaison final googleapis.com. Pour ce faire, créez une zone comme suit : CNAME *.pkg.dev -> pkg.dev. A pkg.dev. -> 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7.

  • Le DNS *.composer.cloud.google.com doit correspondre à 199.36.153.4/30 de la même manière que le point de terminaison final googleapis.com. Pour ce faire, créez une zone comme suit : CNAME *.composer.cloud.google.com -> composer.cloud.google.com. A composer.cloud.google.com. -> 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7.

Pour en savoir plus, consultez la page Configurer une connectivité privée aux API et services Google.

Journaux VPC Service Controls

Pour résoudre les problèmes de création d'environnement, vous pouvez analyser les journaux d'audit générés par VPC Service Controls.

En plus d'autres messages de journal, vous pouvez consulter les journaux pour obtenir des informations sur les comptes de service cloud-airflow-prod@system.gserviceaccount.com et service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com qui configurent les composants de vos environnements.

Le service Cloud Composer utilise le compte de service cloud-airflow-prod@system.gserviceaccount.com pour gérer les composants des projets locataires de vos environnements.

Le compte de service service-PROJECT_ID@cloudcomposer-accounts.iam.gserviceaccount.com, également appelé Composer Service Agent Service Account, gère les composants de l'environnement dans les projets de service et hôtes.

Limites

  • Toutes les contraintes réseau de VPC Service Controls s'appliqueront également à vos environnements Cloud Composer. Pour en savoir plus, consultez la documentation de VPC Service Controls.
  • L'affichage d'un modèle rendu avec des fonctions dans l'interface utilisateur Web avec la sérialisation des DAG activée est compatible avec les environnements exécutant Composer version 1.12.0 ou ultérieure et Airflow version 1.10.9 ou ultérieure.

  • Il n'est pas possible de définir l'option async_dagbag_loader sur True lorsque la sérialisation des DAG est activée.

  • L'activation de la sérialisation des DAG désactive tous les plug-ins du serveur Web Airflow, car ils peuvent compromettre la sécurité du réseau VPC sur lequel Cloud Composer est déployé. Cela n'a pas d'incidence sur le comportement des plug-ins du programmeur ou du nœud de calcul, y compris les opérateurs Airflow, les capteurs, etc.

  • Lorsque Cloud Composer s'exécute à l'intérieur d'un périmètre, l'accès aux dépôts PyPI publics est restreint. Consultez la section Installer des dépendances Python pour apprendre à installer des modules PyPI en mode adresse IP privée.