Внедрение DevSecOps-практик в CI/CD под ключ

Безопасность часто остаётся «на потом» — проверки перед релизом вручную, уязвимости обнаруживаются после инцидента. Мы внедряем DevSecOps-практики под ключ: встраиваем SAST, SCA, сканирование контейнеров и IaC прямо в ваш CI/CD, чтобы разработчики видели проблемы до мерджа. Наша команда адаптирует инструменты под ваш стек и сопровождает проект — от аудита до поддержки.
Часто задаваемые вопросы

Внедрение DevSecOps-практик в процесс разработки

Внедряем DevSecOps более 7 лет, на счету 50+ проектов. DevSecOps — не отдельный инструмент и не отдельная команда. Это сдвиг влево (shift left) безопасности. Проверки, которые раньше делались вручную перед релизом или вообще не делались, теперь встраиваются в повседневный процесс разработки: в pre-commit hooks, в CI/CD пайплайн, в деплой в Kubernetes. Разработчик узнаёт об уязвимости до мерджа, а не после инцидента. Гарантируем снижение числа инцидентов безопасности на ранних этапах. Статический анализ находит на 80% больше уязвимостей, чем ручное тестирование на проникновение (по данным NIST). Оценим ваш текущий уровень безопасности — свяжитесь с нами.

Наш подход гарантирует, что безопасность становится неотъемлемой частью разработки, а не отдельной проверкой перед релизом. Мы не просто настраиваем инструменты — мы адаптируем их под ваш стек и процессы.

Почему «просто поставить Trivy» недостаточно

Самая частая ошибка при внедрении DevSecOps — установить один инструмент и считать задачу решённой. Реальная картина сложнее: один и тот же сервис имеет несколько векторов атаки, и каждый требует своего инструмента.

Вектор 1 — код приложения

SAST (SonarQube, Semgrep, CodeQL) ищет уязвимые паттерны в исходниках — SQL injection, hardcoded credentials, небезопасная десериализация.

Вектор 2 — зависимости

SCA (Software Composition Analysis) — Dependabot, Snyk, OWASP Dependency-Check анализирует npm/pip/maven зависимости на известные CVE.

Вектор 3 — контейнеры

Trivy, Grype сканируют Docker-образы, включая OS-пакеты и транзитивные зависимости.

Вектор 4 — IaC

Checkov, tfsec, KICS проверяют Terraform, Kubernetes manifests, Helm charts — открытые S3 buckets, избыточные IAM права, отсутствие encryption at rest.

Вектор 5 — секреты в коде

gitleaks, truffleHog ищут случайно закоммиченные API-ключи, токены, приватные ключи.

Вектор 6 — runtime

Falco детектирует подозрительное поведение в запущенных контейнерах — неожиданный exec, изменение файлов /etc/passwd, network connection из неожиданного процесса.

Как справиться с ложными срабатываниями?

Любой security инструмент генерирует false positive. Процесс управления исключениями критически важен: без него инженеры начинают отключать инструменты целиком.

Для каждого исключения:

  • Уникальный идентификатор CVE/правила
  • Обоснование: почему не применимо или не исправимо
  • Дата пересмотра (обычно +3 месяца или +6 месяцев)
  • Кто принял решение
# semgrep inline suppression с обоснованием
password = get_password() # nosemgrep: python.lang.security.audit.hardcoded-password # Exemption: password читается из env var, а не захардкожен. Проверено актуально.

Архитектура DevSecOps пайплайна

Распределяем проверки по этапам с учётом скорости и важности: Pre-commit (секунды):

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.18.0
    hooks:
      - id: gitleaks
  - repo: https://github.com/antonbabenko/pre-commit-terraform
    rev: v1.86.0
    hooks:
      - id: terraform_tfsec
      - id: terraform_checkov

CI/CD — стадия security (параллельно, минуты):

# .gitlab-ci.yml
stages: [build, security, test, deploy]

.security-base:
  stage: security
  needs: [build]

sast:
  extends: .security-base
  image: returntocorp/semgrep
  script:
    - semgrep --config=auto --error --json --output=semgrep.json src/
  artifacts:
    reports:
      sast: semgrep.json

container-scan:
  extends: .security-base
  image: aquasec/trivy:latest
  script:
    - trivy image --exit-code 1 --ignore-unfixed --severity CRITICAL --format sarif --output trivy.sarif $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  artifacts:
    reports:
      container_scanning: trivy.sarif

iac-scan:
  extends: .security-base
  image: bridgecrew/checkov:latest
  script:
    - checkov -d terraform/ --output junitxml --output-file-path checkov.xml --soft-fail-on MEDIUM
  artifacts:
    reports:
      junit: checkov.xml

dependency-scan:
  extends: .security-base
  script:
    - npm audit --audit-level=high # или pip-audit, safety

Все стадии security запускаются параллельно — не добавляют последовательного времени к пайплайну.

Политика реагирования на находки

Инструменты без чёткой политики создают шум. Нужно заранее договориться:

Тип Severety Действие
Секрет в коде любой Блокируем merge, ротируем секрет немедленно
Критическая CVE с патчем CRITICAL Блокируем merge, исправляем в течение 24 ч
Критическая CVE без патча CRITICAL Тикет в backlog, exemption с обоснованием
SAST: SQL injection, RCE HIGH Блокируем merge
SAST: best practice нарушения LOW/MEDIUM Фиксируем, не блокируем
IaC: открытый S3 bucket CRITICAL Блокируем merge
IaC: отсутствие тега LOW Предупреждение

Политика должна быть закреплена в документации и всем известна заранее — иначе каждое заблокированное MR будет неожиданностью для разработчика. Исправление уязвимости на этапе разработки обходится в 30 раз дешевле, чем в продакшене (по данным NIST).

Почему runtime-мониторинг критически важен?

После деплоя — Falco как HIDS (Host Intrusion Detection System) для Kubernetes:

# Пример кастомного Falco rule
rule: Unexpected Network Connection from App Container
  desc: Детектирует неожиданные исходящие соединения из app-контейнеров
  condition: >
    outbound and container.image.repository = "myorg/myapp" and not fd.rip in (allowed_ips)
  output: >
    Unexpected outbound connection (user=%user.name command=%proc.cmdline connection=%fd.name container=%container.name image=%container.image.repository)
  priority: WARNING
  tags: [network, myapp]

Falco интегрируется с Falcosidekick для отправки событий в Slack, PagerDuty, Elasticsearch.

Процесс внедрения

Не внедряем всё сразу. Последовательность по приоритету:

  1. Неделя 1–2: gitleaks pre-commit + Trivy в CI (самый быстрый ROI)
  2. Неделя 3–4: SAST (Semgrep с базовым ruleset) + dependency scanning
  3. Месяц 2: IaC scanning + политика обработки findings
  4. Месяц 3: ESO для secrets management + подписание образов
  5. Месяц 4+: Falco runtime detection + OPA/Kyverno policies

Каждый этап начинаем в audit mode — собираем baseline, исправляем существующие нарушения, только потом включаем blocking.

Что вы получаете в результате

  • Аудит текущего состояния CI/CD и инфраструктуры
  • Настройка всех описанных инструментов (gitleaks, Trivy, Semgrep, Checkov, Falco)
  • Интеграция в ваш пайплайн (GitLab CI, GitHub Actions или Jenkins)
  • Политики безопасности для каждого типа находки
  • Документация по процессу обработки исключений
  • Обучение команды DevSecOps-практикам (2 воркшопа)
  • Поддержка в течение 1 месяца после внедрения

Сроки всего проекта

Масштаб Оценка
Стартовый набор: gitleaks + Trivy + Semgrep (1 репозиторий) 3–5 дней
Полный стек: все векторы + политика + документация (1 команда) 2–4 недели
Enterprise: несколько команд + governance + обучение 2–3 месяца

Стоимость рассчитывается индивидуально после аудита текущего состояния инфраструктуры и CI/CD пайплайнов. Закажите аудит безопасности вашего CI/CD и получите консультацию сертифицированных инженеров.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139