Dans le monde du développement logiciel, la sécurité est souvent reléguée au
second plan dans les cycles de développement. Cependant, avec l’émergence de
concepts tels que DevSecOps, il est devenu impératif d’intégrer la sécurité dès
les premières étapes du développement. C’est ici qu’intervient Trivy, un outil
d’analyse de code open source, devenu rapidement populaire dans la communauté
DevOps pour sa fiabilité, sa rapidité et sa facilité d’intégration dans les
pipelines CI/CD.
L’histoire de Trivy
Trivy a été lancé au départ avec la vision de simplifier la sécurité pour les
développeurs et les équipes d’opérations. Contrairement à d’autres outils qui
nécessitaient une configuration complexe et une compréhension approfondie des
aspects de sécurité, Trivy se distinguait par sa simplicité d’utilisation. Cette
facilité d’accès a permis même aux développeurs moins expérimentés en matière de
sécurité de l’intégrer dans leurs workflows de développement.
L’outil a évolué rapidement, passant d’un simple scanner de vulnérabilités à une
solution complète pour la sécurité des applications et des infrastructures.
Aujourd’hui, Trivy est capable de détecter non seulement les vulnérabilités dans
les images de conteneurs, mais aussi des configurations incorrectes contenues
dans l’Infrastructure as Code (IaC), les risques de sécurité des clusters
Kubernetes et bien plus encore.
Fonctionnalités de Trivy
Trivy se distingue non seulement par sa facilité d’utilisation, mais aussi par
son éventail complet de fonctionnalités qui en font un outil polyvalent pour la
sécurité dans le développement logiciel. Les bases de données de Trivy sont
constamment mises à jour avec les dernières informations sur les failles,
garantissant ainsi que les scans sont basés sur les données les plus récentes.
Trivy est capable de scanner une variété de “targets”, y compris les images de
conteneurs, les codes IaC, les dépôts Git, des images de VM, des clusters
kubernetes et depuis peu des configurations de compte AWS.
Trivy génère des SBOM ou des KBOM détaillés, fournissant un inventaire complet
des composants logiciels. Les SBOM permet d’avoir une compréhension approfondie
des composants utilisés à leur construction. Les SBOM peuvent être signé avec
Cosign, ainsi que l’image. Ces signatures pourront ensuite être vérifiées
avant d’être déployé dans un cluster kubernetes pour confirmer leur origine.
Trivy peut également lancer des benchs permettant de vérifier que les artefacts
produits sont conformes aux normes. Vous l’aurez compris Trivy ne se limite plus
au simple scan d’images de conteneurs. Voyons comment l’utiliser.
Installation de Trivy
L’installation de Trivy est assez simple, car le package ne contient qu’un seul
binaire.
Installation sur Linux
Sur les systèmes Linux, Trivy peut être installé via le gestionnaire de paquets.
Mais je vous conseille de le faire avec asdf qui
permet d’installer les dernières versions.
Installation sur macOS
Pour les utilisateurs de macOS, Trivy peut être installé via Homebrew en
exécutant la commande suivante :
Installation sur Windows
Sur Windows, Trivy peut être installé en téléchargeant le fichier exécutable
depuis la page de releases de Trivy sur GitHub et en l’ajoutant au PATH du
système. Un moyen est d’utiliser
chocolatey ↗.
Vérification de l’Installation
Une fois installé, vous pouvez vérifier que Trivy fonctionne correctement en
exécutant la commande suivante :
Cette commande affichera la version de Trivy installée, confirmant que
l’installation a été réussie.
Utilisation de la CLI Trviy
La CLI Trivy utilise ce format de commande :
Les principales commandes de scan
Les principales commandes de scan sont les suivantes :
image : scanne les images de conteneurs
fs : scanne les dossiers
repository : pour les dépôts Git
rootfs : scanne les rootfs des images ou des VM
repo: scanne les dépôts de code
sbom : scanne les (SBOM) existantes
vm : scannes les images de machines virtuelles locales (vmdk) ou sur AWS EC2
k8s : scannes les clusters
Trivy peut utiliser des scanners spécifiques qui sont :
vuln : pour les vulnérabilités
config : pour les mauvaises configurations dans du code IAC
secret : pour les secrets stockés en clair
license : pour lister les licences
Par défaut seuls les scanners vuln et secret sont lancés. Pour les autres, il
faudra les invoquer avec le global flag --scanners.
Ce qui donne par exemple la commande complète suivante :
Trivy va scanner l’image myimage:latest à la recherche de code d’infra
contenant des problèmes de sécurité.
On peut réaliser la même opération sur le scan d’une VM en utilisant la commande rootfs :
Trivy peut être configuré des manières suivantes. Chaque élément est prioritaire
sur l’élément situé en dessous :
Les flags de la CLI
Les Variables d’environnement
Fichier de configuration
Les flags de la CLI
Vous pouvez afficher la liste des indicateurs disponibles en utilisant l’
option --help.
Les variables d’environnement
Trivy peut être personnalisé par des variables d’environnement. La clé de la
variable d’environnement est le nom du flag converti par la procédure
suivante : TRIVY + _ + flag. Ce qui donne par exemple :
Le fichier de configuration
Il est possible d’utiliser un fichier nommé trivy.yaml pour définir les
options de Trivy. Voici un exemple de fichier :
L’automatisation de la sécurité dans les environnements DevOps va devenir essentiel.
Intégrer Trivy dans votre pipeline CI/CD permet d’effectuer des scans de
sécurité automatiques à chaque étape du développement, garantissant ainsi que
les vulnérabilités soient détectées et traitées rapidement.
Exemple avec Gitlab CI/CD
Pour analyser une image déjà construite et qui a déjà été transférée dans le
registre de conteneurs de GitLab. On peut utiliser un cache pour améliorer les
temps de scan. Le rapport peut ensuite être stocké dans Gitlab pour des besoins
futurs. Les variables d’environnement fournissent le moyen d’authentification à
la registry Gitlab. Il faudra au préalable créé ses variables dans la
configuration du projet.
Conclusion
À travers cette documentation, j’ai exploré en détail Trivy, un outil de scan de
sécurité open source essentiel pour les équipes de développement moderne. De son
installation simple à son intégration poussée dans les environnements CI/CD,
Trivy se distingue comme un outil incontournable pour assurer la sécurité des
applications et des infrastructures dans le cycle de développement.
Vous l’aurez compris Trivy est capable de scanner une variété de “targets”, y
compris les images de conteneurs, les codes IaC, les dépôts Git, des images de VM…
Au final Trivy facilite l’adoption de l’approche “Shift Left”, qui demande aux
équipes de traiter les problèmes de sécurité dès les premières étapes du
développement. Donc Trivy représente bien plus qu’un simple outil de scan de
sécurité.