
Автоматизированное сканирование уязвимостей Snyk для зависимостей и Docker-образов в Bitbucket Pipelines, с порогами серьезности и опциями мониторинга.
Этот pipe использует Snyk для поиска, исправления и мониторинга известных уязвимостей в зависимостях вашего приложения и Docker-образе.
Добавьте следующий фрагмент в секцию script вашего файла bitbucket-pipelines.yml:
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: "<string>"
# LANGUAGE: "<string>" # Обязательно, если не задан SNYK_TEST_JSON_INPUT
# IMAGE_NAME: "<string>" # Требуется только если LANGUAGE установлен в "docker"
# SNYK_BASE_IMAGE: "<string>" # Пользовательский базовый образ
# CODE_INSIGHTS_RESULTS: "<boolean>" # Необязательно.
# SNYK_TEST_JSON_INPUT: "<string>" # Необязательно. Имя файла или путь к JSON-файлу, содержащему вывод теста Snyk CLI (с опцией json вывода).
# PROTECT: "<boolean>" # Необязательно.
# DONT_BREAK_BUILD: "<boolean>" # Необязательно.
# MONITOR: "<boolean>" # Необязательно.
# SEVERITY_THRESHOLD: "<low|medium|high|critical>" # Необязательно.
# ORGANIZATION: "<string>" # Необязательно.
# PROJECT_FOLDER: "<string>" # Необязательно.
# TARGET_FILE: "<string>" # Необязательно.
# EXTRA_ARGS: "<string>" # Необязательно.
# DEBUG: "<boolean>" # Необязательно.
# SNYK_API: "<string"> # Необязательно.
(*) = обязательная переменная.
Интегрируя Snyk в Bitbucket Pipelines, вы можете непрерывно тестировать, исправлять и мониторить вашу кодовую базу на наличие известных уязвимостей в зависимостях и Docker-образе.
Чтобы узнать больше о Snyk, посетите наш сайт.
Для языков / менеджеров пакетов с более сложными средами, таких как Java с Maven или Gradle, следует напрямую использовать CLI Snyk в вашем конвейере. См. пример «Прямое использование CLI Snyk». Если вы также хотите создать отчет Code Insights, вы можете передать вывод теста CLI Snyk в этот Pipe — см. пример «Создание отчета Code Insights из существующего вывода JSON Snyk».
Токен API Snyk необходим для использования этого pipe.
Использует Snyk для сканирования приложения Node.js и останавливает сборку, если найдены уязвимости.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
Использует пользовательский Docker-образ для выполнения сканирования Snyk. Полезно, если вы не хотите использовать образы Snyk по умолчанию. Образ будет иметь формат <MY_CUSTOM_IMAGE>:<TAG>, где MY_CUSTOM_IMAGE и TAG соответствуют переменным SNYK_BASE_IMAGE и 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
### Пример базового сканирования Docker-образа
Использует Snyk для сканирования Docker-образа и останавливает сборку, если найдены уязвимости.
```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
Это особенно актуально для языков с более сложными средами сборки, например Java с Maven или Gradle. В таких сценариях вы можете протестировать приложение с помощью CLI Snyk, используя некоторую вариацию snyk test. Проще всего установить CLI Snyk через npm (npm install -g snyk), но если npm недоступен в вашей среде сборки, вы можете загрузить бинарный файл с помощью curl с https://github.com/snyk/snyk/releases.
script:
- mvn install
- npm install -g snyk # также доступна загрузка бинарника
- snyk test --all-projects
# остальная часть вашего конвейера...
Это особенно актуально для языков с более сложными средами сборки, например Java с Maven или Gradle. В таких сценариях вы можете протестировать приложение с помощью CLI Snyk, используя snyk test --json > snyk-test-output.json, а затем передать выходной файл в Pipe для создания отчета Code Insights. Проще всего установить CLI Snyk через npm (npm install -g snyk), но если npm недоступен в вашей среде сборки, вы можете загрузить бинарный файл с помощью curl с https://github.com/snyk/snyk/releases.
script:
- mvn install
- npm install -g snyk # также доступна загрузка бинарника
- 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"
# остальная часть вашего конвейера...
Примените исправления Snyk к приложению Node.js и продолжайте сканировать зависимости только на критический уровень серьезности, но не останавливайте сборку, если они найдены. Также включите мониторинг состояний зависимостей на Snyk.io, чтобы получать оповещения о новых уязвимостях. Затем создайте Docker-образ и сканируйте его на предмет уязвимостей критического уровня.
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
Для клиентов, использующих нестандартные экземпляры Snyk, требуется использовать SNYK_API для указания URL. Это относится к клиентам MT-EU, MT-AU и отдельным арендаторам.
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
Чтобы обеспечить долгосрочную стабильность и качество этого проекта, мы переходим к модели закрытого внесения вклада, начиная с августа 2025 года. Это изменение позволяет нашей основной команде сосредоточиться на централизованной дорожной карте разработки и строгом контроле качества, что необходимо для компонента с таким широким использованием.
Все наши разработки останутся публичными для прозрачности. Мы благодарим сообщество за поддержку и ценный вклад.
Вопросы на GitHub отключены в этом репозитории в рамках нашего перехода к модели закрытого внесения вклада. Команда поддержки Snyk не отслеживает активно вопросы на GitHub ни в одном проекте разработки Snyk.
Для получения помощи по продуктам Snyk используйте страницу поддержки Snyk — это самый быстрый способ получить помощь.
Copyright (c) 2019 Snyk Ltd. и другие. Лицензия Apache 2.0, см. файл LICENSE.txt.
| Переменная | Использование |
|---|
| SNYK_TOKEN (*) | Токен API Snyk. |
| LANGUAGE (*) | Язык разработки (например, node, ruby, composer, dotnet или docker). Полный список возможных тегов см. на Dockerhub. ПРИМЕЧАНИЕ: При использовании с SNYK_BASE_IMAGE это поле относится к тегу вашего базового образа |
| IMAGE_NAME (*) | Для языка docker — образ для сканирования Docker. |
| SNYK_BASE_IMAGE | Укажите свой базовый образ, если не хотите использовать образы Snyk. По умолчанию: snyk/snyk. ПРИМЕЧАНИЕ: LANGUAGE будет относиться к тегу вашего базового образа; убедитесь, что тег действителен |
| CODE_INSIGHTS_RESULTS | Создать отчет Code Insight с результатами теста Snyk. По умолчанию: false. |
| SNYK_TEST_JSON_INPUT | Используйте, если хотите создать отчет Code Insights из ранее сгенерированного вывода snyk test --json. Пример см. ниже в разделе «Создание отчета Code Insights из существующего вывода JSON Snyk». |
| PROTECT | Применяет исправления, указанные в вашем .snyk файле, к локальной файловой системе (после запуска Snyk Wizard). По умолчанию: false. |
| DONT_BREAK_BUILD | Продолжить сборку, несмотря на найденные проблемы. По умолчанию: false. |
| MONITOR | Записать снимок проекта в интерфейс Snyk и продолжать мониторинг после первоначального теста. По умолчанию: false. |
| SEVERITY_THRESHOLD | Отчеты по проблемам с уровнем равным или выше указанного. Допустимые значения: low, med, high, critical. По умолчанию: low. |
| ORGANIZATION | Организация, для которой запускать CLI. По умолчанию: нет. |
| PROJECT_FOLDER | Папка, в которой находится проект. По умолчанию: .. |
| TARGET_FILE | Файл пакета (например, package.json); соответствует --file= в CLI. Для Docker должен указывать на Dockerfile. По умолчанию: нет. |
| EXTRA_ARGS | Дополнительные аргументы, передаваемые в CLI snyk. По умолчанию: нет. |
| DEBUG | Включить дополнительную отладочную информацию. По умолчанию: false. |
| SNYK_API | Указывает конечную точку API Snyk. По умолчанию: https://api.snyk.io (стандартная среда Snyk MT-US) |