Статьи
Обучающие материалы
Интерактивные руководства
Инструменты 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 можно выделить IriusRisk — инструмент для совместного моделирования угроз. Из дополнительных инструментов стоит отметить сервисы для отслеживания задач и управления ими, например Jira, а также инструменты коммуникации и чаты, например 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.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.