By Walid ETTAYEB

La conteneurisation est l'une des pratiques modernes de plus en plus utilisées par les équipes de développement de logiciels à mesure que la culture DevOps continue de gagner en popularité. La plupart de ces environnements bénéficient des fonctionnalités riches fournies par la conteneurisation telles que la scalabilité, la portabilité et l'isolation des processus.

Cependant, il est essentiel de considérer la "sécurité" d'un logiciel avant de l'expédier à vos clients. Lors de la création d'images de conteneur, l'utilisation intensive de bibliothèques tierces et obsolètes signifie que vous risquez d'introduire des vulnérabilités supplémentaires dans les images que vous pusher. Il est donc nécessaire d'avoir un moyen fiable de scanner les images de conteneur. C'est là que Trivy est utile.

Qu'est-ce que Trivy ?


Trivy est un outil open source facile à utiliser, rapide et complet utilisé par les équipes DevOps et sécurité pour la détection de vulnérabilités et la numérisation de l'infrastructure en tant que code (IaC) des conteneurs et des artefacts. Maintenu par Aquasecurity, Trivy :

  • fonctionne avec des conteneurs, des systèmes de fichiers ou même des dépôts git.
  • est facile à installer sans prérequis, tels que l'installation d'une base de données.
  • est rapide à exécuter car aucune base de données n'est impliquée.
  • correspond à la méthodologie DevSecOps car il peut être intégré aux systèmes d'intégration continue (Circle CI, Jenkins, GitLab CI ou GitHub Actions).
trivy shemas de fonctionnement

Pour en savoir plus sur les différents systèmes d'exploitation et les dépendances d'applications que Trivy peut scanner, consultez les liens suivants:

https://aquasecurity.github.io/trivy/v0.28.1/docs/vulnerability/detection/os/

https://aquasecurity.github.io/trivy/v0.28.1/docs/vulnerability/detection/language/

Trivy est-il gratuit ?


Oui, Trivy est 100% gratuit car c'est un projet open source. Aqua, l'équipe derrière Trivy, s'engage à garantir que ce projet reste open source car cela garantit la maintenance d'un code de haute qualité et la participation à d'autres projets open source.

Comment intégrer Trivy dans une pipeline GitLab CI existante ?

Il existe deux approches pour intégrer le scanner Trivy dans GitLab CI. Premièrement, CI de GitLab offre une intégration de scanner de sécurité basée sur Trivy si vous hébergez vos conteneurs avec le registre de conteneurs de GitLab. C'est probablement la solution la plus facile pour intégrer Trivy dans une pipeline CI. Vous pouvez trouver plus d'informations avec ce lien: https://docs.gitlab.com/ee/user/application_security/container_scanning/.

D'autre part, si vous utilisez un autre registre de conteneurs, dans notre cas Google Container Registry, les choses fonctionneront un peu différemment mais ne seront pas un grand défi à accomplir.

Pour utiliser Trivy dans votre pipeline GitLab CI existante, vous devez ajouter un job de test de vulnérabilité à votre fichier .gitlab-ci.yml . Voici un exemple de fichier .gitlab-ci.yml  qui montre comment cela peut être fait :

stages:
  - test

trivy_scan:
  stage: test
  image: aquasec/trivy:0.20.0
  script:
    - trivy --exit-code 1 --severity HIGH,CRITICAL image your-image:latest

Dans cet exemple, nous avons créé un job appelé trivy_scan qui est exécuté lors de la phase test. Nous utilisons l'image Docker aquasec/trivy:0.20.0 qui contient la dernière version de Trivy. Dans le script, nous exécutons la commande trivy avec les options --exit-code 1 pour que le job échoue si des vulnérabilités de gravité  HIGH ou CRITICAL sont trouvées dans votre image Docker your-image:latest .

Assurez-vous de remplacer your-image:latest par le nom de votre propre image Docker et sa version.

Ensuite, il vous suffit d'ajouter ce fichier .gitlab-ci.yml à la racine de votre dépôt GitLab et de pousser vos modifications. Le pipeline GitLab CI s'exécutera automatiquement et le job trivy_scan sera exécuté pour tester votre image Docker.

J'espère que cela vous aidera à intégrer Trivy dans votre pipeline GitLab CI. Si vous avez d'autres questions, n'hésitez pas à demander.

Options :

--no-progress : supprime la barre de progression générée pour garder le terminal silencieux ;

--ignore-unfixed : par défaut, Trivy détecte les vulnérabilités non corrigées/non corrigées. Cela signifie que vous ne pouvez pas corriger ces vulnérabilités même si vous mettez à jour tous les packages ;

--severity : vous permet de définir plus de filtres et de ne montrer que les vulnérabilités élevées ou critiques ;

--exit-code : lorsqu'il est défini sur 1, cela permettra à l'ensemble du pipeline d'échouer s'il trouve une vulnérabilité critique ;

.trivyignore : n'est pas utilisé dans notre cas, mais si vous pensez qu'une vulnérabilité doit être ignorée.

Exemples de résultats

Scan de l'image ubuntu 18.04 :

trivy image ubuntu:18.04

Resultat :

Total: 36 (UNKNOWN: 0, LOW: 31, MEDIUM: 5, HIGH: 0, CRITICAL: 0)

Walid ETTAYEB • 36 Articles

Passionné par l'informatique depuis mon plus jeune âge, je transforme ma passion en expertise.

View Articles