Количество ишью в жире современных 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), разработка нормативов по защищенной сборке и деплоингу ПО