Клиент спрашивает, какие проверки у вас в сборке
В опросниках по безопасности просят описать автоматические проверки кода, зависимостей и секретов. Сейчас ответить нечем: релиз собирается и уходит без них.
Внедрение DevSecOps — это автоматические проверки безопасности в вашем конвейере сборки и правила, что делать с их результатом. Поиск секретов, проверка зависимостей, образов и кода работают на вашем сервере сборки, находки попадают в запрос на слияние, а блокируется только то, что действительно опасно. Мы настраиваем конвейер так, чтобы релизы не встали в первый день, и передаём вам исходники настроек и инструкции.
Обследование конвейера — 200 000 ₽, вычитается из первого этапаПроверки работают на вашем сервере сборки, код не покидает контурСначала показываем находки, блокируем позже и только серьёзное
В опросниках по безопасности просят описать автоматические проверки кода, зависимостей и секретов. Сейчас ответить нечем: релиз собирается и уходит без них.
Тестовый ключ «на время» остался в истории, а рабочий скопирован из старого проекта. Никто не проверял, что именно хранится в коде и в переменных сборки.
Отчёт на сотни строк приходит на почту и закрывается. Серьёзное смешано с шумом, а владельца результата нет. Такая проверка создаёт ощущение безопасности, а не саму безопасность.
Перед выкладкой кто-то вручную просматривает изменения, и поток упирается в одного человека. Хочется переложить типовое на автоматику, а ручной взгляд оставить для рискованных мест.
Набор зависит от вашего конвейера и языка. Это заготовка для разбора: на обследовании мы заменяем примеры вашими системами. Отличие подхода от безопасной разработки в целом описано на странице Secure SDLC.
Чаще всего внедрение умирает на втором месяце: проверку включили сразу в блокировке, нашлись старые замечания, релиз встал, и её отключили. Мы вводим каждую проверку в три шага.
Накопленные замечания не чинятся одним днём. Мы раскладываем их по группам: исправить сейчас, исключить с причиной, отложить со сроком. Исключения записываются в файл в репозитории, а не в интерфейсе сканера, и у каждого есть владелец и срок. Без срока исключение становится вечным.
Короткий список, с которым спорить не приходится: секрет в коде или в истории изменений, библиотека с критической уязвимостью в используемой функции, образ с запуском от администратора без причины. Любая блокировка сопровождается понятным текстом: что найдено, где, и что сделать. Сообщение «сборка не прошла проверку безопасности» без подробностей разработчика раздражает и приводит к желанию проверку обойти.
Сканеры ошибаются, и это нормально. Мы разбираем первый отчёт вместе с вашими разработчиками и выносим типовые ложные срабатывания в правила: тестовые ключи, код, который не запускается, библиотеки, уязвимая функция которых не вызывается. Через пару недель отчёт содержит в основном то, на что стоит реагировать.
Порядок определяется шумом и пользой. Сначала то, что точно и дёшево, потом то, что требует настройки под ваш код.
Проверки зависимостей и образов опираются на базы известных уязвимостей, которые обычно обновляются из внешних источников. Если ваш сервер сборки изолирован, мы настраиваем это иначе.
Если контур строится на отечественных системах, список совместимых инструментов уточняем на обследовании; про сопутствующие задачи см. страницу импортозамещения ПО.
На всех активных репозиториях, без ручного запуска. Репозиторий, который обходит проверки, виден в списке.
Срок зависит от серьёзности и записан в правилах команды. Критичное устраняется до следующего релиза, остальное идёт в планах.
У каждого есть владелец, причина и срок. Раз в месяц исключения с истёкшим сроком пересматриваются, их список не растёт без причины.
Находки обсуждаются в ревью, а не закрываются автоматически. Это главный признак: инструменты можно заменить, привычку смотреть результат заменить нечем.
Цены — по тарифам. Сумма следующих этапов называется по итогам предыдущих, остановиться можно после любой ступени.
Как собираете и выкладываете, где секреты, как обновляются зависимости. На выходе схема конвейера с точками проверок, порядок подключения и вилка бюджета. Вычитается из первого этапа.
Несколько систем сборки, разные языки, репозитории подрядчиков. Плюс схема доступа к секретам и таблица ответственных.
Поиск секретов, проверка зависимостей и образов, правила для находок и исключений. Разбираем первый отчёт вместе с вашей командой.
Готовые настройки подключаются к другим репозиториям, добавляются проверка кода и конфигурации, часть проверок переводится в блокировку. Этапы с приёмкой.
Обновление правил и баз, разбор спорных находок, помощь с исключениями. Пакет на 60 000 ₽ в месяц — до 12 часов. Сверх пакета — 5 000 ₽ в час.
Смотрим конфигурацию сборки, места хранения секретов, процесс обновления библиотек и права сервисных учётных записей. Решаем, что подключать первым.
Создаём тестовую копию конвейера, чтобы пробовать проверки, не рискуя боевым. Подготавливаем зеркала баз и внутренний репозиторий пакетов, если контур закрытый.
Подключаем первые проверки, собираем отчёты, разбираем их вместе с вашими разработчиками и вносим исключения.
Включаем блокировку для новых серьёзных находок. Проверяем на тестовой ветке, что блокировка понятна, а сообщения подсказывают исправление.
Тиражируем готовые настройки на остальные репозитории, добавляем проверку кода и конфигурации, закрываем накопленный долг по плану.
Обновляем правила и базы, пересматриваем исключения, разбираем спорные находки. Объём часов записан в договоре.
Один репозиторий с одним GitLab CI и пять репозиториев с тремя разными системами сборки — разный объём настройки. Работа растёт по числу различий, а не по числу строк кода.
У каждого языка свои инструменты проверки и свои способы собрать список зависимостей. Несколько языков в одном продукте добавляют настройку.
Проект с давно не обновлявшимися библиотеками даст длинный первый отчёт, и время уйдёт на план обновления, а не на настройку проверки.
Зеркало баз уязвимостей, внутренний репозиторий пакетов и согласование доступов требуют отдельной работы и сопровождения.
DevSecOps — автоматическая часть большого процесса. Если у вас не определены требования к безопасности, не разбираются угрозы при проектировании и в ревью смотрят только на стиль, начинать стоит с безопасной разработки веб-приложений: автоматика без процесса находит ошибки, но не отвечает на вопрос, кто их исправляет.
Если нужно независимо узнать, что в продукте не так сейчас, а не выстроить процесс, это аудит безопасности веб-приложения: ревью кода и конфигурации с отчётом. Он хорошо сочетается с DevSecOps: аудит показывает накопленное, а проверки в сборке не дают ему вернуться. Вопросы про устройство системы в целом, а не про безопасность, разбирает аудит кода и архитектуры.
Если проблема не в коде, а в доступе сотрудников к системам, это единый вход и второй фактор. Если в разработке участвуют подрядчики, часть проверок записывается в договор и приёмку, подробности есть в статье «DevSecOps: с чего начать небольшой команде».
Три проверки для старта, режимы подключения, работа с шумом и исключениями.
Шесть этапов процесса, проверяемые требования и порядок внедрения на три месяца.
Классы ошибок, которые ловит автоматика, и те, что находит только человек.
Сорок минут созвона: на чём собираете, сколько репозиториев, где хранятся секреты и есть ли уже проверки. По итогам скажем, с какой ступени начинать и в какую вилку это укладывается.
Обследование конвейера стоит 200 000 ₽ за один-два репозитория и 350 000 ₽ за несколько систем, оно вычитается из первого этапа. Пилот на первых проверках — 150 000–400 000 ₽ за 2–8 недель. Распространение на остальные продукты идёт этапами по 300 000–700 000 ₽, их цена называется после пилота.
С обследования конвейера: смотрим, как вы собираете и выкладываете, где лежат секреты и как обновляются библиотеки. Первыми подключаем поиск секретов, проверку зависимостей и образов, потому что они дают мало ложных срабатываний. Проверку кода правилами и динамические тесты добавляем позже.
Мы вводим каждую проверку в три режима: сначала только информирует, затем предупреждает о новом, затем блокирует новое серьёзное. Накопленные замечания разбираем по плану отдельно. Блокировка не включается, пока не разобран первый отчёт и не отлажены исключения.
Да. Инструменты запускаются на вашем сервере сборки, базы известных уязвимостей зеркалируются внутрь контура, пакеты берутся из внутреннего репозитория. Код не передаётся третьим сторонам. Для данных ограниченного доступа внешние сервисы проверки чаще всего не подходят по требованиям заказчика.
Открытые, которые работают на вашем оборудовании: для поиска секретов, проверки зависимостей и образов, правил для кода и конфигурации. Конкретный набор зависит от вашего языка, системы сборки и того, что уже есть. Если у вас куплен сканер, подключаем его, а не заменяем.
Нет. Автоматика находит типовое: секреты, известные уязвимости, опасные конструкции. Логические ошибки доступа, например чужой заказ по прямой ссылке, находит человек. Аудит и проверки в сборке дополняют друг друга.
Ваша команда. Мы помогаем назначить ответственного, настроить срок реакции по серьёзности и убрать шум. На время сопровождения можем разбирать спорные находки, но круглосуточного дежурства у нас нет.
Вам. Настройки проверок, правила, файл исключений и инструкции лежат в вашем репозитории с первого коммита и передаются по акту. Подписки на доступ к собственному конвейеру нет, открытые компоненты остаются под своими лицензиями, их список входит в документацию.
Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.