Aller au contenu

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.yml fonctionnel
  • 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

  1. Installez Trivy sur votre machine si ce n'est pas déjà fait
  2. Placez-vous à la racine de votre projet
  3. Lancez une analyse complète du projet avec la commande trivy fs .
  4. Relevez dans le rapport une vulnérabilité, le package concerné, le niveau de sévérité et la version corrigée si elle existe
  5. Corrigez une dépendance vulnérable si c'est possible
  6. 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

  1. Si vous disposez déjà d'une image Docker pour votre projet, utilisez-la
  2. Lancez la commande trivy image <nom-image>:<tag>
  3. Repérez les vulnérabilités HIGH et CRITICAL
  4. Comparez rapidement ce scan avec celui obtenu via trivy fs .
  5. 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

  1. Ajoutez un stage scan dans votre fichier .gitlab-ci.yml
  2. Créez un job trivy_scan
  3. Utilisez l'image aquasec/trivy:latest
  4. Définissez la variable TRIVY_CACHE_DIR avec la valeur .trivycache/
  5. Ajoutez une section cache pour conserver .trivycache/
  6. Dans le script, lancez un scan Trivy sur votre image Docker avec :
  7. --cache-dir $TRIVY_CACHE_DIR
  8. --exit-code 1
  9. --severity "HIGH,CRITICAL"
  10. Faites échouer volontairement le job en scannant une cible contenant une vulnérabilité HIGH ou CRITICAL
  11. Corrigez le problème ou changez la cible analysée pour obtenir un pipeline vert
  12. 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

  1. Récupérez le log du job trivy_scan dans GitLab
  2. Identifiez l'identifiant CVE, le composant vulnérable, la sévérité et la version corrigée si elle existe
  3. Classez les vulnérabilités trouvées par ordre de priorité de traitement
  4. Expliquez pourquoi le pipeline est configuré pour bloquer uniquement sur HIGH et CRITICAL

☕️ Si tu souhaites soutenir mon travail, tu peux m'offrir un café ici.