
Sécurisez vos CI/CD avec Trivy
Des études récentes révèlent que 75 % des conteneurs contiennent des vulnérabilités critiques ou élevées, et 85 % des images en production présentent au moins une vulnérabilité non corrigée. Source
Un pipeline CI/CD, c'est un ensemble d'outils qui automatisent le développement, les tests et le déploiement des applications. Ça permet de rendre tout ce processus plus rapide et plus fiable. Cependant, pour que cela soit véritablement efficace, il est nécessaire de considérer la sécurité dès le début. C'est ce qu'on appelle le "Shift Left Security".
C'est à ce moment précis que Trivy prend le relais ! Trivy est un outil de détection des vulnérabilités open source qui inspecte les conteneurs, le code et même les dépendances. Il est rapide, intuitif, et s'adapte à beaucoup d'outils DevOps connus. Trivy vous offre la possibilité de détecter des vulnérabilités dès leur apparition, améliorant ainsi considérablement la sécurité de vos applications.
Pourquoi utiliser Trivy dans une CI/CD ?
Je vais essayer de vous convaincre :
• Identification anticipée des vulnérabilités : Trivy repère les failles de sécurité basé sur les CVE et les mauvaises configurations, dès les premières étapes du développement (selon votre CI). Les problèmes n'ont plus de retard, ils arrivent dès qu'on commence à respirer !
• Prise en charge multi-cibles : Que vous utilisiez Docker, Kubernetes ou que vous développiez du code applicatif, Trivy répond à toutes vos exigences. Trivy peut aussi bien scanner votre repo pour savoir si un mot de passe y est en clair, comme scanner une image docker et y trouver des éventuelles vulnérabilités, ou encore scanner votre cluster. Une solution unique pour tous vos projets… et pas besoin de consulter 15 experts qui ne sont jamais d’accord !
• Intégration transparente : Trivy se couple aisément avec vos outils de prédilection tels que GitHub Actions, GitLab CI, Jenkins, et bien d'autres. Pas besoin de changer vos habitudes, Trivy s'ajoute en douceur à votre workflow, comme un ninja discret… mais efficace !
Alors convaincu ? Aller on continue …
Tester rapidement Trivy avec Docker
Étape 1 : Télécharger Trivy (Docker)
Pour commencer, vous pouvez utiliser Docker pour télécharger rapidement Trivy. Ouvrez votre terminal et exécutez la commande suivante :
docker pull aquasec/trivy:0.18.3
Cette commande télécharge l'image Docker de Trivy version 0.18.3. Une fois le téléchargement terminé, vous êtes prêt à scanner !
Étape 2 : Scanner une image Docker
Pour scanner une image Docker, utilisez la commande suivante. Remplacez \<nom-image> par le nom de l'image que vous souhaitez analyser. Par exemple, pour scanner une image nommée nginx:latest
:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy:0.18.3 image nginx:latest
Cette commande lance Trivy dans un conteneur Docker et scanne l'image nginx:latest
pour détecter les vulnérabilités.
Tester Trivy en local
Installer Trivy
Il suffit de suivre la documentation officielle : https://trivy.dev/v0.18.3/installation/
Mais en résumé, sous linux un simple apt-get install trivy
devrait suffire.
Scanner une image docker
trivy image nginx:latest
Tout simplement :)
Résultat avec un template
trivy image --format template --template "@contrib/html.tpl" -o report.html nginx:latest
Ici la commande va sortir le résultat sous forme de fichier html
. Pour cela, il faut au préalable avoir le template sur sa machine grâce à la commande wget https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/html.tpl -P contrib/
. Et voici le résultat :
Intégrer Trivy dans une CI/CD
Dans cet exemple, nous allons utiliser GitLab CI pour illustrer l'intégration d'une étape de scan de sécurité avec Trivy :
stages:
- test
- build
- deploy
trivy-scan:
stage: test
image:
name: docker.io/aquasec/trivy:latest
entrypoint: [""]
script:
- trivy image --clear-cache
- trivy image --download-db-only
- trivy image --severity HIGH,CRITICAL nginx:latest
build:
image: docker:latest
stage: build
script:
- echo "Building the project..."
- docker build -t nginx:latest .
deploy:
image: docker:latest
stage: deploy
script:
- echo "Deploying the project..."
- docker run -d --name my-app nginx:latest
Ce fichier .gitlab-ci.yml
standard inclut un stage test
, avec un job trivy-scan
. Celui-ci utilise l'image Docker de Trivy pour analyser les vulnérabilités de l'image nginx:latest
.
trivy image --clear-cache
:- Efface le cache local de Trivy, ce qui garantit l'utilisation des dernières bases de données de vulnérabilités.
trivy image --download-db-only
:- Télécharge uniquement la base de données des vulnérabilités sans effectuer de scan, pour s'assurer qu'elle est bien à jour.
trivy image --severity HIGH,CRITICAL nginx:latest
:- Analyse l’image
nginx:latest
. - Ne signale que les vulnérabilités de sévérité
HIGH
etCRITICAL
, pour se concentrer sur les plus critiques.
- Analyse l’image
Note
Depuis la version 15.0 de GitLab CI, des composants officiels sont mis à disposition des développeurs. Parmi eux, on trouve le composant Container Scanning, qui permet d’analyser automatiquement les images Docker à la recherche de vulnérabilités.
Avant la version 15.0, cette fonctionnalité était exclusivement réservée aux utilisateurs de GitLab Ultimate. Désormais, elle est disponible gratuitement pour toutes les éditions de GitLab, offrant ainsi un accès élargi aux outils de sécurité des conteneurs.
Ce composant s’intègre facilement dans un pipeline GitLab CI/CD et repose sur des outils de sécurité comme Trivy ou Clair. Il offre une solution native pour renforcer la sécurité des conteneurs avant leur déploiement.
Bonus
--severity
: Filtre les vulnérabilités par niveau de gravité. Par exemple,--severity CRITICAL,HIGH
pour ne voir que les vulnérabilités critiques et élevées.--ignore-unfixed
: Ignore les vulnérabilités qui n'ont pas de correctif disponible. Utile pour se concentrer sur les problèmes que vous pouvez réellement résoudre.--exit-code
: Définit le code de sortie en fonction de la gravité des vulnérabilités trouvées. Par exemple,--exit-code 1
pour faire échouer le pipeline CI/CD si des vulnérabilités critiques sont détectées.--format
: Spécifie le format de sortie du rapport. Options incluent table, json, sarif, etc. Par exemple,--format json
pour obtenir un rapport au format JSON.--ignorefile
: Spécifie un fichier contenant des vulnérabilités à ignorer. Par exemple,--ignorefile .trivyignore
pour utiliser un fichier .trivyignore à la racine de votre projet.- Trivy a aussi sa propre extention Vscode, ça peut-être super utile en local !
Les bonnes pratiques
La règle numéro 1 : Scannez tôt et souvent ! Ajoutez Trivy dans votre pipeline CI/CD et faites un scan à chaque commit. Comme ça, vous repérez les vulnérabilités avant qu’elles ne fassent trop de dégâts. Votre code reste sécurisé et vous évitez les mauvaises surprises.
Ensuite, l’automatisation des corrections, c’est toujours une bonne idée. En automatisant les mises à jour et les corrections des dépendances vulnérables, vous réduisez la charge de travail manuelle et vous assurez que votre code est toujours au top sans devoir y penser à chaque instant.
Les pièges courants
Mais attention, il y a quelques pièges à éviter. Les faux positifs, par exemple, peuvent surgir comme des fantômes. Ne perdez pas de temps à les poursuivre ! Vérifiez chaque alerte pour ne pas partir dans une chasse aux chimères. Un bon processus pour trier les alertes est essentiel pour garder votre esprit clair.
Les performances, ça peut aussi devenir un casse-tête. Les scans de sécurité peuvent être gourmands en ressources. Mais pas de panique ! Avec des techniques comme le cache et les scans incrémentaux, vous pouvez accélérer tout ça et éviter que votre machine n'implose sous la pression.
Enfin, n’oubliez pas que Trivy, aussi puissant soit-il, ne doit pas être votre seul bouclier. Pour une sécurité à toute épreuve, n’hésitez pas à combiner plusieurs outils et pratiques. La défense multicouche, c’est la clé pour protéger vos applications des vilaines attaques !
Voilà, vous êtes prêt à déployer Trivy sans crainte et à garder un oeil sur les pièges !
Découvrez les derniers articles d'alter way