DevSecOps souverain : scanner (vraiment) toutes vos images Docker avec Trivy + GitLab CI

Introduction

Les conteneurs sont devenus l’unité de déploiement standard des applications cloud-natives. Mais derrière leur légèreté se cachent des centaines de dépendances logicielles — autant de points d’entrée potentiels pour des vulnérabilités, des secrets exposés ou des licences incompatibles. En 2025, sécuriser la chaîne d’approvisionnement logicielle (software supply chain) n’est plus une option : les régulations européennes (DORA, NIS 2), la pression des cyber-assureurs et la multiplication des attaques « shift-left » imposent une détection pré-production de toute faille – sans transférer les données en dehors du sol européen.

Cet article montre comment atteindre cet objectif, de façon souveraine et automatisée, en combinant le scanner open-source Trivy et un pipeline GitLab CI auto-hébergé chez Les Forgerons. Vous découvrirez pourquoi Trivy s’impose comme la référence du container scanning, les nouveautés GitLab 17.x qui facilitent l’intégration, et surtout un exemple complet de pipeline GitOps prêt à l’emploi.

Pourquoi la scan-culture s’impose en 2025 ?

  • Explosion des CVE container : +38 % en un an selon les bases NVD.
  • Réglementaire : DORA et NIS 2 exigent désormais la détection pré-prod des vulnérabilités.
  • Rançongiciels supply chain : 62 % des attaques ciblent les registres d’images avant même la prod.
  • Souveraineté : les données d’analyse doivent rester sur le sol UE (CF GDPR).

Bref, intégrer un scanner open-source hébergeable on-prem est devenu non-négociable.

Pourquoi Trivy ?

AtoutDétail
Tout-en-unScanne images, systèmes de fichiers, dépôts Git, VM, SBOM
Rapide & légerAnalyse une image Ubuntu 22 en < 10 s sur laptop i7.
SBOM natifLit CycloneDX & SPDX pour détecter les CVE avant le build.
Mise à jour quotidienneBase CVE synchronisée toutes les 6 h.
Licence Apache 2Libre, donc déployable dans votre cloud Forgerons sans limite.

Ce que GitLab 17.x apporte en 2025

FonctionDepuisIntérêt
Continuous Vulnerability Scanning (CVS)v17.4Re-scan automatique après chaque push d’une lib tierce.
Gestion des vuln. via IAv17.8Propose le merge-request de patch pour les CVE courantes.
SBOM-first pipelinesv17.5Génère et publie le SBOM comme artefact, exploitable par Trivy.

Good news : tout est disponible sur GitLab Self-Managed ; aucune donnée ne sort de votre infra Forgerons.

Architecture souveraine « scan-shift-left »

Dév → Commit → GitLab Runner (Forgerons) ─┐
                                          ├── trivy image   # scan paquet applicatif
                                          ├── trivy fs      # scan source
                                          ├── trivy sbom    # scan SBOM CycloneDX
                                          └── gitlab cvs    # re-scan Δ bibliothèques
                     Registry privé MinIO-S3 ←──────────────┘
  • RIEN n’est envoyé vers un SaaS US ; Trivy et GitLab tournent dans le même VPC.
  • Le registry MinIO prend en charge le stockage objet immuable pour les SBOM.

Pipeline GitLab CI de référence

include:
  - template: Security/Container-Scanning.gitlab-ci.yml

variables:
  SECURE_ANALYZERS_PREFIX: "registry.forgerons.local/security"

before_script:
  - apt-get update && apt-get install -y trivy

scans:
  stage: test
  script:
    # Image applicative
    - trivy image --scanners vuln,config --exit-code 1 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    # SBOM généré lors du build précédent
    - trivy sbom out/app.sbom.cdx.json --exit-code 1
  artifacts:
    paths: [ gl-dependency-scanning-report.json, trivy-results.sarif ]
  allow_failure: false
  • --exit-code 1 : échoue le pipeline dès que ≥ 1 CVE de sévérité HIGH.
  • Les rapports .sarif s’affichent dans l’onglet Security du MR.
  • Les runners tournent dans vos VM Forgerons ; le préfixe SECURE_ANALYZERS_PREFIX évite tout pull depuis internet.

Aller plus loin : SBOM + politique-métier

1. Générer le SBOM dès le docker build :

trivy image --format cyclonedx --output out/app.sbom.cdx.json .

2. Valider la licence (ex. interdire GPLv3 dans un produit SaaS propriétaire).

3. Écrire une policy Rego (Open Policy Agent) et l’appeler dans le job Trivy :

trivy image --policy policy.rego .

4. Versionner le SBOM dans MinIO Object Lock (immuabilité) pour prouver la traçabilité réglementaire RGPD/DORA.

Indicateurs & alertes


SLI
Seuil recommandéAction
% pipelines verts≥ 98 %Sinon, revoir seuil CVE ou dépendances.
MTTR vulnérabilité HIGH< 3 joursSlack / PagerDuty si dépassement.
Taux de dépendances non-pinnées0 %Vérifié via Trivy misconf.

Étude de cas express

Scale-up e-santé (Marseille) :

  • 230 images, 40 micro-services
  • Migration vers GitLab Self-Managed + Trivy runners Forgerons
  • Résultat après 2 sprints :
    • Vulnérabilités CRITICAL : de 17 à 0
    • Durée moyenne pipeline : +45 s seulement
    • Audit ANS (hébergement données de santé) validé du premier coup

Conclusion

En combinant Trivy et GitLab CI sur une infrastructure Les Forgerons :

  • Vous détectez efficacement CVE, secrets, licences, misconfigs avant la prod.
  • Vous gardez la maîtrise totale des données (runners + registre hébergés en France).
  • Vous répondez aux exigences DORA, NIS 2, RGPD sans surcoût SaaS.

Le DevSecOps souverain n’est plus un luxe ; c’est une bonne pratique immédiate.
Prêt à scanner vos images ?

Comments are closed