Utiliser VPC Service Controls (VPC SC)

VPC Service Controls est une fonctionnalité de Google Cloud qui vous permet de configurer un périmètre sécurisé pour vous protéger contre l'exfiltration de données. L'URL par défaut run.app et les domaines personnalisés sont soumis à VPC Service Controls. Ce guide explique comment utiliser VPC Service Controls avec Cloud Run pour renforcer la sécurité de vos services.

Limites et conseils

  • Pour Artifact Registry ou Container Registry :

    • Le registre dans lequel vous stockez votre conteneur doit se trouver dans le même périmètre de service VPC Service Controls que le projet sur lequel vous effectuez le déploiement.
    • Le code en cours de compilation doit se trouver dans le même périmètre que le registre vers lequel le conteneur est transféré.
  • La fonctionnalité de déploiement continu n'est pas disponible pour les projets situés dans un périmètre VPC Service Controls.

  • Lorsque les services Cloud Run sont appelés, l'application de la stratégie VPC Service Controls n'utilise pas les informations d'authentification IAM du client. Ces requêtes présentent les limites suivantes :

    • Les règles de stratégie d'entrée VPC Service Controls qui utilisent des comptes principaux IAM ne sont pas compatibles.
    • Les niveaux d'accès des périmètres VPC Service Controls qui utilisent des comptes principaux IAM ne sont pas acceptés.

Configurer votre organisation à des fins de compatibilité avec VPC Service Controls

Pour utiliser VPC Service Controls avec Cloud Run, vous pouvez configurer un périmètre de service au niveau de l'organisation. En configurant des règles d'administration appropriées, vous pouvez vous assurer que les vérifications VPC Service Controls s'appliquent lors de l'utilisation de Cloud Run, et que les développeurs peuvent seulement déployer des services conformes à VPC Service Controls. En savoir plus sur l'héritage et les cas de non-respect lors de la définition d'une règle d'administration.

Configurer un périmètre VPC Service Controls

Les étapes suivantes montrent comment configurer un périmètre VPC Service Controls.

  1. Assurez-vous de disposer des rôles requis pour administrer VPC Service Controls.

  2. Dans Google Cloud Console, accédez à la page VPC Service Controls.

    Accéder à la page "VPC Service Controls"

  3. Si vous y êtes invité, sélectionnez votre organisation.

  4. Cliquez sur Gérer les règles d'accès. Sélectionnez une règle d'accès ou créez-en une. La règle d'accès doit inclure tous les projets que vous souhaitez ajouter au périmètre.

  5. Cliquez sur Nouveau périmètre. Saisissez un nom pour le périmètre.

  6. Sélectionnez les projets que vous souhaitez sécuriser au sein du périmètre :

    1. Cliquez sur Projets.

    2. Dans la fenêtre Ajouter des projets, sélectionnez les projets que vous souhaitez ajouter.

      Si vous utilisez un VPC partagé, veillez à ajouter le projet hôte et les projets de service.

    3. Cliquez sur le bouton Add Projects (Ajouter des projets).

  7. Sélectionnez Cloud Run comme service que vous souhaitez sécuriser dans le périmètre.

    1. Cliquez sur Services restreints.

    2. Cliquez sur Ajouter des services.

    3. Recherchez "Cloud Run". Sélectionnez ensuite l'API Cloud Run Admin.

    4. Cliquez sur Ajouter une API Cloud Run Admin.

  8. Autorisez l'accès aux développeurs.

    L'activation de VPC Service Controls pour Cloud Run empêche tous les accès depuis l'extérieur du périmètre, y compris l'affichage et le déploiement de services à partir de machines situées en dehors du périmètre telles que les ordinateurs portables d'entreprise. Pour que les développeurs et les opérateurs d'applications puissent afficher et déployer des ressources dans le périmètre, vous devez configurer la règle d'entrée de périmètre.

    1. Cliquez sur Règle d'entrée.

    2. Spécifiez les éléments Source, Identité, Projet et Services.

    3. Cliquez sur Add Rule (Ajouter une règle).

    Si votre organisation utilise Access Context Manager, vous pouvez également activer l'accès pour les développeurs en définissant des niveaux d'accès.

  9. Cliquez sur Créer un périmètre.

Une fois ces étapes terminées, tous les appels d'API Cloud Run Admin sont vérifiés pour s'assurer qu'ils proviennent du même périmètre.

Configurer des règles d'administration

Pour gérer les règles d'administration, vous avez besoin du rôle Administrateur des règles d'administration (roles/orgpolicy.policyAdmin).

Pour respecter les règles de VPC Service Controls et vous protéger contre l'exfiltration des données, définissez les règles d'administration ci-dessous. Elles contrôlent les paramètres d'entrée et de sortie pouvant être autorisés pour Cloud Run dans le périmètre de service.

Limiter les paramètres d'entrée autorisés

La règle d'administration run.allowedIngress contrôle les paramètres d'entrée que les développeurs sont autorisés à utiliser pour Cloud Run. Définissez cette règle d'administration pour que les développeurs n'utilisent que la valeur internal si vous souhaitez n'autoriser que les requêtes internes, ou internal-and-cloud-load-balancing si vous souhaitez autoriser les requêtes via un équilibreur de charge d'application externe, avec des contrôles d'accès gérés par Cloud Load Balancing.

Pour plus d'informations sur ces paramètres, reportez-vous à la section Restreindre l'entrée pour Cloud Run.

Console

  1. Accédez à la page de règle Paramètres d'entrée autorisés (Cloud Run) dans la console Google Cloud :

    Accéder à la règle d'administration

  2. Cliquez sur Modifier.

  3. Sur la page Modifier, sélectionnez Personnaliser.

  4. Sous Application des règles, sélectionnez Remplacer.

  5. Sous Valeurs de règles, sélectionnez Personnalisé.

  6. Sous Type de règle, sélectionnez Autoriser.

  7. Sous Valeurs personnalisées, saisissez internal. Si vous souhaitez également autoriser le trafic Cloud Load Balancing, cliquez sur Nouvelle valeur de règle, puis saisissez internal-and-cloud-load-balancing.

  8. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud resource-manager org-policies allow :

gcloud resource-manager org-policies allow \
  run.allowedIngress internal \
  --organization ORGANIZATION_ID

ORGANIZATION_ID est l'ID de votre organisation. Si vous souhaitez également autoriser le trafic Cloud Load Balancing, remplacez run.allowedIngress internal par run.allowedIngress internal-and-cloud-load-balancing.

Une fois cette règle d'administration en place, tous les services doivent utiliser les valeurs autorisées pour leurs paramètres d'entrée. Ainsi, les services Cloud Run ne peuvent accepter que le trafic provenant d'un réseau VPC situé dans le périmètre du service. Les tentatives de définition d'une entrée sur une valeur différente seront bloquées par la règle d'administration.

Limiter les paramètres de sortie VPC autorisés

La règle d'administration run.allowedVPCEgress contrôle les paramètres de sortie que les développeurs sont autorisés à utiliser pour Cloud Run. Définissez cette règle d'administration pour n'autoriser que la valeur all-traffic :

Console

  1. Accédez à la page de règle Paramètres de sortie VPC autorisés (Cloud Run) dans la console Google Cloud :

    Accéder à la règle d'administration

  2. Cliquez sur Modifier.

  3. Sur la page Modifier, sélectionnez Personnaliser.

  4. Sous Application des règles, sélectionnez Remplacer.

  5. Sous Valeurs de règles, sélectionnez Personnalisé.

  6. Sous Type de règle, sélectionnez Autoriser.

  7. Sous Valeurs personnalisées, saisissez all-traffic.

  8. Cliquez sur Enregistrer.

gcloud

Exécutez la commande gcloud resource-manager org-policies allow :

gcloud resource-manager org-policies allow \
  run.allowedVPCEgress all-traffic \
  --organization ORGANIZATION_ID

ORGANIZATION_ID est l'ID de votre organisation.

Comportement une fois la règle d'administration définie

Une fois la règle d'administration en place, toutes les nouvelles révisions doivent utiliser la sortie VPC directe ou un connecteur d'accès au VPC sans serveur et doivent utiliser la valeur all-traffic pour leurs paramètres de sortie. Cette combinaison achemine tout le trafic de sortie de ces révisions via un réseau VPC, en le soumettant aux règles de pare-feu et aux autres paramètres du réseau VPC. Les nouveaux déploiements de révisions spécifiant une valeur différente sont bloqués par la règle d'administration.

Migration des règles d'administration et du trafic

Pour les services existant avant la définition de la règle d'administration, vous pouvez continuer à migrer le trafic vers les révisions non conformes jusqu'à ce que toutes les révisions diffusant le trafic soient conformes.

Ce comportement vous permet de tester et de déployer progressivement de nouvelles révisions conformes à la règle. Une fois que toutes les révisions diffusant le trafic sont conformes à la règle, toute tentative de déplacement du trafic vers des révisions non conformes sera bloquée par la règle d'administration.

Configurer votre projet à des fins de compatibilité avec VPC Service Controls

Pour les projets individuels au sein du périmètre de service, vous devez effectuer une configuration supplémentaire pour pouvoir utiliser VPC Service Controls.

Configurer les réseaux VPC

Cette section explique comment configurer votre réseau VPC pour que les requêtes envoyées aux domaines googleapis.com standards soient automatiquement acheminées vers la plage d'adresses IP virtuelles restreinte, 199.36.153.4/30 (restricted.googleapis.com) où votre service Cloud Run est exécuté. Aucune modification de code n'est nécessaire.

Pour chaque réseau VPC d'un projet, procédez comme suit pour bloquer le trafic sortant, à l'exception du trafic à destination de la plage VIP restreinte :

  1. Activez l'accès privé à Google sur les sous-réseaux hébergeant vos ressources de réseau VPC.

  2. Configurez des règles de pare-feu pour empêcher les données de quitter le réseau VPC :

    • Créez une règle de refus de sortie, qui bloque tout le trafic sortant.

    • Créez une règle de sortie autorisée qui permet l'acheminement du trafic vers 199.36.153.4/30 sur le port TCP 443. Vérifiez qu'elle est prioritaire sur la règle de refus de sortie que vous venez de créer. De cette façon, les sorties vers la plage VIP restreinte sont les seules autorisées.

  3. Créez une stratégie de réponse Cloud DNS.

    gcloud dns response-policies create RESPONSE_POLICY \
    --networks=NETWORK \
    --description=DESCRIPTION
    

    Remplacez les éléments suivants :

    • RESPONSE_POLICY : nom de votre stratégie de réponse.
    • NETWORK : nom du réseau à associer à cette règle. Pour spécifier plusieurs réseaux, séparez les noms de chaque réseau par des virgules, par exemple : network1,network2.
    • DESCRIPTION : description de la stratégie de réponse, par exemple Cloud Run VPC Service Controls response policy.
  4. Ajoutez une règle à la stratégie de réponse pour résoudre *.googleapis.com en restricted.googleapis.com. La plage d'adresses IP de restricted.googleapis.com est 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name="*.googleapis.com." \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Remplacez les éléments suivants :

    • RESPONSE_POLICY_RULE : nom de votre règle de stratégie de réponse.
    • RESPONSE_POLICY : nom de la stratégie de réponse que vous avez créée à l'étape précédente, entre guillemets.
  5. Ajoutez une règle à la stratégie de réponse pour résoudre *.run.app en restricted.googleapis.com. La plage d'adresses IP de restricted.googleapis.com est 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name="*.run.app." \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Remplacez les éléments suivants :

    • RESPONSE_POLICY_RULE : nom de votre règle de stratégie de réponse.
    • RESPONSE_POLICY : nom de la stratégie de réponse que vous avez spécifiée à l'étape précédente, entre guillemets.

À ce stade, les requêtes provenant du réseau VPC :

  • ne peuvent pas quitter le réseau VPC, ce qui empêche la sortie en dehors du périmètre de service ;
  • ne peuvent atteindre que les API et les services de Google qui contrôlent VPC Service Controls, empêchant ainsi les risques d'exfiltration via les API Google.

Déployer des services et des jobs Cloud Run compatibles avec VPC Service Controls

Une fois VPC Service Controls configuré pour Cloud Run, assurez-vous que tous les services et les jobs Cloud Run déployés dans le périmètre de service activent VPC Service Controls. Pour ce faire, vous devez disposer des éléments suivants:

  • Les services et les jobs Cloud Run doivent utiliser la sortie VPC directe ou un connecteur d'accès au VPC sans serveur. Pour plus d'informations, consultez la page Se connecter à un réseau VPC.
  • Les services et les jobs Cloud Run doivent acheminer l'intégralité du trafic sortant via le réseau VPC. Pour plus d'informations, consultez la section Paramètres de sortie.
  • Les services Cloud Run ne doivent autoriser que le trafic provenant de sources internes. Pour plus d'informations, consultez la section Paramètres d'entrée. Définir l'entrée sur "tous" désactive l'application de VPC Service Controls.

Effectuer l'audit des services existants pour assurer la conformité avec les règles de VPC Service Controls

Une fois VPC Service Controls configuré, la conformité des nouveaux services créés dans les projets au sein du périmètre de service est automatiquement vérifiée. Toutefois, pour éviter toute interruption des charges de travail en cours, les services existants continuent d'être opérationnels et peuvent ne pas être conformes aux règles d'administration.

Nous vous recommandons d'effectuer un audit régulier de vos services pour vous assurer que vos paramètres d'entrée et de sortie sont conformes aux exigences, et de mettre à jour ou redéployer des services si nécessaire. Par exemple, vous pouvez créer un script qui utilise l'API Cloud Run Admin pour répertorier vos services et mettre en évidence ceux qui ne spécifient pas les paramètres réseau appropriés.