
Analyse automatisée des vulnérabilités Snyk pour les dépendances et les images Docker dans Bitbucket Pipelines, avec des seuils de gravité et des options de surveillance.
Ce pipe utilise Snyk pour trouver, corriger et surveiller les vulnérabilités connues dans vos dépendances d'application et votre image Docker.
Ajoutez l'extrait suivant à la section script de votre fichier bitbucket-pipelines.yml :
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: "<string>"
# LANGUAGE: "<string>" # Required unless SNYK_TEST_JSON_INPUT is set
# IMAGE_NAME: "<string>" # Only required if LANGUAGE set to "docker"
# SNYK_BASE_IMAGE: "<string>" # Custom base image
# CODE_INSIGHTS_RESULTS: "<boolean>" # Optional.
# SNYK_TEST_JSON_INPUT: "<string>" # Optional. The filename or path of a JSON file containg the output from running a test with the Snyk CLI (with json output option).
# PROTECT: "<boolean>" # Optional.
# DONT_BREAK_BUILD: "<boolean>" # Optional.
# MONITOR: "<boolean>" # Optional.
# SEVERITY_THRESHOLD: "<low|medium|high|critical>" # Optional.
# ORGANIZATION: "<string>" # Optional.
# PROJECT_FOLDER: "<string>" # Optional.
# TARGET_FILE: "<string>" # Optional.
# EXTRA_ARGS: "<string>" # Optional.
# DEBUG: "<boolean>" # Optional.
# SNYK_API: "<string"> # Optional.
(*) = variable obligatoire.
En intégrant Snyk dans Bitbucket Pipelines, vous pouvez tester, corriger et surveiller en continu votre codebase pour détecter les vulnérabilités connues dans vos dépendances et votre image Docker.
Pour en savoir plus sur Snyk, rendez-vous sur notre site web.
Pour les langages / gestionnaires de packages avec des environnements plus avancés comme Java avec Maven ou Gradle, vous devez utiliser directement la CLI Snyk dans votre pipeline. Voir l'exemple « Utilisation directe de la CLI Snyk ». Si vous souhaitez également générer un rapport Code Insights, vous pouvez fournir la sortie de test de la CLI Snyk à ce Pipe - voir l'exemple « Génération du rapport Code Insights à partir d'une sortie JSON Snyk existante ».
Le jeton API Snyk est nécessaire pour utiliser ce pipe.
Utilise Snyk pour analyser une application Node.js et interrompre la construction si des vulnérabilités sont trouvées.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
Utilise une image Docker personnalisée fournie pour exécuter vos analyses Snyk. Utile si vous ne souhaitez pas utiliser les images Snyk par défaut. L'image prendra le format <MY_CUSTOM_IMAGE>:<TAG>, où MY_CUSTOM_IMAGE et TAG correspondent respectivement aux variables SNYK_BASE_IMAGE et LANGUAGE.
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "latest"
SNYK_BASE_IMAGE: $BASE_IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
### Exemple d'analyse de base d'image Docker
Utilise Snyk pour analyser une image Docker et interrompre la construction si des vulnérabilités sont trouvées.
```yaml
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
Ceci est particulièrement pertinent pour les langages qui ont des environnements de construction plus complexes - par exemple Java avec Maven ou Gradle. Dans ces scénarios, vous pouvez tester votre application avec la CLI Snyk en utilisant une variante de snyk test. Le moyen le plus simple d'installer la CLI Snyk est avec npm (npm install -g snyk) mais si npm n'est pas disponible dans votre environnement de construction, vous pouvez télécharger un binaire avec curl depuis https://github.com/snyk/snyk/releases.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects
# rest of your pipeline...
Ceci est particulièrement pertinent pour les langages qui ont des environnements de construction plus complexes - par exemple Java avec Maven ou Gradle. Dans ces scénarios, vous pouvez tester votre application avec la CLI Snyk en utilisant une variante de snyk test --json > snyk-test-output.json, puis fournir le fichier de sortie au Pipe pour générer un rapport Code Insights. Le moyen le plus simple d'installer la CLI Snyk est avec npm (npm install -g snyk) mais si npm n'est pas disponible dans votre environnement de construction, vous pouvez télécharger un binaire avec curl depuis https://github.com/snyk/snyk/releases.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects --json > snyk-test-output.json
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_TEST_JSON_INPUT: "snyk-test-output.json"
# rest of your pipeline...
Appliquer les correctifs Snyk à une application Node.js, et continuer à analyser les dépendances uniquement pour les vulnérabilités de gravité critique, sans échouer la construction si des vulnérabilités sont trouvées. Optez également pour la surveillance des états des dépendances sur Snyk.io pour recevoir des alertes en cas de nouvelles vulnérabilités. Ensuite, construisez l'image Docker et analysez-la pour les vulnérabilités de gravité critique.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
PROTECT: "true"
SEVERITY_THRESHOLD: "critical"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker push $IMAGE_NAME
Pour les clients utilisant des instances non par défaut de Snyk, l'utilisation de SNYK_API est nécessaire pour spécifier l'URL. Cela s'applique aux clients MT-EU, MT-AU et aux clients single tenant.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_API: https://api.eu.snyk.io
LANGUAGE: "node"
- npm publish
Pour garantir la stabilité et la qualité à long terme de ce projet, nous passons à un modèle de contribution fermé à compter d'août 2025. Ce changement permet à notre équipe principale de se concentrer sur une feuille de route de développement centralisée et une assurance qualité rigoureuse, ce qui est essentiel pour un composant ayant une utilisation aussi étendue.
Tout notre développement restera public pour des raisons de transparence. Nous remercions la communauté pour son soutien et ses précieuses contributions.
Les issues GitHub ont été désactivées sur ce dépôt dans le cadre de notre passage à un modèle de contribution fermé. L'équipe de support Snyk ne surveille pas activement les issues GitHub sur les projets de développement Snyk.
Pour obtenir de l'aide avec les produits Snyk, veuillez utiliser la page de support Snyk, qui est le moyen le plus rapide d'obtenir de l'assistance.
Copyright (c) 2019 Snyk Ltd. et autres. Sous licence Apache 2.0, voir le fichier LICENSE.txt.
| Variable | Utilisation |
|---|
| SNYK_TOKEN (*) | Le jeton API Snyk. |
| LANGUAGE (*) | Le langage de développement (par ex. node, ruby, composer, dotnet ou docker). Consultez Dockerhub pour une liste complète des tags possibles. REMARQUE : lorsque utilisé avec SNYK_BASE_IMAGE, ce champ fait référence au tag de votre image de base |
| IMAGE_NAME (*) | Pour le langage docker, l'image sur laquelle effectuer une analyse Docker. |
| SNYK_BASE_IMAGE | Fournissez votre propre image de base si vous ne souhaitez pas utiliser Snyk Images. Par défaut : snyk/snyk. REMARQUE : LANGUAGE fera référence au tag de votre image de base, veuillez vous assurer que le tag est valide |
| CODE_INSIGHTS_RESULTS | Créer un rapport Code Insight avec les résultats de test Snyk. Par défaut : false. |
| SNYK_TEST_JSON_INPUT | Utilisez si vous souhaitez simplement créer un rapport Code Insights à partir d'une sortie snyk test --json générée précédemment. Voir l'exemple ci-dessous dans la section « Génération du rapport Code Insights à partir d'une sortie JSON Snyk existante ». |
| PROTECT | Cela appliquera les correctifs spécifiés dans votre fichier .snyk au système de fichiers local. (Après avoir exécuté Snyk Wizard) Par défaut : false. |
| DONT_BREAK_BUILD | Continuer la construction malgré les problèmes trouvés. Par défaut : false. |
| MONITOR | Enregistrer un instantané du projet dans l'interface Snyk et continuer à le surveiller après le test initial. Par défaut : false. |
| SEVERITY_THRESHOLD | Signale les problèmes de niveau égal ou supérieur au niveau fourni. Valeurs autorisées : low, med, high, critical. Par défaut : low. |
| ORGANIZATION | Organisation avec laquelle exécuter la CLI. Par défaut : aucune. |
| PROJECT_FOLDER | Le dossier dans lequel se trouve le projet. Par défaut : .. |
| TARGET_FILE | Le fichier de package (par ex. package.json) ; équivalent à --file= dans la CLI. Pour Docker, doit pointer vers le Dockerfile. Par défaut : aucun. |
| EXTRA_ARGS | Arguments supplémentaires à passer à la CLI snyk. Par défaut : aucun. |
| DEBUG | Activer les informations de débogage supplémentaires. Par défaut : false. |
| SNYK_API | Spécifie le point de terminaison de l'API Snyk. Par défaut : https://api.snyk.io (environnement Snyk MT-US standard) |