
Automatisiertes Snyk-Schwachstellenscanning für Abhängigkeiten und Docker-Images in Bitbucket Pipelines, mit Schweregrad-Schwellenwerten und Überwachungsoptionen.
Diese Pipe verwendet Snyk, um bekannte Schwachstellen in Ihren App-Abhängigkeiten und Docker-Images zu finden, zu beheben und zu überwachen.
Fügen Sie den folgenden Ausschnitt in den Skriptabschnitt Ihrer Datei bitbucket-pipelines.yml ein:
- 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 | Verwendung |
|---|---|
| SNYK_TOKEN (*) | Der Snyk-API-Token. |
| LANGUAGE (*) | Die Entwicklungssprache (z. B. node, ruby, composer, dotnet oder docker). Eine vollständige Liste möglicher Tags finden Sie auf Dockerhub. HINWEIS: Bei Verwendung mit SNYK_BASE_IMAGE bezieht sich dieses Feld auf Ihr Basis-Image-Tag |
| IMAGE_NAME (*) | Für die Sprache docker: das Image, das einem Docker-Scan unterzogen werden soll. |
| SNYK_BASE_IMAGE | Stellen Sie Ihr eigenes Basis-Image bereit, wenn Sie nicht die Snyk-Images verwenden möchten. Standard: snyk/snyk. HINWEIS: LANGUAGE bezieht sich dann auf Ihr Basis-Image-Tag. Bitte stellen Sie sicher, dass das Tag gültig ist. |
| CODE_INSIGHTS_RESULTS | Erstellt einen Code-Insights-Bericht mit den Snyk-Testergebnissen. Standard: false. |
| SNYK_TEST_JSON_INPUT | Verwenden Sie diese Option, wenn Sie nur einen Code-Insights-Bericht aus einer zuvor generierten snyk test --json-Ausgabe erstellen möchten. Siehe Beispiel unten im Abschnitt „Generating the Code Insights report from existing Snyk JSON output". |
| PROTECT | Wendet die in Ihrer .snyk-Datei angegebenen Patches auf das lokale Dateisystem an. (Nach Ausführung des Snyk Wizard) Standard: false. |
| DONT_BREAK_BUILD | Setzt den Build trotz gefundener Probleme fort. Standard: false. |
| MONITOR | Zeichnet einen Snapshot des Projekts in der Snyk-Benutzeroberfläche auf und überwacht es nach dem ersten Test weiter. Standard: false. |
| SEVERITY_THRESHOLD | Meldet Probleme, die gleich oder höher als der angegebene Schweregrad sind. Zulässige Werte: low, med, high, critical. Standard: low. |
| ORGANIZATION | Organisation, mit der die CLI ausgeführt werden soll. Standard: keine. |
| PROJECT_FOLDER | Der Ordner, in dem sich das Projekt befindet. Standard: .. |
| TARGET_FILE | Die Paketdatei (z. B. package.json); entspricht --file= in der CLI. Bei Docker sollte auf die Dockerfile verwiesen werden. Standard: keine. |
| EXTRA_ARGS | Zusätzliche Argumente, die an die Snyk-CLI übergeben werden. Standard: keine. |
| DEBUG | Aktiviert zusätzliche Debug-Informationen. Standard: false. |
| SNYK_API | Gibt den Snyk-API-Endpunkt an. Standard: https://api.snyk.io (Standard-Snyk-MT-US-Umgebung) |
(*) = erforderliche Variable.
Durch die Integration von Snyk in Bitbucket Pipelines können Sie Ihre Codebasis kontinuierlich auf bekannte Schwachstellen in Ihren Abhängigkeiten und Ihrem Docker-Image testen, beheben und überwachen.
Weitere Informationen zu Snyk finden Sie auf unserer Website.
Für Sprachen/Paketmanager mit komplexeren Umgebungen wie Java mit Maven oder Gradle sollten Sie direkt die Snyk-CLI in Ihrer Pipeline verwenden. Siehe das Beispiel „Directly using the Snyk CLI". Wenn Sie zusätzlich einen Code-Insights-Bericht generieren möchten, können Sie die Testergebnisse der Snyk-CLI in diese Pipe einspeisen – siehe das Beispiel „Generating the Code Insights report from existing Snyk JSON output".
Der Snyk-API-Token ist erforderlich, um diese Pipe zu verwenden.
Verwendet Snyk, um eine Node.js-Anwendung zu scannen und den Build abzubrechen, wenn Schwachstellen gefunden werden.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
Verwendet ein benutzerdefiniertes Docker-Image, um Ihre Snyk-Scans auszuführen. Nützlich, wenn Sie nicht die Standard-Snyk-Images verwenden möchten. Das Image hat das Format <MY_CUSTOM_IMAGE>:<TAG>, wobei MY_CUSTOM_IMAGE und TAG den Variablen SNYK_BASE_IMAGE bzw. LANGUAGE entsprechen.
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
### Beispiel für einen einfachen Docker-Image-Scan
Verwendet Snyk, um ein Docker-Image zu scannen und den Build abzubrechen, wenn Schwachstellen gefunden werden.
```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
Dies ist besonders relevant für Sprachen mit komplexeren Build-Umgebungen – zum Beispiel Java mit Maven oder Gradle. In diesen Szenarien können Sie Ihre Anwendung mit der Snyk-CLI testen, z. B. mit einer Variante von snyk test. Der einfachste Weg, die Snyk-CLI zu installieren, ist npm (npm install -g snyk). Wenn npm in Ihrer Build-Umgebung nicht verfügbar ist, können Sie eine Binärdatei per curl von https://github.com/snyk/snyk/releases herunterladen.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects
# rest of your pipeline...
Dies ist besonders relevant für Sprachen mit komplexeren Build-Umgebungen – zum Beispiel Java mit Maven oder Gradle. In diesen Szenarien können Sie Ihre Anwendung mit der Snyk-CLI testen, z. B. mit einer Variante von snyk test --json > snyk-test-output.json, und dann die Ausgabedatei an die Pipe weiterreichen, um einen Code-Insights-Bericht zu generieren. Der einfachste Weg, die Snyk-CLI zu installieren, ist npm (npm install -g snyk). Wenn npm in Ihrer Build-Umgebung nicht verfügbar ist, können Sie eine Binärdatei per curl von https://github.com/snyk/snyk/releases herunterladen.