Close

Интеграция 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 (Попробовать).

Изображение: добавление интеграции 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