Plugin Maven de Snyk : analyse intégrée des vulnérabilités pour les développeurs
20 avril 2021
0 minutes de lectureMaven est le système de build le plus utilisé dans l’écosystème Java depuis de nombreuses années. Créer votre application avec Maven est simple, car il prend en charge de nombreuses tâches. Au cours des différentes phases du cycle de vie Maven, il s’occupe notamment de :
Télécharger les dépendances
Compiler votre code Java
Exécuter les tests unitaires
Créer un artefact prêt à être livré
Exécuter les tests d’intégration
Et bien plus encore
Avec Maven, le cycle de développement se déroule de la même manière sur chaque machine pour tous les développeurs de l’équipe, ainsi que dans le pipeline CI. Puisque Maven télécharge déjà les dépendances nécessaires et exécute les tests, ne serait-il pas formidable d’intégrer facilement l’analyse des vulnérabilités à ce cycle ? C’est justement ce que fait le plugin Maven de Snyk.
Il est essentiel d’analyser les dépendances de votre projet pour détecter les vulnérabilités de sécurité connues. Le moment idéal pour commencer à vérifier vos dépendances, c’est dès que vous les importez ! C’est pourquoi nous avons créé le plugin Maven de Snyk : vous pouvez désormais analyser les vulnérabilités de sécurité de votre application dans les bibliothèques tierces pendant le cycle de build, mettant ainsi l’expertise en sécurité entre les mains des développeurs.
Si vous souhaitez voir le plugin à l’œuvre avant de poursuivre votre lecture, voici une vidéo qui devrait vous plaire…

Le plugin Maven de Snyk
Le plugin Snyk pour Maven est généralement disponible et publié sur Maven Central. Il vous suffit de le configurer dans votre fichier pom.xml. Voici la configuration par défaut du plugin.
Comme vous pouvez le constater, nous distinguons deux objectifs : test et monitor. Après avoir ajouté le plugin à votre projet, il vous suffit d’exécuter mvn snyk:test ou mvn snyk:monitor. Par défaut, l’objectif snyk test est associé à la phase test du cycle de vie Maven. Cela signifie qu’il s’exécute automatiquement une fois la phase de test Maven terminée. L’objectif Snyk monitor est associé à la phase install et fonctionne de la même manière.
Comme avec n’importe quel autre plugin Maven, vous pouvez modifier ce comportement. Dans la partie execution, il vous suffit d’ajouter une balise <phase>. Vous pouvez lui attribuer une phase existante, comme test, package ou verify, ou aucune. Dans l’exemple ci-dessous, j’ai associé snyk-test à la phase verify et snyk-monitor à none. Vous pouvez toujours exécuter manuellement mvn snyk:monitor, mais il ne sera plus lancé automatiquement pendant une phase du cycle de build.
Pour ignorer l’exécution de l’objectif Snyk dans votre cycle de vie, il vous suffit d’ajouter -Dsnyk.skip à votre commande. Ex. :
Comment fonctionne le nouveau plugin Maven de Snyk ?
Il existait déjà un plugin Snyk pour Maven, mais il utilisait une logique personnalisée pour déterminer l’arbre des dépendances. Par conséquent, les résultats de la CLI et de l’ancien plugin Maven pouvaient légèrement différer.
Comme le plugin Gradle, le nouveau plugin Maven de Snyk utilise désormais réellement la CLI Snyk en arrière-plan. Il télécharge et met à jour automatiquement le binaire CLI approprié : il n’est donc pas nécessaire de préinstaller la CLI. Il vous suffit d’avoir un compte Snyk gratuit pour obtenir le jeton API.
Configurer le plugin Maven de Snyk
Pour configurer le plugin, vous devez définir le jeton API afin d’activer l’analyse de sécurité des dépendances avec Snyk. Vous trouverez ce jeton dans la section Paramètres généraux de votre compte Snyk. Vous pouvez également créer un jeton spécifique pour un compte de service.

Dans le premier exemple de cet article, je n’ai pas placé le jeton dans le fichier pom. À la place, j’ai créé sur ma machine une variable d’environnement globale SNYK_TOKEN et je l’ai utilisée.
Ainsi, mon jeton secret ne figure pas dans le fichier pom, ce qui est particulièrement utile lorsque vous publiez votre code dans un dépôt open source.
Dans la partie <args> de la configuration, vous pouvez fournir n’importe quelle option que vous utilisez habituellement avec la CLI. Dans mon exemple, j’utilise l’option --all-projects. Tous mes projets seront alors analysés en une seule fois, quel que soit leur écosystème. Cette option est particulièrement utile si votre projet comporte plusieurs fichiers pom.
Vous pouvez également configurer certains paramètres spécifiques de la CLI. Par défaut, la CLI se met automatiquement à jour une fois par jour, lors de sa première exécution. Toutefois, si vous souhaitez utiliser un binaire ou une version précise de la CLI, ou modifier la stratégie de mise à jour, vous pouvez ajouter un objet <cli> dans <configuration>. Tous les paramètres possibles sont documentés dans le dépôt GitHub. Dans l’exemple ci-dessous, je définis <updatePolicy> sur always. Le plugin recherche ainsi de nouvelles mises à jour de la CLI à chaque exécution, et non une seule fois par jour.
Intégrez la sécurité à votre cycle de vie Maven
Intégrer l’analyse de Snyk Open Source au cycle de build Maven est simple et naturel. Avec le nouveau plugin Snyk pour Maven, cette intégration est transparente et s’exécute de la même manière sur toutes les machines, y compris dans votre pipeline CI. Vous n’avez plus besoin d’appeler la CLI manuellement, et la configuration de l’analyse Snyk Open Source est enregistrée dans le projet. Un souci de moins pour les développeurs.
Pour en savoir plus sur le plugin, consultez notre dépôt GitHub. Et n’oubliez pas de créer un compte Snyk gratuit avant de profiter de cette intégration.
Voici quelques ressources complémentaires que je vous recommande vivement de consulter :
Dépendances Gradle : analyse avec le nouveau plugin Gradle de Snyk
Comment corriger les problèmes de sécurité Java pendant que vous codez dans IntelliJ IDEA
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis de capture du drapeau en regardant à la demande notre atelier virtuel d’initiation.
