Какая разница между DevOps и DevSecOps?



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

Рисунок 6

Методология DevOps

Поговорим сначала о методологии DevOps. Её целью является объединение разработки, обеспечения качества, развертывание и интеграция. DevOps можно назвать философией, которая нацелена на построение культуры сотрудничества между командами, которые изначально функционировали отдельно друг от друга. Традиционно разработка программного обеспечения и операции, связанные с его развертыванием, выполнялись отдельно двумя разными людьми или отделами. DevOps же стремится повысить эффективность, уничтожая границы между этими двумя фазами разработки программного обеспечения. DevOps является ключевым фактором для любого технического специалиста, который хочет оптимизировать время и ресурсы для максимальной производительности, понимания и обучения.

Picture 1

Методология DevOps включает в себя:

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

Что из себя представляет DevOps engineer

Так как профессия появилась совсем недавно, в конце 00-х годов, какого-то точного определения для этой профессии не устоялось. Можно его сформулировать так: DevOps-engineer – это человек, который занимается внедрением методологии DevOps.

Picture 4

Есть несколько вещей, с которыми должен быть знаком DevOps-engineer:

  • Системы контроля версий. В резюме любого DevOps-engineer есть строчка с указанием Git, SVN, Mercurial и т.п.
  • Непрерывная интеграция (CI). Тут можно обратить внимание на Jenkins и TeamCity. Хочу отметить то, что инструментов для DevOps так много, что всех их эта статья охватить не сможет. Поэтому не обязательно делать акцент именно на том, что указано в этом списке.
  • Контейнеры. Например, Docker или Vagrant.
  • Инструменты автоматизации инфраструктуры. Тут пригодится знание Python, Shell или Bash. Помимо очевидных плюсов автоматизации, она к тому же еще и экономит кучу времени DevOps- engineer'ам.
  • Облачные сервисы. Один из самых востребованных навыков для DevOps-engineer. В качестве примера можно привести Microsoft Azure, Google Cloud, Amazon Web Services.
  • Тестирование. Одна из обязанностей DevOps-engineer - ускорить процесс доставки ПО клиентам. Т.к. большинству компаний важно качество своего программного обеспечения, тестирование стало неотъемлемой частью работы DevOps-engineer.
  • Хорошие навыки общения. Специалист DevOps должен обладать развитой эмпатией, так как общения на этой должности будет много. Конфликты не будут играть на руку для этого человека.

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

DevSecOps: что это и в чем отличие от DevOps

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

Picture 5

В основе подхода DevOps плотно закрепилась автоматизация. DevSecOps тоже стремится автоматизировать все, в том числе и аудит безопасности.

Для того, чтобы стимулировать внедрение DevSecOps, компания Cloud Security Alliance выделила шесть категорий, на которые следует обратить внимание.

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

Практические шаги трансформации DevOps в DevSecOps

Трансформация 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 анализирует приложение с целью найти компоненты, для которых известно, что они имеют уязвимости.

Заключение

Подытожим, что же у нас в итоге получилось.

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



Найдите ошибки в своем C, C++, C# и Java коде

Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

goto PVS-Studio;


Найденные ошибки

Проверено проектов
374
Собрано ошибок
13 663

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;