Проверки в конвейере: SAST, DAST, SCA, секреты
AppSec и DevSecOps: безопасность в конвейере разработкиКакие проверки встраивать, как не мешать разработке и как обрабатывать результаты.
Зачем это нужно
- Безопасность в конвейере — единственный способ проверять каждое изменение, а не раз в год.
- Неумелая настройка проверок приводит к отключению их разработчиками.
- Работа с результатами (приоритизация, исключения) важнее, чем запуск инструментов.
Теория
Статический анализ (SAST) ищет дефекты в исходном коде: опасные конструкции, забытые проверки, применение некорректных API. Он быстр и работает без запуска приложения, но даёт ложные срабатывания: важна настройка правил, приоритизация по критичности и постепенное внедрение — сначала только блокирующие критичные находки, затем расширение.
Динамический анализ (DAST) проверяет работающее приложение снаружи и находит дефекты конфигурации и обработки запросов. Анализ зависимостей (SCA) выявляет уязвимые библиотеки и несовместимые лицензии; без него нельзя управлять риском от сторонних компонентов. Проверка секретов ищет ключи и токены в коде и истории коммитов: это одна из самых эффективных мер, потому что утечка ключа в репозитории равносильна компрометации.
Встраивание: проверки запускаются в конвейере на каждом изменении, с понятными сообщениями, ссылкой на исправление и разумным временем работы. Практика: критичное блокирует, остальное создаёт задачи; исключения оформляются явно с обоснованием и сроком; результаты хранятся и сравниваются между сборками. Важно помнить, что SAST не заменяет ручное тестирование, а DAST — моделирование угроз и ревью дизайна.
Ключевые концепции
- SAST
- Анализ исходного кода без запуска: ищет классы дефектов, требует настройки против ложных срабатываний.
- DAST
- Анализ работающего приложения снаружи: проверяет конфигурацию и обработку запросов.
- SCA
- Анализ зависимостей: уязвимые версии библиотек и лицензионные риски.
- Сканирование секретов
- Поиск ключей, токенов и паролей в коде и истории: обязательный этап.
- Блокирующая проверка
- Проверка, останавливающая сборку: применяется только к критичным находкам.
- Ротация секретов
- Замена скомпрометированных ключей: обязательный шаг при обнаружении утечки.
Инструменты
- Платформы SAST и интегрируемые анализаторы для разных языков.
- Сканеры DAST для тестовых окружений.
- Средства анализа зависимостей и проверки лицензий.
- Сканеры секретов с проверкой истории репозитория.
- Системы управления находками, связывающие их с задачами.
Практика в легальных лабораториях
- Настройте статический анализ на своём учебном репозитории и разберите находки.
- Запустите сканирование зависимостей и составьте список критичных обновлений.
- Настройте сканирование секретов и проверьте историю коммитов.
- Опишите правила: что блокирует сборку, что создаёт задачу, как оформлять исключения.
- Смоделируйте утечку тестового ключа и выполните процедуру ротации.
Защита, детект и защитные меры
- Включайте проверку секретов до всего остального: это самая дешёвая и полезная мера.
- Настройте приоритизацию: блокируйте только критичное.
- Обновляйте зависимости по графику и отслеживайте новые уязвимости.
- Автоматизируйте ротацию ключей и документируйте процедуру.
Правовая рамка и этика
- Анализ кода и приложений выполняется в своих репозиториях и окружениях.
- Не запускайте динамические сканеры против чужих систем даже в рамках «проверки интеграции».
Типичные ошибки
- Включить все правила сразу и получить поток шума.
- Блокировать сборку на предупреждениях: разработчики начнут обходить проверки.
- Хранить исключения без обоснования и срока.
- Обновлять зависимости без проверки совместимости и тестов.
Чек-лист «умею»
- Умею настроить SAST, DAST, SCA и сканирование секретов.
- Определяю, что блокирует сборку, а что становится задачей.
- Оформляю исключения с обоснованием.
- Провожу ротацию ключей при утечке.
- Планирую обновление зависимостей.
Вопросы на интервью
- Как вы внедрите проверки безопасности, не мешая разработке?
- Почему сканирование секретов обязательно, даже при хорошей культуре?
- Какие находки анализа кода вы будете блокировать?