Configurer VPC Service Controls

Airflow géré (3e génération) | Airflow géré (2e génération) | Airflow géré (1re génération, version héritée)

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

Les environnements Managed Airflow 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 Managed Airflow.

La compatibilité de VPC Service Controls avec Managed Airflow implique les éléments suivants :

  • Managed Airflow 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 Airflow géré sont configurées pour assurer l'architecture de VPC Service Controls et respecter ses règles.

Le déploiement d'environnements Managed Airflow 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 non autorisées Google Cloud ou des pirates informatiques externes accédant Google Cloud aux ressources depuis Internet

À propos de VPC Service Controls dans Managed Airflow

  • Toutes les contraintes réseau de VPC Service Controls s'appliqueront également à vos environnements Managed Airflow. 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 Managed Airflow 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 Airflow géré est déployé. Cela n'a pas d'incidence sur le comportement des plug-ins du programmeur ou des nœuds de calcul, y compris les opérateurs et les capteurs Airflow.

  • Si un environnement Managed Airflow est protégé par un périmètre, l'accès aux dépôts PyPI publics est restreint. Pour en savoir plus, consultez Installer des packages PyPI dans VPC Service Controls.

  • Si votre environnement utilise la mise en réseau IP privée, tout le trafic interne est acheminé vers votre réseau VPC, à l'exception du trafic vers les API et services Google, et les domaines qui sont disponibles pour les environnements IP privés via l'accès privé à Google.

  • Selon la façon dont vous configurez votre réseau VPC, un environnement IP privé peut accéder à Internet via votre réseau VPC.

  • En mode VPC Service Controls, Managed Airflow 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. Par conséquent, le serveur Web Airflow n'analyse pas les fichiers DAG.

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

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

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

Les étapes suivantes sont nécessaires pour déployer Managed Airflow dans un périmètre :

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

  2. Assurez-vous que votre périmètre de service dispose des services accessibles par VPC suivants. Sinon, la création de votre environnement peut échouer :

    • API Cloud Composer (composer.googleapis.com)
    • API Compute Engine (compute.googleapis.com)
    • API Kubernetes Engine (container.googleapis.com)
    • API Container Registry (containerregistry.googleapis.com)
    • API Artifact Registry (artifactregistry.googleapis.com)
    • API Cloud Storage (storage.googleapis.com)
    • API Cloud SQL Admin (sqladmin.googleapis.com)
    • API Cloud Logging (logging.googleapis.com)
    • API Cloud Monitoring (monitoring.googleapis.com)
    • API Cloud Pub/Sub (pubsub.googleapis.com)
    • API Cloud Resource Manager (cloudresourcemanager.googleapis.com)
    • API de l'Annuaire des services (servicedirectory.googleapis.com)
    • API Cloud Key Management Service (cloudkms.googleapis.com), si vous utilisez des clés Cloud KMS ou CMEK
    • API Secret Manager (secretmanager.googleapis.com), si vous utilisez Secret Manager comme backend secret
  3. Créez un environnement Managed Airflow avec l'adresse IP privée activée. Notez que ce paramètre doit être configuré lors de la création de l'environnement.

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

    • Assurez-vous que la sérialisation des DAG est activée. Si votre environnement utilise Managed Airflow version 1.15.0 ou ultérieure, la sérialisation est activée par défaut.

    • Lors de la création de votre environnement, n'oubliez pas de configurer l'accès au serveur Web Airflow. Pour améliorer la protection, n'autorisez l'accès au serveur Web qu'à partir de plages d'adresses IP spécifiques. Pour en savoir plus, consultez Configurer l'accès réseau au serveur Web.

Ajouter un environnement existant au périmètre

Installer des packages PyPI dans VPC Service Controls

Dans la configuration par défaut de VPC Service Controls, Managed Airflow n'accepte que l'installation de packages PyPI à partir de dépôts privés accessibles depuis l'espace d'adresses IP internes du réseau VPC.

Installer à partir d'un dépôt privé

La configuration recommandée consiste à configurer un dépôt PyPI privé :

  1. Remplissez-le avec les packages approuvés utilisés par votre organisation, puis configurez Airflow géré pour installer des dépendances Python à partir d'un dépôt privé.

  2. Accordez des autorisations supplémentaires pour l'installation de packages à partir de dépôts privés au compte de service de votre environnement, comme décrit dans Contrôle des accès.

Installer à partir d'un dépôt public

Dépôt distant

Il s'agit de l'approche recommandée pour installer des packages à partir d'un dépôt public.

Pour 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. Créez un dépôt distant Artifact Registry.
  2. Accordez à ce dépôt l'accès aux sources en amont.
  3. Configurez Airflow pour installer des packages à partir d'un dépôt Artifact Registry.
  4. Accordez des autorisations supplémentaires pour l'installation de packages à partir de dépôts Artifact Registry au compte de service de votre environnement, comme décrit dans Contrôle des accès.

Connexions externes

Pour 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 à Managed Airflow s'exécutant dans l'espace d'adresses IP privées 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.

Configurer la connectivité aux API et services Google

Dans une configuration VPC Service Controls, pour contrôler le trafic réseau, configurez l'accès aux API et services Google via restricted.googleapis.com. Ce domaine bloque l'accès aux API et services Google qui ne sont pas compatibles avec VPC Service Controls.

Les environnements Managed Airflow utilisent les domaines suivants :

  • *.googleapis.com permet d'accéder à d'autres services Google.

  • *.pkg.dev permet d'obtenir des images d'environnement, par exemple lors de la création ou de la mise à jour d'un environnement.

  • *.gcr.io GKE nécessite une connectivité au domaine Container Registry, quelle que soit la version de Managed Airflow.

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

Domaine Nom DNS Enregistrement CNAME Enregistrement A
*.googleapis.com googleapis.com. Nom DNS : *.googleapis.com.
Type d'enregistrement de ressource : CNAME
Nom canonique : googleapis.com.
Type d'enregistrement de ressource : A
Adresses IPv4 : 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.pkg.dev pkg.dev. Nom DNS : *.pkg.dev.
Type d'enregistrement de ressource : CNAME
Nom canonique : pkg.dev.
Type d'enregistrement de ressource : A
Adresses IPv4 : 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.gcr.io gcr.io. Nom DNS : *.gcr.io.
Type d'enregistrement de ressource : CNAME
Nom canonique : gcr.io.
Type d'enregistrement de ressource : A
Adresses IPv4 : 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

Pour créer une règle DNS :

  1. Créez une zone DNS et utilisez Nom DNS comme nom DNS de cette zone.

    Exemple : pkg.dev.

  2. Ajoutez un jeu d'enregistrements pour Enregistrement CNAME.

    Exemple :

    • Nom DNS : *.pkg.dev.
    • Type d'enregistrement de ressource : CNAME
    • Nom canonique : pkg.dev.
  3. Ajoutez un jeu d'enregistrements avec pour Enregistrement A :

    Exemple :

    • Type d'enregistrement de ressource : A
    • Adresses IPv4 : 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7

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

Configurer des règles de pare-feu

Si votre projet comporte des règles de pare-feu non définies par défaut, telles que des règles qui remplacent les règles de pare-feu implicites ou qui modifient les règles préremplies dans le réseau par défaut, vérifiez que les règles de pare-feu suivantes sont configurées.

Par exemple, Managed Airflow peut ne pas parvenir à créer un environnement si vous disposez d'une règle de pare-feu qui refuse tout le trafic sortant. Pour éviter tout problème, définissez des règles allow sélectives qui suivent la liste et qui ont une priorité plus élevée que la règle deny globale.

Configurez votre réseau VPC pour autoriser le trafic provenant de votre environnement :

  • 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.
  • Vous pouvez utiliser des tags réseau pour limiter davantage l'accès. Vous pouvez définir ces tags lorsque vous créez un environnement.
Description Direction Action Source ou destination Protocoles Ports
DNS

Configurez-le comme décrit dans Compatibilité de VPC Service Controls avec Cloud DNS
- - - - -
API et services Google Sortie Autoriser Adresses IPv4 de restricted.googleapis.com que vous utilisez pour les API et services Google. TCP 443
Nœuds du cluster de l'environnement Sortie Autoriser Plage d'adresses IP principales du sous-réseau de l'environnement TCP, UDP tous
Pods du cluster de l'environnement Sortie Autoriser Plage d'adresses IP secondaires pour les pods dans le sous-réseau de l'environnement TCP, UDP tous
Plan de contrôle du cluster de l'environnement Sortie Autoriser Plage d'adresses IP du plan de contrôle GKE TCP, UDP tous
Serveur Web Sortie Autoriser Plage d'adresses IP du réseau du serveur Web TCP 3306, 3307

Pour obtenir les plages d'adresses IP du cluster de l'environnement :

  • Les plages d'adresses des pods, des services et du plan de contrôle sont disponibles sur la page Clusters du cluster de votre environnement :

    1. Dans la Google Cloud console, accédez à la page Environnements.

      Accéder à la page Environnements

    2. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

    3. Accédez à l'onglet Configuration de l'environnement.

    4. Suivez le lien Afficher les détails du cluster.

  • Vous pouvez voir la plage d'adresses IP du serveur Web de l'environnement dans l'onglet Configuration de l'environnement.

  • Vous pouvez voir l'ID réseau de l'environnement dans l'onglet Configuration de l'environnement. Pour obtenir les plages d'adresses IP d'un sous-réseau, accédez à la page Réseaux VPC et cliquez sur le nom du réseau pour afficher les détails :

    Accéder aux réseaux VPC

Journaux VPC Service Controls

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

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

Le service Managed Airflow utilise le cloud-airflow-prod@system.gserviceaccount.com compte de service pour gérer les composants du projet locataire de vos environnements.

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

Étape suivante