in

DevSecOps — кто это? Инструменты, опыт, задачи

Мальчик, DPI нам принеси, мы L7 layer фильтровать будем

Количество ишью в жире современных IT-компаний, связанных с безопасностью, растёт от года к году. Устойчивость инфраструктуры, в частности highload-сервисов, от внешних атак, DDoS и утечек данных стала одним из первостепенных требований бизнеса, поэтому эйчары всё чаще стали искать таких специалистов, как DevSecOps, отвечающих за разработку, сопровождение кода и обеспечения безопасности в режиме brain overflow.

Для того, чтобы понять как Sec затесалась между Dev и Ops, необходимо вспомнить, что вообще такое девопс: это методология синхронизации и оптимизации рабочих процессов разработки, эксплуатации и техническому обслуживанию ИТ-ландшафта с целью обеспечения качества продукта. Является, по сути, катализатором автоматизации процессов разработки и сопровождения всего жизненного цикла продукта.

Теперь в это понятие влилось такое течение, как безопасность. В рабочий стек инженера будут добавлены инструменты для работы с ИБ, которые будут переплетены с разработкой инфраструктуры и приложений (что-то вроде security engineer’а), анализом крашей, инцидент-менеджментом, настройкой и профайлингом операционных систем.

Чем занимается DevSecOps-инженер

В их обязанности входит постоянный контроль над защищенностью и качеством инфраструктуры и/или экосистемы компании. Каждый новый digital-продукт должен быть максимально безопасным: поэтому DevSecOps обязательный участник дэйли митингов, принимает непосредственное участие в пайплайне проекта, анализирует возможные уязвимости с помощью моделирования угроз, Это всё помимо стандартных DevOps-практик и работы с аудитом. В общем, полное погружение в разработку цифровых решений с уклоном в ИБ и R&D

Какие требуются скиллы

Начнём с, пожалуй, главного аспекта — дотошное знание unix-like систем и аспектов безопасности этих ОС. Так же, скорее всего, понадобится:

Представление о работе сетевых протоколов: HTTPS, DNS, TCP/IC, уровней модели OSI

Естественно, если продукт цифровой, будь-то CRM, сайт или приложение, оно должно быть, в первую очередь, защищено от внешних угроз. Без знания базового стека TCP/IP и защищенных протоколов здесь никуда. Сюда же входят и все уровни модели OSI: от эзернет до фтп

Разбираться в cистемах обеспечения непрерывной интеграции (Jenkins, Gitlab CI/CD)

Дженкинс — одно из популярных серверных решений для автоматизации процесса разработки — непрерывной интеграции. Решение опенсорсное, написано на Яве и имеет кучу плагинов и расширений для работы. Используется для создания пайпланов проекта, например, микросервиса. Jenkins будет получать файл конфигурации из отдельного репозитория, собирать и тестировать проект в Docker-контейнере, а затем собирать Docker-образ приложения и пушить его в реестр. Непрерывная интеграция позволяет держать постоянное соединение рабочих копий в общую линию разработки и автоматически деплоить сборку, а так же упрощает процесс тестирования

Системные знания в области криптографии, протоколов шифрования

Речь не только и не сколько об SSL или HTTPS, сколько об IpSec (в т.ч. IKE) и TLS. Возможно, потребуется опыт реализации криптоалгоритмов или базовые знания архитектуры процессоров. А может даже и знания машинных языков (ассемблера). Всё зависит от архитектуры проекта

Знание английского языка

Как минимум —  на уровне чтения документации. Да и давно уже понятно, без знания английского в IT делать нечего (по крайней мере на технических позициях)

Опыт работы с методами автоматизации патчей (Patch Management)

Оно же управление исправлениями. С точки зрения безопасности такая методика позволяет оперативно латать дыры в коде, снижая вероятность 0-day угроз. Постоянное обновление ПО позволяет перманентно держать ИТ-инфраструктуру на должном уровне защиты, если, конечно, грамотно проводить тестирование перед развёртыванием апдейта.

Работа с Docker, Kubernetes (возможно AWS, Google Cloud)

Очевидно, что без контейнеров в работе DevOps, даже с приставкой sec не обойтись. Здесь, скорее всего, будет всё стандартно: связка Kubernetes и Docker. Kubernetes — инструмент оркестровки, развёртывания и автоматизации таких для таких платформ, как Docker, который, в свою очередь, является контейнерной площадкой для приложений и/или микросервисов.

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

Внедрение средств анализа (SAST / DAST)

Инструменты Static Application Security Testing (SAST) и Dynamic Application Security Testing (DAST) используются для детектирования уязвимостей на начальном этапе жизненного цикла разработки продукта (исходного кода), либо при его непосредственном запуске (самого приложения). Аутентификация, конфигурация сервера, SQL-инъекции, обработка форм, функции загрузки контента, выполнение сценариев, проверка на XSS и многое другое. Используются как статические (SAST), так и динамические (DAST) утилиты для анализа и сканирования кода на предмет уязвимостей. Соответственно, либо ручной анализ, либо через ML.

Принятие философии Scrum / Kanban

Естественно, современная разработка практически целиком и полностью подчиняется практикам Agile. Это не должно быть секретом для DevSecOps-инженера. При этом не факт, что на вашем месте работе будет именно данная методология. Вы вполне можете «нарваться» на каскадную модель разработки (Waterfall model). Её суть в том, что переход от одной фазы к другой происходит только после полного и успешного завершения предыдущей

Навыки разработки

Навыки фулл стека тоже пригодятся — желательно уметь писать хотя бы на каком-нибудь языке программирования и/или проводить code review

Использование методик и информации проектов, вроде OWASP

Предупреждён — вооружен. В мире есть много профессиональных сообществ, в котором объединены корпорации, образовательные организации и конкретных частных лиц. Данные комьюнити разрабатывают технологии и инструменты, в том числе, для защиты веб-приложений. Например, в OWASP есть огромное количество документации различных библиотек кода для работы с опасными уязвимостями

Пример задач на проекте

Что нужно будет делать DevSecOps-инженеру в зависимости от курса разработки, капризов эксплуатации и требований безопасности

  • Поиск и анализ дыр во внешних библиотеках и компонентах, моделирование угроз (Threat Modelling)
  • Взаимодействие с командой разработки, участие в митапах
  • Контроль по сборке, доставке и развёртыванию. Тестирование конфигурации (CIS, NIST). Настройка WAF и NGFW
  • Обработка уязвимостей (инцидент менеджмент), патчинг, построение защиты для REST-API
  • Интеграция процессов и инструментов безопасной разработки DevSecOps для продуктов и сервисов компании (то, о чем писали в скиллах — SAST, DAST, и другие).
  • Мониторинг безопасности и реакция на события в ИБ (SIEM)
  • Постоянный мониторинг ИТ-ландшафта на предмет возможных уязвимостей. Криминалистическая экспертиза (Forensic Analysis)
  • Проведение код ревью, работа с внешними аудиторами (Bug bounty)
  • Создание и актуализация документооборота (Confluence), разработка нормативов по защищенной сборке и деплоингу ПО

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *