Skip to main content

Aide-mémoire Snyk CLI

Écrit par
Blog Headers cli cheat sheet

26 novembre 2020

0 minutes de lecture

Dernière mise à jour : avril 2022

Vous avez une ancienne version du guide de référence Snyk CLI ? Téléchargez la dernière version ci-dessous.

Snyk CLI est un outil puissant et performant pour analyser vos applications, vos conteneurs et votre infrastructure as code à la recherche de vulnérabilités. Dans cet aide-mémoire, nous allons passer en revue les fonctionnalités les plus puissantes de notre CLI. Vous pouvez l’utiliser pour analyser et surveiller vos projets sur votre machine locale, mais aussi l’intégrer à votre pipeline. Quelle que soit votre manière de l’utiliser, Snyk CLI est l’outil de référence pour tester, surveiller et corriger les vulnérabilités connues de vos applications.

Nous améliorons continuellement notre CLI, dont les fonctionnalités sont trop nombreuses pour être toutes abordées dans un seul aide-mémoire. Pour en savoir plus, consultez la documentation de Snyk CLI. Pour découvrir les capacités de la CLI pour un langage ou un système de build spécifique, consultez notre page sur la prise en charge des langages :

Aide-mémoire Snyk CLI avec des sections numérotées sur l’installation, l’authentification, l’analyse et le suivi des projets, l’analyse du code et des conteneurs, et la documentation.
Télécharger la fiche mémo

Installation

Commençons par le début. Si vous n’avez pas encore installé Snyk CLI, faites-le avant toute chose. Vous pouvez actuellement installer Snyk CLI avec npm, Homebrew ou Scoop, ou télécharger un binaire spécifique depuis GitHub.

npm

npm install snyk -g

Homebrew

brew tap snyk/tap && brew install snyk

Scoop

scoop bucket add snyk https://github.com/snyk/scoop-snyk
scoop install snyk

Installation manuelle

Un programme d’installation manuel est disponible sur la page GitHub de Snyk.

Authentification

Une fois la CLI installée, vous devez vous authentifier avec votre compte Snyk. Plusieurs méthodes sont possibles.

Lorsque vous exécutez snyk auth, le navigateur vous redirige vers la page d’inscription ou de connexion, où vous pouvez vous authentifier ou créer un compte.

Vous pouvez également exécuter snyk auth [api-token] en fournissant un jeton d’API Snyk, que vous pouvez récupérer sur la page de votre compte.

La dernière option, que nous recommandons tout particulièrement pour les tests CI, consiste à créer une variable d’environnement nommée SNYK_TOKEN. Toutes les commandes Snyk CLI l’utiliseront sans qu’il soit nécessaire d’exécuter explicitement snyk auth.

Conseil de pro : veillez à mettre à jour et à réinstaller régulièrement la CLI. Nous corrigeons et publions fréquemment de nouvelles versions. Ne passez pas à côté des nouvelles fonctionnalités améliorées.

Commandes de la CLI

Snyk CLI prend une commande suivie de plusieurs options. Veillez à exécuter les commandes de la CLI dans le dossier du projet. Voyons à quoi sert chacune de ces commandes.

Snyk test

La commande snyk test recherche les vulnérabilités connues dans un projet local. Elle fournit des informations sur ces vulnérabilités : gravité, types et descriptions, nombre de chemins vulnérables, mesures correctives, et plus encore. Snyk CLI détecte automatiquement vos fichiers manifest et analyse le premier fichier trouvé. Snyk recherche les dépendances locales pour détecter les vulnérabilités. Vous devez donc télécharger l’arborescence des dépendances avant d’exécuter snyk test, par exemple avec npm install, mvn install, dotnet restore ou dep ensure.

Snyk test est également très utile dans un pipeline CI. En exécutant snyk test pendant la compilation du binaire, vous saurez immédiatement si votre projet contient des vulnérabilités. Vous pouvez même interrompre votre pipeline et bloquer entièrement le processus. Si vous appelez snyk test depuis un script, il vous suffit de vérifier le code de sortie. S’il est égal à 0, tout va bien et aucune vulnérabilité n’a été détectée. Dans le cas contraire, il vous reste probablement du travail à faire.

Si votre projet contient plusieurs fichiers manifest, vous pouvez en tester un en particulier. Utilisez l’option --file pour indiquer le fichier à analyser.

$ snyk [cmd] --file=package.json

De même, vous pouvez indiquer le gestionnaire de paquets à l’aide de l’option --package-manager. Cela peut être utile dans les rares cas où Snyk ne détecte pas automatiquement le gestionnaire de paquets.

$ snyk test --file=req.txt --package-manager=pip

Pour tester tous les projets d’un dossier, utilisez l’option --all-projects. Elle lance une détection automatique pour analyser le répertoire actuel et tester tous les fichiers manifest trouvés. Par défaut, Snyk analyse le répertoire actuel ainsi que les trois niveaux de sous-dossiers suivants. Pour modifier la profondeur, ajoutez l’option --detection-depth.

$ snyk test --all-projects --detection-depth=4

Par défaut, Snyk ne teste pas les dépendances de développement, car beaucoup les considèrent comme du bruit par rapport aux vulnérabilités en production. Pour inclure également vos dépendances de développement, utilisez l’option --dev.

$ snyk test --dev

L’option --org est également utile avec la commande test et d’autres commandes Snyk. Elle associe un test ou une commande Snyk à une organisation spécifique. Les organisations sont des espaces où vous pouvez regrouper des projets et associer plusieurs utilisateurs. C’est particulièrement pratique pour travailler en équipe et créer des instantanés avec snyk monitor. Si vous ne précisez pas d’organisation, vos résultats seront associés à votre organisation par défaut.

$ snyk [cmd] --org=<org_id>

Vous pouvez aussi tester des dépôts publics depuis la ligne de commande. Il vous suffit de fournir directement l’URL du dépôt public dans la commande. Cette fonctionnalité ne fonctionne avec les dépôts npm que si le fichier package-lock.json est disponible. Essayez :

$ snyk test https://github.com/snyk/goof

Vous pouvez également tester à distance des paquets npm en indiquant uniquement leur nom pour tester la dernière version, ou en précisant le nom du paquet et sa version.

$ snyk test lodash
$ snyk test ionic@1.6.5
Rapport de vulnérabilités dans un terminal présentant les problèmes pouvant être mis à niveau ou corrigés, ainsi que ceux non résolus, avec leur niveau de gravité et les versions des packages.

Après l’exécution de snyk test sur un projet, les résultats s’affichent dans trois sections.

  • Problèmes à corriger par une mise à niveau : en mettant à jour la bibliothèque comme indiqué, vous éliminerez une ou plusieurs vulnérabilités détectées dans votre projet.

  • Problème pouvant être corrigé par un correctif : aucune mise à jour ne permet de résoudre le problème. Snyk a toutefois créé un correctif pour remédier à la vulnérabilité.

  • Problèmes sans mise à niveau ni correctif direct : aucune mise à jour n’est disponible pour la dépendance que vous avez importée. La vulnérabilité peut en réalité se trouver dans l’une des dépendances transitives. Si une version plus récente de cette dépendance transitive corrige déjà la vulnérabilité, nous vous l’indiquons également. Dans certains écosystèmes, vous pouvez remplacer manuellement les dépendances transitives ; cette information vous sera donc utile.

Pour chaque vulnérabilité affichée par la CLI dans l’une de ces trois sections, vous pouvez consulter une description, son niveau de gravité et un lien pour en savoir plus sur le problème en question.

Si vous préférez obtenir les résultats de la CLI au format JSON, utilisez l’option --json. Vous pourrez ensuite les mettre en forme comme vous le souhaitez.

$ snyk test --json

Il est encore plus simple d’enregistrer les résultats de l’analyse dans un fichier JSON. Avec l’option --json-file-output flag, vous pouvez enregistrer directement les résultats dans le fichier de votre choix afin de les examiner ultérieurement. En attendant, les résultats restent lisibles dans votre console, comme indiqué précédemment. C’est une solution idéale pour les pipelines CI, par exemple si vous souhaitez afficher les résultats d’une compilation donnée dans un tableau de bord. Essayez :

$ snyk test --json-file-output=vuln.json

Notez également que nous proposons un convertisseur Snyk JSON vers HTML, qui met en forme vos résultats dans un rapport HTML soigné que vous pouvez présenter à votre responsable.

Vous pouvez filtrer les résultats de la CLI par niveau de gravité avec l’option --severity-threshold. Si les vulnérabilités de gravité moyenne ou faible ne vous intéressent pas, vous pouvez les exclure comme suit :

$ snyk [cmd] --severity-threshold=high

Snyk monitor

La commande snyk monitor crée un instantané de votre projet et envoie les résultats sur le site Web de Snyk. Même si snyk monitor utilise snyk test en interne, il est important de comprendre qu’il ne le remplace pas : Snyk monitor crée un instantané et le surveille au fil du temps. Si de nouvelles vulnérabilités ou de nouvelles solutions correctives avantageuses pour votre projet sont détectées, vous recevrez une alerte sur le canal de communication de votre choix.

Dans un environnement CI, vous exécutez généralement d’abord snyk test pour vérifier si des vulnérabilités sont présentes à cet instant. Si c’est le cas, vous pouvez interrompre le build, selon le cas d’usage. Si vous poursuivez, snyk monitor sert généralement à créer un instantané de cette version afin de la surveiller au fil du temps. Le moment idéal pour le faire est juste avant la mise en production. Lorsque vous estimez acceptable un certain niveau de vulnérabilités, snyk monitor vous aide à éviter toute régression au fil du temps.

Lorsque vous exécutez snyk monitor, veillez à fournir suffisamment d’informations pour que votre instantané soit enregistré au bon endroit. Si vous appartenez à plusieurs organisations, indiquez celle à laquelle envoyer l’instantané à l’aide de l’option --org. Si vos projets ont des noms similaires, vous pouvez remplacer le nom attribué par défaut par Snyk en indiquant le nom de votre choix avec l’option --project-name.

$ snyk monitor --file=package.json --project-name=myapp --org=myorg

Snyk ignore

Supposons que votre application contienne une vulnérabilité pour laquelle aucun correctif ni aucune mise à jour n’est disponible, ou une vulnérabilité que vous estimez actuellement inexploitée dans votre application. Vous pouvez alors demander à Snyk de l’ignorer pendant une période donnée. Pour utiliser la commande ignore, exécutez d’abord snyk test et récupérez l’identifiant de la vulnérabilité dans les résultats de la CLI. Vous pouvez ensuite l’ignorer avec la commande suivante :

$ snyk ignore --id=npm:tough-cookie:20160722 --expiry=2019-04-30 --reason='Not currently exploitable'

Les options --expiry et --reason sont facultatives. Par défaut, la vulnérabilité de sécurité est ignorée pendant 30 jours.

Remarque : la commande snyk ignore crée un fichier .snyk contenant des informations sur le problème de sécurité que vous ignorez.

Snyk Container

Snyk Container permet, depuis la CLI, d’analyser des images de conteneur telles que les images Docker. Cette fonctionnalité était auparavant accessible à l’aide de l’option --docker de la CLI.

Comme pour l’analyse et la surveillance de vos applications, vous pouvez analyser vos images Docker avec Snyk.

Pour télécharger des images depuis Docker Hub, vous pouvez les analyser et les surveiller comme suit :

$ snyk container test <image>:<tag>
$ snyk container monitor <image>:<tag>

Si vous ajoutez un Dockerfile à l’une de ces commandes, Snyk vous propose notamment des recommandations de correction pour l’image de base que vous utilisez. Si d’autres images de base sont disponibles pour l’image que vous avez créée, nous pouvons vous indiquer ces alternatives.

Snyk Container prend en charge non seulement les conteneurs Docker, mais aussi les images distroless. Vous pouvez analyser ces images comme suit :

$ snyk container test gcr.io/distroless/base | head

Vous pouvez également analyser et surveiller des archives de conteneurs grâce aux fonctionnalités de Snyk Container. L’analyse fonctionne pour les archives de conteneurs Docker et les images Open Container Initiative (OCI).

$ snyk container test docker-archive:container.tar
$ snyk container test oci-archive:container.tar

Comme pour l’analyse de vos applications, les options --json et --json-file-output sont disponibles pour une intégration fluide à vos propres systèmes.

En savoir plus sur Snyk CLI Container

Snyk Infrastructure as Code (Snyk IaC)

Grâce aux fonctionnalités d’analyse de Snyk Infrastructure as Code, les développeurs peuvent détecter et corriger les erreurs de configuration susceptibles d’entraîner des problèmes de sécurité. La commande snyk iac vous permet également d’utiliser cette fonctionnalité dans Snyk CLI, sur votre machine locale ou dans votre environnement CI. Vous obtenez ainsi des retours le plus tôt possible dans votre cycle de développement. Snyk IaC prend en charge Kubernetes, Helm Charts et les ressources AWS de Terraform.

Pour analyser un fichier Kubernetes ou Terraform, vous pouvez essayer une commande de ce type :

$ snyk iac test /path/to/Kubernetes.yaml
$ snyk iac test /path/to/terraform_file.tf

Comme avec snyk test, les problèmes détectés par snyk iac sont accompagnés d’une description et d’un niveau de gravité. Si vous avez besoin de résultats au format JSON pour les intégrer à votre système, les options --json et --json-file-output sont également disponibles :

$ snyk iac test /path/to/Kubernetes.yaml --json

Snyk IaC vous permet également de détecter et de suivre les dérives d’infrastructure et les ressources non gérées, ainsi que de générer des alertes à leur sujet :

$ snyk iac describe <OPTIONS>

En savoir plus sur Snyk CLI IaC

Dépannage

Si vous ne savez pas quelle commande utiliser ou comment fonctionne une option particulière, vous pouvez toujours utiliser l’option --help ou exécuter snyk help.

$ snyk auth --help
$ snyk container --help

Débogage

En cas de problème, vous pouvez demander à la CLI d’afficher les journaux de débogage avec l’option -d. Lorsque vous contactez notre formidable équipe d’assistance, elle vous demandera probablement de le faire également :

$ snyk [cmd] -d

Vous n’avez plus de tests pour un projet open source ?

L’analyse Snyk est gratuite et illimitée pour le développement open source. Cependant, nous ne reconnaissons pas toujours les projets open source. Si la sortie de la CLI vous indique que vous allez bientôt épuiser votre quota de tests, suivez les étapes ci-dessous pour prouver que votre projet est bien open source.

  1. Exécutez snyk monitor

  2. Accédez à votre application dans le navigateur. (L’URL directe figure dans la sortie de la CLI.)

  3. Cliquez sur Settings dans le menu.

  4. Saisissez l’URL de votre dépôt open source dans le champ Git remote URI.

Formulaire Open Source avec des instructions, un champ de saisie d’URI de dépôt Git distant et un bouton Enregistrer

Les résultats des tests ne sont pas ceux attendus ?

Pour obtenir les meilleurs résultats, reconstruisez l’intégralité de votre projet avant d’exécuter les commandes de la CLI. Si la sortie de snyk test ou de snyk monitor ne correspond pas à vos attentes, exécutez votre outil de build pour télécharger et installer toutes les dépendances.

Par exemple :

$ npm install
$ mvn install
$ dotnet restore
$ dep ensure

Supprimer votre clé API et votre configuration

Si vous avez authentifié votre CLI à l’aide de snyk auth, vous pouvez supprimer votre jeton de la configuration avec la commande suivante :

$ snyk config unset api

Pour en savoir plus sur les autres paramètres de configuration, exécutez :

$ snyk help config

Vérifier votre version

Utilisez toujours la dernière version de notre CLI. Nous publions une nouvelle version plusieurs fois par semaine, parfois même plus souvent.

Veillez à (ré)installer la dernière version à l’aide de votre gestionnaire de paquets, comme décrit dans la première section, ou recherchez la dernière version sur notre dépôt GitHub.

Pour vérifier votre version actuelle, exécutez simplement :

$ snyk --version

Consulter la documentation

Chaque projet et écosystème a des besoins spécifiques. Consultez la documentation de la CLI et la documentation sur la prise en charge des langages pour trouver de l’aide adaptée à votre cas d’utilisation.

Lancez-vous dans les compétitions Capture The Flag

Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.