Close

Инструменты DevSecOps

Инструменты DevSecOps, обеспечивающие безопасность рабочих процессов DevOps

Фотография: Кев Зеттлер
Кев Зеттлер

Специалист по комплексной веб-разработке


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

Кроме того, все больше организаций используют подход DevOps, который позволяет автоматизировать и интегрировать процессы в командах разработчиков ПО и ИТ-специалистов. Традиционные инструменты защиты часто неэффективны в этих условиях. Современным разработчикам необходимо внедрять меры безопасности на всех этапах процесса разработки. Обеспечить безопасность рабочих процессов DevOps помогает методика DevSecOps.

Что такое DevSecOps?


DevSecOps — это методика интеграции принципов безопасности в конвейер непрерывной интеграции, непрерывной поставки и непрерывного развертывания. Реализация ценностей DevOps при обеспечении безопасности ПО подразумевает, что проверка безопасности становится активной, неотъемлемой частью процесса разработки.

Подобно DevOps, подход DevSecOps — это организационная и техническая методология, объединяющая рабочие процессы управления проектами с автоматизированными ИТ-инструментами. DevSecOps предполагает интеграцию активных проверок и тестирования безопасности в рабочие процессы agile-разработки и DevOps. Тем самым производитель изначально встраивает принципы безопасности в продукт, а не добавляет их в готовое решение.

Для внедрения DevSecOps команде необходимо сделать следующее.

  • Обеспечить безопасность на протяжении всего цикла разработки ПО, чтобы свести к минимуму уязвимости в программном коде.
  • Убедиться, что вся команда DevOps в организации, включая разработчиков и специалистов по эксплуатации, несет общую ответственность за соблюдение рекомендаций по безопасности.
  • Обеспечить автоматическую проверку безопасности на всех этапах поставки ПО. Для этого следует интегрировать средства контроля, инструменты и процессы обеспечения безопасности в рабочий процесс DevOps.

С подходом DevSecOps обеспечение безопасности затрагивает каждый этап типичного конвейера DevOps: планирование, сборку, тестирование, развертывание, эксплуатацию и наблюдение.

Непрерывность —отличительное свойство конвейера DevOps. В это понятие входят: непрерывная интеграция, непрерывная поставка/развертывание (CI/CD), непрерывная обратная связь и непрерывная эксплуатация. Никаких разовых тестов или запланированных развертываний: любые функции работают на постоянной основе.

Значок: инструменты
Связанные материалы

Подробнее о Snyk для Bitbucket Cloud

Значок загрузки
См. решение

Получите Snyk для Bitbucket Cloud

Бесконечный цикл DevSecOps

Планируйте


Меньше всего автоматизация DevSecOps применяется на этапе планирования, который включает в себя совместную работу, обсуждение, проверку и разработку стратегии анализа безопасности. Командам необходимо выполнить анализ безопасности и составить план, описывающий, где, как и когда будет выполняться тестирование безопасности. Среди популярных инструментов планирования для DevSecOps можно выделить IriusRisk — инструмент для совместного моделирования угроз. Среди дополнительных инструментов стоит отметить инструменты для отслеживания задач и управления ими, например Jira Software, а также инструменты коммуникации и чаты, например Slack.

Сборка


Этап сборки начинается после того, как разработчики отправят код в исходный репозиторий. Задача инструментов сборки DevSecOps — автоматический анализ безопасности выходных данных сборки. Среди главных принципов безопасности можно назвать анализ программных компонентов, статическое тестирование программных приложений (SAST) и модульные тесты. Для автоматизации этих тестов инструменты необходимо подключить к конвейеру CI/CD.

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

Среди известных инструментов для выполнения анализа на этапе сборки можно назвать OWASP Dependency-Check, SonarQube, SourceClear, Retire.js, Checkmarx и Snyk.

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

Когда инструменты защиты подключены непосредственно к существующему рабочему процессу Git, каждый коммит и слияние автоматически запускают тестирование или проверку безопасности. Такие инструменты поддерживают различные языки программирования и интегрированные среды разработки. Вот некоторые из наиболее популярных инструментов защиты: Gerrit, Phabricator, SpotBugs, PMD, Checkstyle и Find Security Bugs.

Тест


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

На этапе тестирования используются инструменты тестирования безопасности с динамическим анализом (DAST). Они помогают выявить рабочие процессы приложений: аутентификацию пользователей, авторизацию, SQL Injection и конечные точки, связанные с API. DAST-тестирование направлено на обеспечение безопасности и помогает проверить приложение на наличие известных проблем высокой степени опасности (такие проблемы перечислены в списке OWASP Top 10 [«Топ 10 уязвимостей OWASP»]).

Существует множество инструментов тестирования, как платных, так и с открытым исходным кодом. Они обладают разными функциональными возможностями и поддерживают многочисленные экосистемы языков программирования. В числе таких инструментов — BDD Automated Security Tests, JBroFuzz, Boofuzz, OWASP ZAP, Arachi, IBM AppScan, GAUNTLT и комплект решений SecApp.

Развертывание


Если предыдущие этапы прошли успешно, можно выполнить развертывание артефакта сборки в рабочей среде. Проблемные области защиты, которыми необходимо заняться на этапе развертывания, связаны только с запуском в рабочей среде. Например, необходимо тщательно проанализировать любые конфигурационные различия между рабочей средой и промежуточной средой либо средой разработки. Рабочие сертификаты TLS и DRM необходимо проверить на наличие обновлений.

Этап развертывания — подходящее время для запуска таких инструментов проверки во время работы, как Osquery, Falco и Tripwire. Они извлекают информацию из работающей системы и проверяют, работает ли она должным образом. Организации также могут использовать принципы инженерии хаоса, экспериментируя с системой, чтобы укрепить уверенность в ее способности противостоять непредсказуемым дестабилизирующим условиям. Можно смоделировать реальные события: сбой серверов, ошибки жесткого диска или разрывы сетевых подключений. Компания Netflix известна изобретением инструмента Chaos Monkey, который реализует принципы инженерии хаоса. Netflix также использует инструмент Security Monkey, который ищет нарушения и уязвимости в неправильно настроенных группах безопасности инфраструктуры и устраняет уязвимые серверы.

К этапу релиза цикла DevSecOps код приложения и исполняемый файл должны быть тщательно протестированы. На этом этапе основное внимание уделяется обеспечению безопасности инфраструктуры среды выполнения путем изучения таких значений конфигурации среды, как управление доступом пользователей, доступ к сетевому брандмауэру и управление секретными данными.

Основная забота на этапе релиза — обеспечить принцип минимальных привилегий (PoLP). PoLP означает, что любой пользователь, программа или процесс имеют лишь минимально необходимый доступ для выполнения своих функций. Сюда относится выполнение аудита ключей API и токенов доступа, для того чтобы ограничить доступ владельцам. Без этого аудита злоумышленник сможет найти ключ доступа к закрытым разделам системы.

Инструменты управления конфигурацией — ключевой компонент обеспечения безопасности на этапе релиза, поскольку они позволяют просматривать статическую конфигурацию динамической инфраструктуры. С их помощью можно проводить аудит и оценку системной конфигурации. Конфигурация становится неизменяемой и обновляется только путем коммитов в репозитории управления конфигурацией. Вот некоторые из популярных инструментов управления конфигурацией: Ansible, Puppet, HashiCorp Terraform, Chef и Docker.

Сообщество по безопасности предоставляет руководства и рекомендации по передовым методам усиления инфраструктуры, таким как контрольные показатели Center for Internet Security (CIS) и контрольные списки конфигурации NIST.

Наблюдение


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

Средства защиты безопасности приложения во время его работы (RASP) автоматически выявляют и блокируют входящие угрозы в режиме реального времени. RASP работает по принципу обратного прокси-сервера и отслеживает входящие атаки, позволяя приложению автоматически и без вмешательства человека изменять конфигурацию в ответ на определенные условия.

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

Инструменты мониторинга безопасности используют аналитику для отслеживания и оценки критически важных показателей безопасности. Например, такие инструменты отмечают запросы к общедоступным конфиденциальным конечным точкам (формам доступа к аккаунтам пользователей или конечным точкам базы данных). В качестве популярных примеров защиты приложений во время работы можно назвать Imperva RASP, Alert Logic и Halo.

Заключение


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

Начать тестирование DevSecOps можно с автоматизации тестирования при помощи Bitbucket Pipelines. Кроме того, стоит ознакомиться с инструментами и ресурсами автоматизации тестирования, доступными в Atlassian Marketplace.

Kev Zettler
Kev Zettler

Kev — ведущий специалист по комплексной веб-разработке и серийный предприниматель более чем с десятилетним опытом создания продуктов и команд по методикам Agile. Он с большим энтузиазмом участвует в создании и развитии новых технологий с открытым исходным кодом, таких как DevOps, криптовалюта, виртуальная и дополненная реальность, а также преподает знания по этим технологиям. В свободное время Kev участвует в джемах по разработке инди-игр.


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

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

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

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

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

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

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

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

Thank you for signing up