Configurer VPC Service Controls

Virtual Private Cloud Service Controls (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

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 à la liste d'autorisation le compte de service suivant en l'ajoutant à un AccessLevel et en l'associant au périmètre de service :

    • cloud-logs@system.gserviceaccount.com : ce compte de service permet à Cloud Composer de stocker les journaux dans le service Cloud Monitoring de votre projet.
  3. Ajoutez les services suivants au périmètre pour une protection maximale de votre environnement : Cloud SQL, Pub/Sub, Monitoring, Cloud Storage, Kubernetes Engine, Container Registry.

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

  5. Activez la sérialisation des DAG dans la base de données Airflow. Pour ce faire, ajoutez le remplacement de configuration de [core] store_serialized_dags=True et [core] store_dag_code=True dans la section core lors de la création d'un environnement. Pour en savoir plus, consultez la section Activer la sérialisation des DAG.

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

  7. 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 5 de la section Créer un environnement.

Configurer des environnements existants avec VPC Service Controls

Si votre environnement répond à certaines conditions, vous pouvez configurer Cloud Composer pour qu'il fonctionne dans un périmètre :

  1. L'environnement a été créé à l'aide de l'API Composer bêta, avec l'option Adresse IP privée activée.

  2. La sérialisation des DAG est activée.

Si ces conditions sont remplies, vous pouvez ajouter le projet contenant votre environnement au périmètre, en supposant que le périmètre a été créé comme décrit dans la section ci-dessus.

Installer des packages PyPI

Dans la configuration par défaut de VPC Service Controls (comme illustré ci-dessus), 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 et qu'ils sont tolérables. 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.

  • Accédez à la section Réseau VPC > Pare-feu dans Cloud Console et vérifiez que les règles de pare-feu suivantes sont configurées :

    • Autorisez la sortie de la plage d'adresses IP du nœud GKE vers n'importe quel emplacement, port 53.
    • Autorisez la sortie de la plage d'adresses IP du nœud GKE vers la plage d'adresses IP du nœud GKE, 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

    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.

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

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

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'activation de la sérialisation des DAG empêche Airflow d'afficher un modèle rendu avec des fonctions dans l'interface utilisateur Web. Ce problème sera peut-être résolu dans une version ultérieure d'Airflow et de Cloud Composer.

  • 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 dans 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.