Gros plan sur un circuit imprimé électronique, symbole des contrôles automatisés intégrés au pipeline
Photo : Anne Nygård / Unsplash
Cybersécurité & DevOps

DevSecOps : pourquoi la sécurité arrive trop tard dans vos pipelines CI/CD

15 septembre 2026 9 min de lecture Alexandre BOIGUES

Dans beaucoup d'équipes, la sécurité reste une étape de fin de course : un audit, un pentest, une revue manuelle avant la mise en production. Le DevSecOps propose l'inverse : automatiser des contrôles de sécurité à chaque étape du pipeline CI/CD, pour détecter un problème en quelques minutes plutôt qu'en quelques mois. Voici ce que ça change concrètement, et par où commencer.

Le sprint retro qui revient chaque trimestre

« On corrige les failles du pentest, on les corrige toutes les fois. » C'est la phrase qu'on entend dans beaucoup d'équipes IT, juste après un audit de sécurité annuel ou un test d'intrusion commandé avant une mise en production majeure. Le rapport liste dix, vingt, parfois cinquante vulnérabilités — dépendances obsolètes, image Docker qui tourne en root, clé d'API oubliée dans un fichier de configuration. L'équipe corrige dans l'urgence, ferme le rapport, et le cycle recommence l'année suivante.

Le problème n'est pas la compétence des équipes, c'est le moment où la sécurité intervient. Un pentest en fin de projet teste une photographie du système à un instant donné, sur un code déjà écrit, testé, parfois déjà déployé. Chaque faille trouvée à ce stade coûte cher à corriger : il faut rouvrir un développement clos, retester, parfois redéployer en urgence. Le DevSecOps part d'un principe simple : et si ces mêmes contrôles s'exécutaient automatiquement à chaque commit, plutôt qu'une fois par an ?

Le DevSecOps, ce n'est pas un outil de plus

DevSecOps est la contraction de Development, Security et Operations. Le terme désigne une pratique, pas un produit : intégrer des contrôles de sécurité automatisés directement dans le pipeline d'intégration et de déploiement continus (CI/CD), au même titre que les tests unitaires. La sécurité devient une étape du pipeline parmi d'autres, exécutée à chaque modification, plutôt qu'une revue ponctuelle déconnectée du rythme de développement.

Le principe qui porte cette approche s'appelle le shift-left : décaler les contrôles vers la gauche de la chronologie du projet, c'est-à-dire vers l'amont — le code source, la construction de l'image, l'analyse des dépendances — plutôt que de les laisser s'accumuler vers la droite, en fin de course, où chaque correction coûte plus cher et retarde la mise en production.

Ce que le shift-left change concrètement. Une dépendance vulnérable détectée au moment où un développeur l'ajoute se corrige en changeant une ligne, avant même le premier commit. La même dépendance découverte six mois plus tard, en production, peut nécessiter un correctif d'urgence et une communication de crise si elle a été exploitée.

Les quatre familles de contrôles à automatiser

Un pipeline CI/CD « sécurisé » n'ajoute pas un outil unique : il enchaîne plusieurs types de contrôles, chacun ciblant une catégorie de risque différente.

1. Le scan des dépendances (SCA)

La plupart des applications modernes sont composées majoritairement de bibliothèques tierces, bien plus que de code écrit en interne. L'analyse de la composition logicielle (Software Composition Analysis, SCA) compare la liste des dépendances d'un projet à des bases de vulnérabilités publiques (comme la base CVE) et bloque le pipeline si une dépendance vulnérable est détectée. Des outils comme Dependabot, Trivy ou Snyk réalisent ce contrôle à chaque pull request.

2. L'analyse statique du code (SAST)

L'analyse statique de sécurité applicative (Static Application Security Testing, SAST) examine le code source, sans l'exécuter, à la recherche de motifs dangereux connus : requête SQL construite par concatenation de chaînes (porte ouverte à l'injection SQL), désérialisation non contrôlée, gestion d'erreur qui expose des informations sensibles. C'est un contrôle rapide, exécutable à chaque commit, qui ne remplace pas une revue humaine mais élimine les erreurs les plus mécaniques avant qu'elles n'atteignent une relecture.

3. Le scan des images de conteneurs

Si votre application est packagée en image Docker, l'image elle-même doit être scannée avant d'être poussée vers un registre ou déployée. Ce contrôle vérifie deux choses : que le système d'exploitation et les paquets à l'intérieur de l'image ne contiennent pas de vulnérabilités connues, et qu'aucun secret n'a été involontairement intégré dans une couche de l'image. Sur ce dernier point, notre enquête sur le scan des secrets dans les images Docker publiques montre à quelle vitesse une image mal construite est fouillée dès sa publication : la même rigueur s'applique en interne, avant même que l'image ne quitte votre pipeline.

4. La gestion des secrets dans le pipeline lui-même

Un pipeline CI/CD manipule en permanence des identifiants sensibles : jetons de déploiement, clés d'API cloud, mots de passe de base de données. Les stocker en clair dans un fichier de configuration versionné, ou les écrire en dur dans un script de build, revient à les exposer à quiconque a accès au dépôt. La bonne pratique consiste à les centraliser dans un coffre-fort de secrets (secrets manager) fourni par la plateforme CI/CD ou un outil dédié, et à les injecter à l'exécution, jamais dans le code source ni dans une image.

Un détecteur de secrets doit aussi scanner le dépôt Git. Un secret poussé puis supprimé dans un commit suivant reste lisible dans l'historique Git, exactement comme une couche Docker supprimée reste lisible dans l'historique de l'image. Le scan doit couvrir l'historique complet, pas seulement le dernier état du code.

Les gates de sécurité : bloquer plutôt qu'alerter

Scanner ne suffit pas si le résultat n'a aucune conséquence : un rapport que personne ne lit avant de merger ne change rien au risque réel. C'est là qu'interviennent les gates de sécurité (security gates) : des règles automatisées qui bloquent une action du pipeline — un merge, un déploiement — si un contrôle échoue au-delà d'un seuil défini.

Gate Ce qu'il bloque Seuil typique
Scan de dépendances (SCA) Le merge de la pull request Toute vulnérabilité critique ou haute connue
SAST Le merge de la pull request Toute faille critique introduite par le changement
Scan d'image Le push vers le registre d'images Vulnérabilité critique dans l'image finale
Détection de secrets Le commit lui-même (hook local) ou le push Tout secret détecté, sans exception

Le choix du seuil est une décision d'équipe, pas une contrainte technique : bloquer sur toute vulnérabilité, y compris mineure, produit une friction telle que les équipes finissent par contourner le contrôle. Un seuil réaliste — bloquer les failles critiques et hautes, faire remonter les autres en revue — obtient une adhésion durable.

Par où commencer, sans tout refaire le même mois

Adopter le DevSecOps ne signifie pas réécrire son pipeline en une semaine. L'ordre qui produit le meilleur rapport effort/bénéfice, dans notre expérience d'accompagnement d'équipes IT, suit généralement cette séquence :

  • Le scan de dépendances en premier : souvent natif de la plateforme Git utilisée, peu bruyant, et il couvre le risque le plus fréquent en pratique, une bibliothèque tierce vulnérable.
  • La détection de secrets ensuite, y compris sur l'historique existant : un scan rétroactif révèle souvent des identifiants oubliés depuis des mois, à révoquer immédiatement.
  • Le scan des images avant chaque déploiement, une fois le réflexe de dépendances installé.
  • Le SAST en dernier, car il demande le plus de réglage pour limiter les faux positifs sans décourager les développeurs.

L'essentiel : chaque contrôle ajouté doit rester rapide (quelques minutes maximum) et actionnable. Un pipeline qui prend une heure à cause de la sécurité, ou qui remonte des dizaines de faux positifs sans les prioriser, sera contourné. L'objectif du DevSecOps est l'adhésion durable des équipes, pas l'exhaustivité théorique d'un rapport que personne ne lira.

Monter en compétence sur ces sujets

Ces réflexes s'appuient sur une bonne maîtrise des briques qu'ils protègent. Notre formation DEVOPS-001 — Conteneurisation avec Docker couvre la construction sécurisée des images (un module entier est consacré à la gestion des secrets et aux multi-stage builds), tandis que DEVOPS-010 — Orchestration Kubernetes prolonge ces pratiques à l'échelle d'un cluster en production. Le DevSecOps repose aussi sur des fondamentaux d'hygiène numérique partagés par toute l'équipe, au-delà des seuls profils techniques — l'objet de notre formation CYBE-001 — Hygiène numérique. Nos articles sur le scan des secrets Docker et l'Infrastructure as Code complètent naturellement cette approche.

Ce qu'il faut retenir

Le DevSecOps ne consiste pas à ajouter un outil de sécurité en fin de projet, mais à déplacer les contrôles vers l'amont du pipeline CI/CD : scan de dépendances, analyse statique du code, scan des images de conteneurs et gestion centralisée des secrets, chacun exécuté automatiquement à chaque modification. Des gates bien calibrés transforment ces scans en blocages effectifs plutôt qu'en rapports ignorés, à condition de choisir des seuils tenables pour les équipes. Le bénéfice n'est pas seulement une meilleure posture de sécurité : c'est un coût de correction des vulnérabilités divisé, une faille détectée à l'écriture du code coûtant infiniment moins cher qu'une faille découverte en production.