В конце курса «Внедрение и работа в DevSecOps» студентов ждёт выполнение проекта. Это самостоятельная работа, необходимая для закрепления полученных знаний. Предлагаем вашему вниманию проект Валиева Гурбана, одного из наших выпускников курса.
В данной работе был проведен анализ влияния на бизнес с точки зрения time-to-market, безопасности и других важных аспектов при трансформации деятельности компании. Рассмотрим подробнее данную методологию.
Что планировалось:
- ознакомиться с культурой DevSecOps и составить план трансформации;
- автоматизировать и встроить инструменты ИБ на всех этапах разработки.
Что такое DevSecOps и какой импакт от внедрения в компанию?
DevSecOps — это методология разработки ПО, которая, в отличие от классических подходов, позволяет интегрировать проверки безопасности во все этапы создания ПО. То есть в рамках этой модели работает Shift Left: смещение безопасности влево как можно ближе к началу разработки.
Таким образом, DevSecOps объединяет три главных подразделения: разработку (Dev), ИБ (Sec) и операционную деятельность (Ops). Все участники важны и ценны, каждый из них имеет собственную роль. Теперь немного статистики: ошибки безопасности могут нанести значительный ущерб и обойтись организациям в репутационные риски или большие финансовые потери.
- 88% рост и количество уязвимостей приложений за последние два года;
- 78% уязвимостей обнаруживаются в косвенных зависимостях;
- 37% разработчиков с открытым исходным кодом не реализуют никаких мер безопасности при непрерывной интеграции;
- 54% разработчиков не проводят тестирование безопасности образов Docker.
Отвечая на вопрос, зачем внедрять DevSecOps в компании – для решения следующих проблем:
- Безопасность становится частью разработки и не является больше задачей, которая решается после завершения разработки.
- Более быстрое выявление и реагирование на уязвимости из-за эффективного взаимодействия команд и интеграции безопасности в процесс разработки, что упрощает обнаружение и устранение уязвимостей до их использования злоумышленниками.
- Улучшение качества ПО – использование непрерывной интеграции и непрерывной доставки для более быстрой и стабильной разработки.
- Повышение эффективности процесса разработки – DevSecOps способствует ускорению процесса разработки путем автоматизации процессов и интеграции инструментов безопасности.
Как DevSecOps может повлиять на бизнес?
Исправление ошибок на этапах эксплуатации или внедрения намного дороже, чем исправление уязвимостей на более ранних этапах. Чем раньше будет выявлена уязвимость, тем дешевле обойдется компании ее исправление, вспомним про Shift Security Left (сдвиг безопасности влево), играющий важную экономическую роль.
- Основная выгода DevSecOps для бизнеса — в экономии времени и бюджета на проверки приложений службой ИБ, а также в большей гарантии защиты от критических инцидентов, связанных, в том числе, с Zero Day. Инструменты, такие как SAST, SCA могут автоматически тестировать каждый новый фрагмент кода в пайплайне;
- Согласно отчету Google Accelerate State of DevOps 2021, в командах, применяющих принципы работы DevSecOps, развертывание кода происходит в 973 раза чаще, а восстановление после инцидента — в несколько тысяч раз быстрее.
Выделим ключевые особенности внедрения DevSecOps, которые могут повлиять на бизнес-результаты и принести ряд преимуществ:
- Более быстрая и надежная разработка позволяет уменьшить время выхода ПО на рынок (или же time-to-market) и улучшить качество продукта.
- Меньшие затраты на обслуживание и управление рисками: то есть выявлять и устранять уязвимости в процессе разработки, что позволяет снизить затраты на их обслуживание и риск возникновения серьезных проблем.
- Более эффективная коммуникация и сотрудничество, что может улучшить качество проектов и повысить удовлетворенность клиентов.
- Более быстрая реакция на изменения, что может улучшить конкурентоспособность компании и ее результаты.
- Лучшая видимость и контроль над процессом разработки для повышения уровня управляемости и улучшения прогнозируемости результатов.
С чего начать развитие культуры DevSecOps, ключевые составляющие?
Люди:
Обучение сотрудников безопасности автоматизации, контролю качества кода, настройке и мониторингу инфраструктуры и т. д. Кроме того, важно организовывать семинары, тренинги и конференции для обмена опытом и обсуждения лучших практик. Также хорошей практикой будет создать базу знаний (или playbooks) на Confluence, например, и соответствующие ВНД. И не менее важный шаг – выращивание security champion’ов в каждой команде разработчиков. Очень важно взаимодействие и понимание между участниками процесса.
Еще хочу упомянуть про сдвиг в мышлении (mindshift left): нужно не только предотвращать нарушения, но и предполагать их.
Процессы:
- Анализ текущего состояния процессов разработки, безопасности и эксплуатации в организации. Это поможет определить сильные и слабые стороны и найти области, которые необходимо улучшить, например, используя BSIMM-фреймворк. Также процессы безопасности будут интегрированы в каждый этап разработки, а не будут добавлены как дополнительный шаг. Например, процессы проверки кода на безопасность и уязвимости могут быть интегрированы в автоматизированные процессы сборки и развертывания;
- Коммуникация и сотрудничество – подход, который предполагает более тесное сотрудничество между различными отделами компании, такими как разработка, тестирование, безопасность и эксплуатация.
Инструменты:
Важно использовать правильные инструменты (подходящие под инфраструктуру и требования) и технологии в процессе разработки, такие как сканеры уязвимостей, инструменты анализа кода и другие, которые могут обнаруживать и предотвращать уязвимости в приложении. Необходимо учитывать при выборе инструмента: будет ли он работать с нынешним CI/CD (Gitlab, Jenkins, CircleCI и др.), как много ложных сработок, будет ли работать с определенным ЯП (в случае SAST).
Чтобы развивать культуру DevSecOps, необходимо постоянно улучшать процессы и методологии. Это включает в себя изучение лучших практик, анализ проблем и ошибок и постоянный поиск путей для улучшения.
Какие основные этапы внедрения DevSecOps?
6 основных этапов внедрения:
- Оценка текущего состояния безопасности: выявление уязвимостей и рисков, а также определение потенциальных угроз, используя фреймворки, например, BSIMM или OWASP OpenSAMM;
- Планирование и проектирование: разработка стратегии внедрения DevSecOps в организацию, определение целей и приоритетов, выбор инструментов и методов внедрения;
- Внедрение процессов безопасности: создание или усовершенствование процессов безопасности, включающие в себя процессы тестирования, мониторинга, анализа и управления уязвимостями;
- Обучение и развитие сотрудников: осведомленность сотрудников о том, как использовать инструменты безопасности и как интегрировать процессы безопасности в жизненный цикл разработки приложений (SDL);
- Интеграция DevSecOps в CI/CD (SDL): добавить SAST/SCA, DAST анализаторы в первой итерации;
- Мониторинг и оптимизация: постоянный мониторинг процессов безопасности и анализ результатов для оптимизации их в соответствии с требованиями организации.
Каждый этап внедрения DevSecOps важен и требует серьезной работы, и подготовки. Успешное внедрение в организации поможет повысить безопасность приложений и снизить риски инцидентов безопасности, а также улучшить качество и скорость разработки и эксплуатации приложений.
Используемые технологии/Фреймворки
Необходимо поэтапно внедрять инструменты и фреймворки, чтобы не увеличивать time-to-market и не добавлять дополнительной работы разработчикам. Рекомендуется завершать пайплайн до конца, даже если будут найдены уязвимости на одной из стадий разработки ПО.
- шаг: Внедрение SSDLC, OSA/SCA, SAST, DAST, Log collection, WAF.
- шаг: Threat modeling, secure code standard, container security (harbor), pentest, vulnerability management, SIEM (WAZUH).
- шаг: IAC, IAST, IDS/IPS, RASP, ReadTeam, BugBounty.
Схемы/архитектура: Threat modeling (STRIDE)
STRIDE основана на CIA, есть еще DREAD, который присваивает рейтинговую систему на основе вероятности риска, а также PASTA – согласует технические требования с бизнес-целями.
Схемы/архитектура: CI/CD pipeline
PLAN:
BSIMM-фреймворк дляопределения уровня безопасности, который имеет 4 основных домена, 12 практик и 122 активности, разделенные на 3 уровня.
OWASP SAMM помогает измерять индивидуальные риски, с которыми сталкивается организация
Microsoft SDL соответствует набору обязательных процедур, встроенных в SDLC.
Выводы
Внедрение методологии DevSecOps позволит компании ускорить процесс доставки ПО и улучшить уровень безопасности на всех этапах разработки, при этом уменьшить затраты при найденных уязвимостях на более ранних этапах. Для успешной трансформации деятельности необходимо провести:
- Создание плана миграции, который позволит плавно перейти на DevSecOps без прерывания бизнес-процессов; должен включать в себя этапы, расписание и ответственных за реализацию каждого этапа.
- Создание культуры безопасности в организации, чтобы каждый сотрудник осознавал важность безопасности в процессе разработки. Это может включать в себя проведение обучения, разработку политик безопасности и создание команды безопасности.
- Обучение и обеспечение команды знаниями о DevSecOps – знакомство с лучшими практиками, инструментами и методами, которые позволяют реализовывать безопасный DevOps-цикл разработки.
- Определение ролей и ответственностей для каждого этапа DevSecOps-цикла. Это позволит убедиться, что каждый вовлеченный в процесс разработки знает, что ему нужно делать, чтобы обеспечить безопасность.
- Интеграция безопасности: безопасность должна быть интегрирована в процесс разработки с самого начала. Это означает, что каждый этап DevOps-цикла должен быть проанализирован с точки зрения безопасности и необходимо использовать инструменты, которые позволяют автоматизировать процессы безопасности.
Команда DevSecOps будет играть важную роль в управлении проектами и обеспечении качества, надежности проектов, а также уменьшении time-to-market. Это длительный процесс, ведь даже безболезненное внедрение SAST может занять до полугода.
Хотите знать больше про DevSecOps? Добро пожаловать на специализированный курс в Otus!