Статьи
Обучающие материалы
Интерактивные руководства
Интеграция Snyk с Atlassian Open DevOps
Уоррен Марусяк
Старший технический эксперт
Чтобы продемонстрировать, как разрабатывать и развертывать приложения, а также управлять ими с помощью Jira Software и различных подключенных инструментов, наша команда создала ImageLabeller — простое демонстрационное приложение на платформе AWS, которое с помощью машинного обучения наносит метки на изображения.
На этой странице рассказывается, как интегрировать Snyk с Bitbucket. Прежде чем начать, рекомендуем прочитать страницу Знакомство с ImageLabeller в качестве контекста.
Подключение Bitbucket и Snyk
Есть несколько способов работы со Snyk в Bitbucket. Во-первых, можно включить встроенную интеграцию Snyk с Bitbucket во вкладке Security (Безопасность) на экране репозитория. Второй способ — добавить шаг для Snyk в файл bitbucket-pipelines.yml. Ничто не мешает применять и оба способа одновременно. Интеграция Synk в Bitbucket позволяет быстро изучить данные об уязвимостях любому, кто просматривает репозиторий в Bitbucket. Затем о каждой обнаруженной уязвимости можно получить дополнительную информацию на веб-сайте Snyk. Шаг Snyk в файле bitbucket-pipelines.yml позволяет автоматически сканировать каждый коммит в конвейере.
Добавление интеграции Snyk в Bitbucket
Чтобы добавить Snyk в репозиторий Bitbucket, перейдите на вкладку Security (Безопасность), найдите интеграцию Snyk и нажмите Try now (Попробовать).
Предоставьте доступ и нажмите Connect Bitbucket with Snyk (Подключить Bitbucket к Snyk).
После настройки интеграции закройте вкладку.
Нажмите новую опцию Snyk на левой панели навигации. Затем нажмите файл go.mod, чтобы увидеть более подробную информацию. В этом примере в репозитории Golang для управления зависимостями используются модули Go. Для других типов репозиториев файлы зависимостей будут отличаться.
Чтобы узнать больше о том, как исправить каждую уязвимость, нажмите visit Snyk (Посетить Snyk), чтобы перейти к веб-сайту Snyk.
Это представление в приложении Snyk похоже на экран подробных сведений в Bitbucket. На нем отображается список уязвимостей, а также дополнительная информация по каждой из них.
Ниже приведен пример отчета об уязвимостях в Snyk. Иерархия источников уязвимости показана в разделе Detailed paths (Подробные пути). В приведенном ниже примере видно, что функция SubmitImage унаследовала эту уязвимость из AWS Golang SDK. Snyk предоставляет сводку по статусу всех проблем слева. В нашем случае нельзя исправить ни одну из них. Обратите внимание, что в подпункте No fix available (Нет исправления) списка Fixability (Возможность исправления) указано пять проблем. Это означает, что на текущий момент нет мер по их устранению. Разработчики могут отслеживать состояние в интеграции и вносить исправления, как только они появятся.
Добавление шага Snyk в bitbucket-pipelines.yml
Помимо пользовательского интерфейса Bitbucket доступ к функциям Snyk можно получить через конвейеры Bitbucket, добавив соответствующие шаги в файлы bitbucket-pipelines.yml. Это означает, что при каждом коммите будет автоматически выполняться сканирование и выдаваться предупреждение о любых уязвимостях в защите.
Ниже приведены два фрагмента кода bitbucket-pipelines.yml для запуска тестов Snyk через конвейер.
Добавление Snyk в конвейеры Bitbucket для Golang
В этом примере показано, как запустить команду snyk test для проекта Golang, в котором для управления зависимостями используются модули Go.
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:golang
script:
- snyk auth $SNYK_TOKEN
- cd submitImage
- go mod graph
- snyk test
pipelines:
default:
- step: *runsnyktest
Добавление Snyk в конвейеры Bitbucket для Python
В этом примере показано, как запустить команду snyk test для проекта Python, в котором для управления зависимостями используется Pip.
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:python
script:
- snyk auth $SNYK_TOKEN
- cd src
- snyk test --skip-unresolved
- cd ../tst
- snyk test --skip-unresolved
pipelines:
default:
- step: *runsnyktest
Вот как выглядит выполнение шага runsnyktest в конвейере Bitbucket.
Заключение
Интеграция безопасности в конвейер CI/CD — это один из основных принципов DevSecOps. Согласно подходу DevSecOps, обеспечение безопасности должно затрагивать каждый этап типичного конвейера DevOps: планирование, программирование, сборку, тестирование, выпуск релиза и развертывание. Внедрение безопасности в рабочий процесс делает ее активной, неотъемлемой частью процесса разработки, а не второстепенной задачей. Это позволяет сделать приложения более безопасными, сократить число инцидентов и повысить удовлетворенность клиентов.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.