Close

Интеграция Snyk с Atlassian Open DevOps

Фото Уоррена Марусяка
Уоррен Марусяк

Старший технический эксперт

Чтобы продемонстрировать, как разрабатывать и развертывать приложения, а также управлять ими с помощью Jira Software и различных подключенных инструментов, наша команда создала ImageLabeller — простое демонстрационное приложение на платформе AWS, которое с помощью машинного обучения наносит метки на изображения.

На этой странице рассказывается, как интегрировать Snyk с Bitbucket. Прежде чем начать, рекомендуем прочитать страницу Знакомство с ImageLabeller в качестве контекста.

По мере роста масштаба и сложности программного приложения увеличивается и вероятность появления уязвимостей в защите, которые можно атаковать с помощью вредоносного кода.

Современные методы разработки включают повторное использование большого количества кода. Во-первых — в виде стандартных библиотек для конкретных языков, таких как C++ STL, стандартная библиотека Golang и Microsoft .NET. Во-вторых — в виде библиотек с открытым исходным кодом, которые можно найти, например, на GitHub. Большая часть этого кода создана с использованием других библиотек, что привносит в современное программное обеспечение целую сеть зависимостей.

Такое количество кода приводит к высокой вероятности появления уязвимостей в защите. Невозможно отслеживать уязвимости, вручную сверяя все зависимости со списками CVE. Добавление автоматического сканирования уязвимостей в процессы CI/CD может помочь выявить и снизить риски.

Bitbucket, решение Atlassian для совместной работы над кодом, предусматривает тесно встроенную интеграцию со Snyk, ведущим поставщиком решений безопасности для разработчиков. Это означает, что вам не придется устанавливать или настраивать приложения. Подробную информацию о проблемах безопасности можно найти прямо в Bitbucket. Сразу же после включения Snyk автоматически проверит ваш код и его зависимости и выдаст предупреждения об имеющихся уязвимостях, которые можно будет исправить перед развертыванием.

Snyk отслеживает в четыре раза больше уязвимостей, чем любая другая коммерческая база данных, и при обнаружении новых угроз база данных этого решения может обновляться на 46 дней раньше, чем другие.

Подключение 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 (Попробовать).

Изображение: добавление интеграции Snyk в Bitbucket

Предоставьте доступ и нажмите Connect Bitbucket with Snyk (Подключить Bitbucket к Snyk).

Подключение Bitbucket к Snyk

После настройки интеграции закройте вкладку.

Руководство по успешной интеграции

Нажмите новую опцию Snyk на левой панели навигации. Затем нажмите файл go.mod, чтобы увидеть более подробную информацию. В этом примере в репозитории Golang для управления зависимостями используются модули Go. Для других типов репозиториев файлы зависимостей будут отличаться.

Экран Snyk

Чтобы узнать больше о том, как исправить каждую уязвимость, нажмите visit Snyk (Посетить Snyk), чтобы перейти к веб-сайту Snyk.

Посетить Snyk

Это представление в приложении Snyk похоже на экран подробных сведений в Bitbucket. На нем отображается список уязвимостей, а также дополнительная информация по каждой из них.

снимок экрана: веб-сайт Snyk

Ниже приведен пример отчета об уязвимостях в 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.

Шаг runsnyktest в конвейере Bitbucket

Заключение

Интеграция безопасности в конвейер CI/CD — это один из основных принципов DevSecOps. Согласно подходу DevSecOps, обеспечение безопасности должно затрагивать каждый этап типичного конвейера DevOps: планирование, программирование, сборку, тестирование, выпуск релиза и развертывание. Внедрение безопасности в рабочий процесс делает ее активной, неотъемлемой частью процесса разработки, а не второстепенной задачей. Это позволяет сделать приложения более безопасными, сократить число инцидентов и повысить удовлетворенность клиентов.

Warren Marusiak
Warren Marusiak

Warren is a Canadian developer from Vancouver, BC with over 10 years of experience. He came to Atlassian from AWS in January of 2021.


Поделитесь этой статьей

Рекомендуемые статьи

Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Образовательные программы DevOps

Рисунок схемы

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up