
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 | 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) |
(*) = 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...