DevOps – это методология, нацеленная на взаимодействие программистов и системных администраторов, которые в тесном взаимодействии разрабатывают продукт. DevOps engineer — специалист, который работает на стыке этих двух должностей. Основная цель работы DevOps инженера — максимально увеличить предсказуемость, эффективность и безопасность разработки ПО. DevSecOps – развитие концепции DevOps, где помимо автоматизации затрагиваются вопросы обеспечения качества и надёжности кода.
Поговорим сначала о методологии DevOps. Её целью является объединение разработки, обеспечения качества, развертывание и интеграция. DevOps можно назвать философией, которая нацелена на построение культуры сотрудничества между командами, которые изначально функционировали отдельно друг от друга. Традиционно разработка программного обеспечения и операции, связанные с его развертыванием, выполнялись отдельно двумя разными людьми или отделами. DevOps же стремится повысить эффективность, уничтожая границы между этими двумя фазами разработки программного обеспечения. DevOps является ключевым фактором для любого технического специалиста, который хочет оптимизировать время и ресурсы для максимальной производительности, понимания и обучения.
Методология DevOps включает в себя:
Так как профессия появилась совсем недавно, в конце 00-х годов, какого-то точного определения для этой профессии не устоялось. Можно его сформулировать так: DevOps-engineer – это человек, который занимается внедрением методологии DevOps.
Есть несколько вещей, с которыми должен быть знаком DevOps-engineer:
Далее обсудим тот вопрос, с которого мы начали эту заметку.
DevSecOps, как и DevOps, также можно назвать целой культурой. DevSecOps - это философия интеграции методов безопасности в процесс DevOps. DevSecOps инженеру тоже важна командная работа: его способность к разрешению конфликтов и продуктивным беседам как нельзя кстати приходится для создания наиболее безопасных приложений. DevSecOps с самого начала жизненного цикла приложения ПО занимается его безопасностью, создавая различные средства защиты.
В основе подхода DevOps плотно закрепилась автоматизация. DevSecOps тоже стремится автоматизировать все, в том числе и аудит безопасности.
Для того, чтобы стимулировать внедрение DevSecOps, компания Cloud Security Alliance выделила шесть категорий, на которые следует обратить внимание.
Трансформация DevOps в DevSecOps требует понимания определенных технологий и методов обеспечения безопасности программ. Остановимся на этом моменте подробнее и посмотрим, какие конкретно технологии нам тут пригодятся.
Для начала предлагаю рассмотреть возможность встраивания средств динамического тестирования безопасности приложений, DAST. Динамические анализаторы программного кода позволяют выявлять уязвимости в коде, например, SQL-инъекции, переполнение буфера и подобные, методом черного ящика. Использование динамических анализаторов при разработке позволит сделать шаг навстречу DevSecOps практикам.
RASP, самозащита приложений Runtime – одно из средств защиты, которое используется при выполнении программы. RASP анализирует поведение приложения и таким образом проводится непрерывный анализ безопасности.
Интерактивное тестирование безопасности приложений, IAST. Технология IAST анализирует приложение изнутри во время его работы. IAST отслеживает выполнение кода в памяти и ищет конкретные события, которые могут привести к уязвимости. Далее эти события анализируются с целью проверить, все ли с ними хорошо и не закралась ли какая-либо уязвимость.
Средства статического тестирования защищённости приложений, SAST – это способ проверки кода без запуска самой программы. SAST помогает найти потенциальные уязвимости в исходном коде и тем самым предотвратить многие уязвимости нулевого дня. Одна из популярных классификаций предупреждений SAST инструментов - Common Weakness Enumeration, CWE. CWE представляет собой официальный реестр или словарь общих дефектов безопасности, которые могут быть использованы злоумышленниками для получения несанкционированного доступа к системе. Использование статического анализатора при разработке поможет не допустить попадания программных ошибок на следующий уровень – CVE. CVE (Common Vulnerabilities and Exposures) – это база данных общеизвестных уязвимостей информационной безопасности. CVE была создана для того, чтобы упорядочить известные дефекты программ.
Анализ состава кода, SCA. SCA позволяет обнаруживать уязвимости в компонентах с открытым кодом. SCA анализирует приложение с целью найти компоненты, для которых известно, что они имеют уязвимости. См. "Чем опасны уязвимые зависимости в проекте и как с этим помогает SCA?" и "SAST и SCA: поиск дефектов безопасности в коде проекта и его зависимостях".
Подытожим, что же у нас в итоге получилось.
DevSecOps – это способ интегрировать задачи безопасности в методологию DevOps. Вопросы автоматизации безопасности в DevOps – это та вещь, которая требует новых подходов, технологий и инструментов. DevSecOps можно считать продолжением методологии DevOps, так как DevSecOps основан на методологии последних. Чтобы ознакомиться подробнее, предлагаю следующие ссылки: