Configurez VPC Service Controls

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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, l'accès au serveur Web est protégé par le périmètre et l'accès depuis l'extérieur du périmètre est bloqué.

Pour autoriser l'accès depuis l'extérieur du périmètre de service, configurez le niveau d'accès approprié.

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. Assurez-vous que votre périmètre de service comporte les services suivants accessibles par VPC : sinon votre environnement risque de ne pas créer:

    • 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 Security Token Service (sts.googleapis.com)
    • API Cloud Resource Manager (cloudresourcemanager.googleapis.com)
    • API Service Directory (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 de secret

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

  4. Par défaut, l'accès à l'interface utilisateur et à l'API Airflow n'est autorisé qu'à partir de la périmètre de sécurité. Si vous souhaitez le rendre disponible en dehors du périmètre de sécurité, configurez le niveau d'accès de manière appropriée, comme décrit dans la section Autoriser l'accès aux ressources protégées depuis l'extérieur d'un périmètre.

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 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é, à 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é.

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’une un dépôt de clés.

Pour installer des packages PyPI à partir de dépôts situés en dehors de l’espace d’adresses IP privée, procédez comme suit:

  1. Créez un dépôt distant Artifact Registry.
  2. Accorder 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.

Connexions externes

Pour installer des packages PyPI à partir de dépôts situés en dehors de l’espace d’adresses IP privée, procédez comme suit:

  1. Configurez Cloud NAT pour permettre à Cloud 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.

Le compte de service utilisé pour le plan de données Cloud Composer doit disposer des rôles d'autorisation suivants : Composer.Worker et iam.serviceAccountUser.

Configurer la connectivité aux API et services Google

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

Les environnements Cloud Composer utilisent les domaines suivants :

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

  • *.composer.cloud.google.com permet de rendre accessible le serveur Web Airflow de votre environnement. Cette règle doit être appliquée avant de créer un environnement.

    • Vous pouvez également créer une règle pour une région spécifique. Pour ce faire, utiliser REGION.composer.cloud.google.com. Remplacez REGION par la région dans laquelle se trouve l'environnement, par exemple us-central1.
  • (Facultatif) *.composer.googleusercontent.com est utilisé pour accéder au serveur Web Airflow de votre environnement. Cette règle n'est obligatoire que si vous accéder au serveur Web Airflow depuis une instance qui s'exécute dans le réseau VPC et n'est pas obligatoire dans les autres cas. Un scénario courant pour cette règle est lorsque vous souhaitez appeler l'API REST Airflow à partir du réseau VPC.

    • Vous pouvez également créer une règle pour un environnement spécifique. Pour ce faire, utilisez ENVIRONMENT_WEB_SERVER_NAME.composer.googleusercontent.com. Remplacez ENVIRONMENT_WEB_SERVER_NAME par la partie unique de l'URL de l'interface utilisateur Airflow de votre environnement, par exemple bffe6ce6c4304c55acca0e57be23128c-dot-us-central1.
  • *.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 Cloud Composer.

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
*.composer.cloud.google.com composer.cloud.google.com. Nom DNS: *.composer.cloud.google.com.
Type d'enregistrement de ressource: CNAME
Nom canonique: composer.cloud.google.com.
Type d'enregistrement de ressources : A
Adresses IPv4 : 199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7
*.composer.googleusercontent.com
(facultatif, voir la description)
composer.googleusercontent.com. Nom DNS : *.composer.googleusercontent.com.
Type d'enregistrement de ressources : CNAME
Nom canonique : composer.googleusercontent.com.
Type d'enregistrement de ressources : 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 ressources : 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 l'enregistrement CNAME.

    Exemple :

    • Nom DNS: *.pkg.dev.
    • Type d'enregistrement de ressource : CNAME
    • Nom canonique : pkg.dev.
  3. Ajoutez un jeu d'enregistrements avec un 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 la page 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 autres que celles par défaut, telles que des règles qui remplacent les règles de pare-feu implicites ou modifient les règles préremplies du réseau par défaut, vérifiez que les règles de pare-feu suivantes sont configurées.

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

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

  • Consultez la section Utiliser des règles de pare-feu pour apprendre à : les règles de vérification, d'ajout et de mise à jour de 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 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 la configuration comme décrit dans la section 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 principale du sous-réseau de l'environnement TCP, UDP tous
Pods du cluster de l'environnement Sortie Autoriser Plage d'adresses IP secondaire pour les pods du 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
(Si votre environnement utilise Private Service Connect) Sous-réseau de connexion Sortie Autoriser Plage de sous-réseau de connexion Cloud Composer TCP 3306, 3307
(Si votre environnement utilise des pairages VPC) Réseau du locataire Sortie Autoriser Plage d'adresses IP du réseau locataire Cloud Composer TCP 3306, 3307

Pour obtenir les plages d'adresses IP :

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

    1. Dans la console Google Cloud, 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. Cliquez sur le lien Afficher les détails du cluster.

  • Vous pouvez consulter la plage d'adresses IP du réseau locataire Cloud Composer de l'environnement dans l'onglet Configuration de l'environnement.

  • Vous pouvez voir ID du sous-réseau et ID du sous-réseau de connexion Cloud Composer dans l'onglet Configuration de l'environnement. Pour obtenir l'adresse IP 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

Lors de la résolution des problèmes de création d'environnement, vous pouvez analyser les journaux d'audit générées par VPC Service Controls.

En plus des 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 cloud-airflow-prod@system.gserviceaccount.com compte de service à gérer composants de projet 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 d'environnement dans les projets de service et hôte.

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

Étape suivante