Типичная сцена из жизни команды разработки: тимлиду или DevOps-инженеру прилетает задача от руководства — «нужно прикрутить безопасность к пайплайну». Вы не безопасник, но задача стоит, и ваш минимум: чтобы не пускало уязвимости в прод. Обычный и логичный путь — взять популярный сканер (Trivy, SonarQube, Semgrep), воткнуть его новым шагом в пайплайн GitLab CI или GitHub Actions с дефолтным конфигом и запустить на мастере.
Но спустя десять минут пайплайн с треском падает. Сканеры с гордостью выдают 480 предупреждений: от устаревшей минорной библиотеки пятилетней давности в глубине node_modules до гипотетической уязвимости в тестовом скрипте, который вообще не попадёт в прод.
Реакция команды предсказуема: через неделю постоянных ложных блокировок разработчики либо прописывают allow_failure: true, либо аккуратно забивают на алерты. Безопаснее не стало, релизы замедлились, а при упоминании «DevSecOps» все только раздражаются.
Проблема не в инструментах, а в подходе. Встроить безопасность в CI/CD — это настроить гигиенический минимум, который отлавливает реальные угрозы и при этом не тормозит поставку фич.