TP : Analyse de sécurité avec Trivy dans GitLab CI¶
Ce TP vous fait manipuler Trivy sur un projet existant puis intégrer ce scan dans GitLab CI
Objectifs du TP¶
- Utiliser Trivy pour scanner un projet avec
trivy fs - Utiliser Trivy pour scanner une image Docker avec
trivy image - Lire un rapport Trivy et identifier les vulnérabilités remontées
- Intégrer un job de scan dans GitLab CI avec cache et seuil de sévérité
Pré-requis¶
- Un dépôt GitLab avec un projet applicatif déjà versionné
- Un fichier
.gitlab-ci.ymlfonctionnel - Une image Docker déjà construite ou un projet contenant des dépendances et des fichiers de configuration
Étape 1 : Analyse locale du projet¶
Commencez par scanner directement le projet
- Installez Trivy sur votre machine si ce n'est pas déjà fait
- Placez-vous à la racine de votre projet
- Lancez une analyse complète du projet avec la commande
trivy fs . - Relevez dans le rapport une vulnérabilité, le package concerné, le niveau de sévérité et la version corrigée si elle existe
- Corrigez une dépendance vulnérable si c'est possible
- Relancez
trivy fs .pour vérifier l'effet de votre correction
Étape 2 : Analyse d'une image Docker¶
Passez ensuite au scan de l'image utilisée par votre application
- Si vous disposez déjà d'une image Docker pour votre projet, utilisez-la
- Lancez la commande
trivy image <nom-image>:<tag> - Repérez les vulnérabilités
HIGHetCRITICAL - Comparez rapidement ce scan avec celui obtenu via
trivy fs . - Si possible, changez l'image de base ou le tag utilisé puis relancez le scan
Étape 3 : Intégration dans GitLab CI¶
Automatisez maintenant ce contrôle dans votre pipeline
- Ajoutez un stage
scandans votre fichier.gitlab-ci.yml - Créez un job
trivy_scan - Utilisez l'image
aquasec/trivy:latest - Définissez la variable
TRIVY_CACHE_DIRavec la valeur.trivycache/ - Ajoutez une section
cachepour conserver.trivycache/ - Dans le
script, lancez un scan Trivy sur votre image Docker avec : --cache-dir $TRIVY_CACHE_DIR--exit-code 1--severity "HIGH,CRITICAL"- Faites échouer volontairement le job en scannant une cible contenant une vulnérabilité
HIGHouCRITICAL - Corrigez le problème ou changez la cible analysée pour obtenir un pipeline vert
- Relancez le pipeline une seconde fois et observez l'effet du cache
Étape 4 : Lecture et interprétation du résultat¶
Terminez par la lecture du résultat dans GitLab
- Récupérez le log du job
trivy_scandans GitLab - Identifiez l'identifiant CVE, le composant vulnérable, la sévérité et la version corrigée si elle existe
- Classez les vulnérabilités trouvées par ordre de priorité de traitement
- Expliquez pourquoi le pipeline est configuré pour bloquer uniquement sur
HIGHetCRITICAL