Aujourd'hui, les données circulent sans la moindre entrave entre réseaux et systèmes. Il est donc devenu essentiel de mettre en place des mesures de sécurité robustes pour protéger les informations sensibles. Si le filtrage du trafic entrant retient l'essentiel de l'attention, le filtrage en sortie ne doit pas être sous-estimé. Il permet aux organisations d'encadrer les communications réseau sortantes et de s'assurer que seules des connexions autorisées et sécurisées sont établies.
Le filtrage par nom de domaine pleinement qualifié (FQDN) figure parmi les techniques de référence en la matière. Il offre aux administrateurs un contrôle précis du trafic sortant, à partir des noms de domaine. Couplée à la Firewall Policy de Google Cloud Platform (GCP), cette approche garantit aux organisations un niveau de sécurité et de gestion remarquable de leurs points de sortie réseau.
Dans cet article, nous vous guidons pas à pas dans la mise en place du filtrage FQDN en sortie sur GCP à l'aide des objets FQDN dans les règles de firewall policy. La Firewall Policy est une fonctionnalité distincte de Cloud Firewall, qui propose bien plus de possibilités que les règles de firewall VPC.
L'objet FQDN dans les règles de firewall policy est actuellement en preview ; aucun SLA ni engagement de support technique n'est assuré par le support GCP.
Qu'est-ce qu'une Firewall Policy ?
La Firewall Policy de Google Cloud Platform (GCP) est une fonctionnalité de sécurité réseau qui permet de définir et d'appliquer des règles de pare-feu centralisées pour vos instances de machines virtuelles (VM) et vos réseaux VPC (Virtual Private Cloud).
Elle propose une approche unifiée et évolutive pour piloter le trafic réseau, contrôler les communications entrantes et sortantes, filtrer le trafic selon différents critères et renforcer la sécurité globale.
Avec la Firewall Policy, vous définissez des règles fines précisant quels types de trafic sont autorisés ou refusés selon des critères tels que les plages d'adresses IP, les ports, les protocoles ou même les noms de domaine pleinement qualifiés (FQDN). Vous établissez ainsi un périmètre réseau sécurisé et protégez vos ressources cloud des accès non autorisés et des activités malveillantes.
Voici les principales fonctionnalités et bénéfices de la Firewall Policy GCP :
- Gestion centralisée : pilotez et configurez les règles de pare-feu sur plusieurs projets, régions et réseaux VPC depuis une interface unique, ce qui simplifie la gestion des politiques de sécurité réseau.
- Définition de règles flexibles : Cloud Firewall Policy permet de créer des règles fondées sur des adresses IP, des plages, des ports, des protocoles et des FQDN. Cette souplesse offre un contrôle granulaire du trafic entrant et sortant et permet de définir des politiques de sécurité très spécifiques.
- Mises à jour dynamiques : modifiez les règles de pare-feu en temps réel pour vous adapter à l'évolution des exigences de sécurité réseau, sans interrompre le trafic existant.
- Intégration avec les services Google Cloud : Cloud Firewall Policy s'intègre nativement aux autres services Google Cloud (réseaux VPC, load balancers, instances VM) et garantit des contrôles de sécurité homogènes sur l'ensemble de votre infrastructure.
- Journalisation et supervision : Cloud Firewall Policy offre des capacités détaillées de journalisation et de supervision pour gagner en visibilité sur le trafic réseau, analyser les événements de sécurité et résoudre efficacement les problèmes éventuels.
Architecture de référence

Exemple de configuration
Étapes de mise en œuvre de l'architecture de référence
- Configurer Private Google Access
- Cloud NAT pour l'accès Internet
- Configurer les règles de firewall policy
Configurer Private Google Access
Private Google Access permet aux ressources d'un réseau Virtual Private Cloud (VPC) d'accéder aux services Google via des adresses IP privées, sans connectivité Internet externe.
Il faut également configurer Private Google Access avec le domaine private.googleapis.com ou restricted.googleapis.com pour que les requêtes vers les API Google ne soient routables qu'au sein de Google Cloud.
Private Google Access s'active sous-réseau par sous-réseau. Activez-le sur un sous-réseau existant et mettez à jour les variables.
gcloud config set project $PROJECT_ID
gcloud compute networks subnets update $SUBNET_NAME \
--region=$REGION \
--enable-private-ip-google-access

Pour cette configuration, il faut créer des zones Cloud DNS pour private.googleapis.com. Utilisez restricted.googleapis.com si vous utilisez VPC Service Controls. Consultez les options de domaine pour plus de détails.
Créez une zone DNS privée pour googleapis.com :
gcloud dns managed-zones create googleapis-com \
--dns-name=googleapis.com. \
--description="googleapis-com domain for PGA" \
--visibility=private \
--networks=$NETWORK_NAME

Créez un enregistrement A pour private.googleapis.com pointant vers les adresses IP suivantes : 199.36.153.8, 199.36.153.9, 199.36.153.10, 199.36.153.11.
gcloud dns record-sets create "private.googleapis.com." \
--type="A" \
--ttl="300" \
--rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11" \
--zone="googleapis-com"
Créez un enregistrement CNAME pour *.googleapis.com qui pointe vers le domaine que vous venez de configurer : private.googleapis.com.
gcloud dns record-sets create "*.googleapis.com." \
--type="CNAME" \
--ttl="300" \
--rrdatas="private.googleapis.com." \
--zone="googleapis-com"

Certaines API et services Google sont exposés via des noms de domaine supplémentaires, notamment *.gcr.io, *.gstatic.com, *.pkg.dev et pki.goog.
Reportez-vous au tableau des domaines et plages d'adresses IP dans les options de domaine pour vérifier si les services associés à ces domaines sont accessibles via private.googleapis.com ou restricted.googleapis.com. Par exemple, avec Google Kubernetes Engine (GKE), il faut aussi configurer des zones privées *.gcr.io et *.pkg.dev dans Cloud DNS.
Configurer Cloud NAT
Cloud NAT est un service géré, distribué et défini par logiciel, qui permet aux ressources dépourvues d'adresse IP externe d'établir des connexions sortantes vers Internet. Il est recommandé à la place de la passerelle Internet par défaut pour maîtriser le trafic sortant.
Créez un Cloud Router dans la région souhaitée :
gcloud compute routers create cloud-firewall-policy-demo-cloud-nat \
--network=$NETWORK_NAME \
--region=$REGION
Créez la passerelle Cloud NAT :
gcloud compute routers nats create cloud-firewall-policy-demo-cloud-nat \
--router=cloud-firewall-policy-demo-cloud-nat \
--region=$REGION \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges

Exemple de configuration Cloud NAT
Configurer les règles de firewall policy
Les firewall policies se déclinent en trois variantes :
- Les firewall policies hiérarchiques permettent de créer et d'appliquer une politique de pare-feu cohérente à l'échelle de votre organisation. Vous pouvez les associer à l'organisation entière ou à des dossiers spécifiques.
- Les firewall policies réseau globales permettent de mettre à jour en lot toutes les règles de pare-feu en les regroupant dans un même objet de politique ; les règles s'appliquent alors à toutes les régions.
- Les firewall policies réseau régionales permettent de créer et d'appliquer une politique de pare-feu cohérente à l'ensemble des sous-réseaux d'une région donnée de votre réseau VPC.
Créez une firewall policy réseau globale pour cette configuration :
gcloud compute network-firewall-policies create global-demo-firewall-policy \
--global
Créez une nouvelle association entre la firewall policy et le réseau cible :
gcloud compute network-firewall-policies associations create \
--firewall-policy=global-demo-firewall-policy \
--network=$NETWORK_NAME --global-firewall-policy

Les règles de pare-feu par défaut font partie de la politique

Association du réseau à la politique
Toutes les ressources nécessaires à l'application du filtrage FQDN en sortie via les objets FQDN dans les règles de firewall policy sont désormais en place. Il reste à ajouter les règles requises à la firewall policy.
Pour l'heure, aucune restriction ne s'applique au trafic sortant et les instances du réseau bénéficient d'un accès Internet illimité.


Pour cet exemple, nous n'autoriserons le trafic sortant que vers www.example.com et les adresses IP publiques associées à private.googleapis.com, et nous bloquerons tout autre trafic Internet.
Créez une règle d'autorisation par défaut pour le trafic entrant. Ici, l'accès entrant est autorisé sans restriction, mais adaptez la règle à vos besoins :
gcloud compute network-firewall-policies rules create 1001 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="INGRESS" \
--description="Allow ingress traffic" \
--src-ip-ranges="0.0.0.0/0" \
--layer4-configs="all" \
--global-firewall-policy
Créez une règle de pare-feu pour autoriser la communication avec les plages d'adresses IP privées. Veillez à inclure toute autre plage privée personnalisée utilisée dans votre environnement, afin de ne pas perturber les communications entre instances.
gcloud compute network-firewall-policies rules create 999 \
--firewall-policy="global-demo-firewall-policy" -\
-action="allow" \
--direction="EGRESS" \
--description="Allow communication with private IP ranges" \
--dest-ip-ranges="10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" \
--layer4-configs="all" \
--global-firewall-policy
Créez une règle de firewall policy autorisant les requêtes sortantes vers les IP publiques de private.googleapis.com ; ces adresses ne sont routables qu'au sein de Google Cloud.
gcloud compute network-firewall-policies rules create 998 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="EGRESS" \
--description="Allow DNS resolution requests to private.googleapis.com" \
--dest-ip-ranges="199.36.153.8/32,199.36.153.9/32,199.36.153.10/32,199.36.153.11/32" \
--layer4-configs="tcp:443" \
--global-firewall-policy
Créez une règle de firewall policy autorisant les requêtes sortantes vers www.example.com :
gcloud compute network-firewall-policies rules create 997 \
--firewall-policy="global-demo-firewall-policy" \
--action="allow" \
--direction="EGRESS" \
--description="FQDN egress filtering rules" \
--dest-fqdns="www.example.com" \
--layer4-configs="tcp:80,tcp:443" \
--global-firewall-policy
Créez une règle de refus par défaut pour le trafic sortant. Vérifiez bien que toutes les règles d'autorisation pour les domaines et plages d'IP requis sont en place avant de créer la règle Deny.
gcloud compute network-firewall-policies rules create 1000 \
--firewall-policy="global-demo-firewall-policy" \
--action="deny" \
--direction="EGRESS" \
--description="Deny all Egress traffic" \
--dest-ip-ranges="0.0.0.0/0" \
--layer4-configs="all" \
--global-firewall-policy
Liste consolidée des règles de la firewall policy.

Les règles peuvent mettre jusqu'à 30 secondes à prendre effet. Testez ensuite la connectivité réseau depuis l'instance GCE ou les pods GKE. Les requêtes sortantes ne sont autorisées que vers les domaines et plages d'IP définis dans les règles de la firewall policy.

Résultats des tests après application des règles de la firewall policy
Cet exemple illustre comment exploiter les objets FQDN dans les règles de firewall policy pour filtrer le trafic en sortie. Une approche particulièrement efficace pour renforcer la sécurité réseau et maîtriser les points de sortie.
Pour en savoir plus sur la Firewall Policy, consultez la page produit.