Votre panier est vide!

🟡 Niveau : Intermédiaire | ⏱️ Lecture : 12 min | 🛠️ Mise en œuvre : 2-3 heures
📚 Prérequis
- Docker installé et fonctionnel
- Connaissance des concepts d’images et de registres Docker
- Un serveur dédié (recommandé : 8 Go RAM, 4 vCPU, 100 Go stockage)
- Un nom de domaine et un certificat SSL (optionnel mais recommandé)
Vous avez conteneurisé vos applications ? Excellent. Mais avez-vous vérifié les vulnérabilités cachées dans vos images Docker ? Une étude récente montre que 75% des images Docker contiennent au moins une vulnérabilité critique. Découvrez comment Harbor et Trivy peuvent sécuriser votre supply chain de conteneurs.
🏠 Pourquoi un Registry Privé est Indispensable
Docker Hub est pratique, mais en entreprise, vous avez besoin de plus :
- Contrôle d’accès : Qui peut pusher/puller quelles images ?
- Confidentialité : Vos images métier ne doivent pas être publiques
- Fiabilité : Pas de dépendance à un service externe
- Conformité : RGPD, données de santé, secteur bancaire…
- Scan de vulnérabilités : Détecter les CVE avant le déploiement
Harbor est un registry open-source de niveau entreprise maintenu par la CNCF (Cloud Native Computing Foundation). Il offre toutes ces fonctionnalités et bien plus.
🔍 Comprendre les CVE et les Scores CVSS
Avant de scanner, comprenons ce qu’on cherche :
CVE (Common Vulnerabilities and Exposures)
C’est un identifiant unique pour chaque vulnérabilité connue. Exemple : CVE-2024-3094 (la fameuse backdoor XZ Utils).
Score CVSS (Common Vulnerability Scoring System)
Un score de 0 à 10 indiquant la gravité :
| Score | Sévérité | Action recommandée |
|---|---|---|
| 0.0 – 3.9 | Faible | Corriger lors de la prochaine maintenance |
| 4.0 – 6.9 | Moyenne | Planifier une correction sous 30 jours |
| 7.0 – 8.9 | Haute | Corriger sous 7 jours |
| 9.0 – 10.0 | Critique | Corriger immédiatement |
🛡️ Trivy : Le Scanner Open-Source de Référence
Trivy (développé par Aqua Security) est un scanner de vulnérabilités rapide et complet. Il peut analyser :
- Images Docker (couches, packages OS, dépendances applicatives)
- Fichiers système (Filesystem)
- Dépôts Git
- Fichiers de configuration (IaC comme Terraform, Kubernetes)
Exemple d’utilisation CLI
# Scanner une image Docker trivy image nginx:1.25 # Scanner avec rapport JSON trivy image --format json --output report.json myapp:latest # Scanner uniquement les vulnérabilités critiques et hautes trivy image --severity CRITICAL,HIGH myapp:latest # Sortie en erreur si des vulnérabilités critiques sont trouvées (pour CI/CD) trivy image --exit-code 1 --severity CRITICAL myapp:latest
Exemple de sortie
nginx:1.25 (debian 12.4) ========================= Total: 42 (UNKNOWN: 0, LOW: 25, MEDIUM: 12, HIGH: 4, CRITICAL: 1) ┌─────────────────────┬────────────────┬──────────┬─────────────────────────┐ │ Library │ Vulnerability │ Severity │ Installed Version │ ├─────────────────────┼────────────────┼──────────┼─────────────────────────┤ │ libssl3 │ CVE-2024-0727 │ CRITICAL │ 3.0.11-1~deb12u1 │ │ zlib1g │ CVE-2023-45853 │ HIGH │ 1:1.2.13.dfsg-1 │ └─────────────────────┴────────────────┴──────────┴─────────────────────────┘
🐳 Harbor + Trivy : L’Intégration Parfaite
Harbor intègre Trivy nativement. À chaque docker push, l’image est automatiquement scannée. Voici le workflow :
- Le développeur push une image sur Harbor
- Trivy scanne automatiquement l’image
- Les résultats apparaissent dans l’interface web Harbor
- Selon les policies, l’image peut être bloquée pour le pull
Configuration des Policies de Sécurité
Harbor permet de définir des règles strictes :
- Empêcher le pull d’images avec des vulnérabilités critiques
- Forcer le scan avant tout pull
- Alerter les équipes sur les nouvelles CVE
🔄 Intégrer le Scan dans le Pipeline CI/CD
Le scan ne doit pas être optionnel. Intégrez-le dans votre pipeline pour bloquer les déploiements vulnérables :
Exemple GitLab CI
stages:
- build
- scan
- push
- deploy
build:
stage: build
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
scan_vulnerabilities:
stage: scan
script:
- trivy image --exit-code 1 --severity CRITICAL,HIGH $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
allow_failure: false # Bloque le pipeline si vulnérabilités trouvées
push_to_harbor:
stage: push
script:
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
only:
- main
needs:
- scan_vulnerabilities # Ne push que si le scan passe
deploy:
stage: deploy
script:
- ./deploy.sh
needs:
- push_to_harbor
Avantages de cette approche
- Shift-left security : Les vulnérabilités sont détectées au plus tôt
- Blocage automatique : Pas de déploiement vulnérable en production
- Traçabilité : Chaque scan est enregistré dans les logs CI
📋 Bonnes Pratiques de Sécurité des Images
Le scan n’est qu’une partie de la solution. Voici d’autres bonnes pratiques :
1. Utilisez des Images de Base Minimales
# ❌ Image lourde avec beaucoup de packages FROM ubuntu:22.04 # ✅ Image minimale FROM alpine:3.19 # ✅ Encore mieux : distroless (Google) FROM gcr.io/distroless/static-debian12
2. Multi-stage Builds
# Stage de build avec tous les outils FROM golang:1.22 AS builder WORKDIR /app COPY . . RUN go build -o myapp # Stage final minimal FROM alpine:3.19 COPY --from=builder /app/myapp /usr/local/bin/ CMD ["myapp"]
3. Mettez à Jour Régulièrement
Reconstruisez vos images au moins une fois par semaine pour intégrer les patches de sécurité des images de base.
4. Signez vos Images
Harbor supporte la signature d’images avec Notary/Cosign pour garantir l’intégrité et l’origine.
🚀 Déployer Harbor + Trivy en Production
Déployer Harbor manuellement est complexe :
- Génération des certificats SSL
- Configuration de la base PostgreSQL interne
- Activation et configuration de Trivy
- Gestion des volumes de données
- Configuration du reverse proxy
Notre rôle Ansible automatise tout cela :
- ✅ Certificats SSL auto-signés ou personnalisés
- ✅ Trivy activé par défaut avec scan automatique
- ✅ Métriques Prometheus exposées
- ✅ Compatible Debian 12/13 et Ubuntu 22.04/24.04
- ✅ Documentation Day-1 et Day-2 incluse
Prêt à sécuriser vos images Docker ? Découvrez notre rôle Ansible harbor_trivy.
📖 Glossaire
- CVE (Common Vulnerabilities and Exposures) : Identifiant unique attribué à chaque vulnérabilité de sécurité connue
- CVSS (Common Vulnerability Scoring System) : Système de notation standardisé de la gravité des vulnérabilités (0-10)
- Registry : Serveur qui stocke et distribue les images Docker
- CNCF : Cloud Native Computing Foundation, organisation qui maintient les projets cloud-native comme Kubernetes et Harbor
- Supply Chain : Chaîne d’approvisionnement logicielle, incluant les dépendances et images de base
- Shift-Left : Pratique consistant à déplacer les tests de sécurité plus tôt dans le cycle de développement
- Distroless : Images Docker minimales de Google ne contenant que l’application, sans OS complet
Dans le prochain article, nous verrons comment protéger vos applications web avec un WAF ModSecurity. Restez connectés !
