Module 5 : NetSecDevOps et Sécurité Automatisée
DevSecOps appliqué au réseau
Définition
Intégrer la sécurité à chaque étape du cycle DevOps, plutôt qu’en contrôle final avant mise en production.
Shift-left
Déplacer les contrôles de sécurité le plus tôt possible dans le pipeline (dès le commit), pour détecter un problème avant le déploiement plutôt qu’après.
Étapes типiques d’un pipeline CI/CD sécurisé
Commit --> Lint --> Validation --> Tests --> Déploiement --> Monitoring
Les contrôles de sécurité (lint, validation, tests) sont poussés le plus tôt possible dans le pipeline.
| Étape | Rôle |
|---|---|
| Lint | vérifier la syntaxe (ex. JSON/YAML valide) |
| Validation | vérifier la cohérence métier (ex. pas de règle « any-any ») |
| Tests | tests de non-régression sur les flux attendus |
| Déploiement | application automatisée sur l’équipement cible |
| Monitoring | vérification post-déploiement (état, alertes) |
Firewall-as-Code (FaC)
Principe
Versionner les règles de pare-feu comme du code (lien avec le Module 1) : chaque changement passe par une Pull Request, une revue, et un pipeline CI/CD avant application.
main (protégée) <-- PR <-- feature/ouverture-flux-web
|
CI : lint + tests de non-régressionTests de non-régression sur les flux
Avant d’appliquer une nouvelle règle, vérifier automatiquement que :
- les flux qui doivent être autorisés le sont toujours,
- les flux qui doivent être bloqués le restent (pas d’ouverture accidentelle).
Zero Trust
Principes
- Jamais de confiance implicite, même à l’intérieur du réseau,
- chaque accès est authentifié et autorisé individuellement,
- moindre privilège : un utilisateur ou service n’accède qu’à ce dont il a strictement besoin.
ZTNA vs VPN classique
| Critère | VPN classique | ZTNA |
|---|---|---|
| Accès accordé | à tout le sous-réseau distant | à une ressource précise |
| Confiance | implicite une fois connecté | vérifiée à chaque accès |
| Surface d’attaque | large (tout le LAN exposé) | réduite (accès unitaire) |
VPN classique : accès à tout le sous-réseau. ZTNA : accès vérifié, point-à-point, à une seule ressource.
Réseau overlay WireGuard
Les solutions ZTNA modernes (NetBird, Tailscale…) s’appuient souvent sur WireGuard : un protocole VPN léger, chiffré, qui crée un réseau virtuel (overlay) entre pairs, indépendamment de leur position réseau réelle.
SOAR (Security Orchestration, Automation and Response)
Cycle détection → décision → réponse
IDS/IPS détecte --> Webhook/alerte --> Script SOAR décide --> Action sur le pare-feu (API)
Un cycle continu : le script peut décider d’agir (bloquer) ou d’ignorer (faux positif).
Playbook
Séquence d’actions prédéfinie déclenchée par un type d’alerte (ex. « IP suspecte détectée » → « bloquer cette IP sur le pare-feu pendant 1h »).
Risque de faux positifs
Une automatisation trop agressive peut bloquer du trafic légitime. Bonnes pratiques :
- limiter la portée et la durée des actions automatiques (ex. blocage temporaire),
- journaliser toute action automatique pour audit,
- prévoir une liste blanche pour les adresses critiques.
Micro-segmentation Kubernetes
NetworkPolicy
Ressource Kubernetes qui définit les flux autorisés entre pods, à la manière d’un pare-feu interne au cluster.
Default deny
Par défaut, Kubernetes autorise tout le trafic entre pods. Une bonne pratique de sécurité consiste à définir une politique default deny, puis à n’autoriser explicitement que les flux nécessaires :
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {}
policyTypes: [Ingress, Egress]Sélecteurs de labels
Les NetworkPolicy ciblent des pods via leurs labels, pas leurs adresses IP (qui changent à chaque redéploiement) :
ingress:
- from:
- podSelector:
matchLabels:
app: frontendRôle du CNI
Les NetworkPolicy ne sont appliquées que si le plugin réseau du cluster (CNI) les supporte (ex. Calico, Cilium). Certains CNI basiques les ignorent silencieusement.
Sans politique : tout est ouvert. Avec default-deny : tout est fermé. Avec des autorisations ciblées : seuls les flux nécessaires (par label) sont réouverts.
Compliance-as-Code
Principe
Vérifier automatiquement, par script, qu’une configuration respecte un référentiel de sécurité (ex. benchmarks CIS), plutôt que par audit manuel ponctuel.
Audit continu
Exécuter les contrôles régulièrement (pipeline planifié) pour détecter rapidement un écart, et générer un rapport automatisé (liste des non-conformités, criticité).
Un déclencheur planifié relance périodiquement les contrôles sur toute la flotte d’équipements.
À retenir
- Le shift-left rapproche les contrôles de sécurité du début du pipeline.
- Firewall-as-Code applique au pare-feu les mêmes garanties que Git + CI/CD (Module 1).
- ZTNA remplace l’accès réseau large du VPN par un accès unitaire, vérifié en continu.
- Un playbook SOAR automatise détection → décision → réponse, avec des garde-fous contre les faux positifs.
- Les
NetworkPolicyKubernetes appliquent le moindre privilège au niveau des pods, via des labels. - Compliance-as-Code transforme un audit de sécurité en contrôle automatisé et reproductible.
