ADG Оставить заявку
Блог DevOps 4 мин чтения

DevSecOps на отечественном стеке: GitFlic CI + PT Application Inspector + Harbor

Собираем DevSecOps-конвейер из отечественных компонентов: GitFlic для SCM, PT Application Inspector для SAST, Harbor для container registry. Схема и реальное покрытие проверок.

Контекст момента

DevSecOps на отечественном стеке 2023: GitFlic CI + Swordfish (PT Application Inspector) + Harbor собраны в единый конвейер

Раньше на вопрос «как у вас устроен DevSecOps?» большинство заказчиков отвечали «GitLab Ultimate с Security Dashboard». Это работало, пока GitLab Ultimate был доступен. Сейчас ситуация другая, и несколько проектов у нас перешли к варианту, который ещё полгода назад казался экзотикой: GitFlic как SCM и CI, PT Application Inspector для SAST, Harbor для хранения образов. Записали схему и честное ощущение от покрытия.

Почему именно этот набор

Выбор компонентов не был произвольным - у заказчика требование по реестру отечественного ПО (приказ Минцифры, ФСТЭК), плюс инфраструктура на КИИ, где использование зарубежных SaaS-инструментов в цепочке разработки формально не проходит через модель угроз.

GitFlic - отечественный git-хостинг с встроенным CI-раннером. До масштабного замещения конкурентов в РФ был в тени, сейчас активно развивается. YAML-синтаксис пайплайнов похож на GitLab CI, но не идентичен - это важно: прямой миграции .gitlab-ci.yml нет, переписывать руками.

PT Application Inspector (он же Swordfish в части SAST-движка) - продукт Positive Technologies для статического анализа кода. Умеет Java, C#, PHP, Python, JavaScript, Go. Есть режим incremental-анализа и интеграция через CLI/API. Включён в реестр, есть сертификат ФСТЭК.

Harbor - технически не отечественный (CNCF-проект), но в ряде проектов его принимают как open source без ограничений. Для реестра с RBAC, vulnerability scanning через Trivy и политиками pull/push это разумный выбор даже без импортозаместительного мандата.

Схема конвейера

Developer push
  -> GitFlic SCM (code review, MR)
  -> GitFlic CI runner
       |
       +--> PT Application Inspector (SAST)
       |        -> результаты в артефакты пайплайна
       |        -> при HIGH/CRITICAL - fail pipeline
       |
       +--> Build Docker image
       |
       +--> Trivy scan (через Harbor API или локально)
       |        -> CVE в базовом образе
       |
       +--> Push to Harbor
                -> политика: только образы без CRITICAL CVE

Запуск SAST происходит до сборки образа - это принципиально: не тащить статические дефекты дальше по конвейеру. PT AI в режиме --fail-policy возвращает ненулевой exit code при находках выше порога, и GitFlic CI штатно ловит это как сбой шага.

Что реально проверяется

Честный ответ: не всё, что хотелось бы.

Покрыто хорошо:

  • SQL-инъекции, XSS, SSRF - это PT AI находит стабильно, даже в запутанном коде с несколькими уровнями абстракции. На нашем пилоте (Java-приложение, ~80k строк) ложноположительных было около 15% - приемлемо для первого прогона, потом можно настроить whitelist.
  • Hardcoded credentials - ключи, пароли, токены в коде. Движок цепляет не только очевидные password = "...", но и паттерны в конфигурационных файлах внутри репозитория.
  • Небезопасные криптопримитивы - MD5, DES, устаревшие TLS-конфигурации в коде.
  • CVE в зависимостях - через Trivy при сборке образа. Не часть PT AI, но закрывает SCA-уровень.

Покрыто частично или не покрыто:

  • Secrets в git-истории - PT AI анализирует текущий HEAD, не историю коммитов. Для ретроспективного поиска нужен отдельный инструмент типа truffleHog или gitleaks - в пайплайн не интегрировали, пока сделали разовый прогон вручную.
  • DAST - динамический анализ в этой схеме отсутствует. Без него SQL-инъекции в параметрах, которые не видны статически, остаются в слепой зоне.
  • IaC-анализ - Terraform, Ansible, Helm-чарты PT AI не анализирует. Чеклист проверки инфраструктурного кода пока ручной.

Боль интеграции

Самым трудоёмким оказалась не архитектура, а детали:

GitFlic CI и артефакты. Механизм публикации артефактов пайплайна (отчёты PT AI в формате JSON/HTML) устроен иначе, чем в GitLab. Нет встроенного рендеринга Security Reports в интерфейсе MR - отчёт надо скачивать вручную или парсить CI-скриптом и публиковать как комментарий. Реализовали через bash-скрипт, который выгружает summary в тело MR-комментария через GitFlic API.

PT AI CLI и прокси. На изолированном стенде PT AI ходит за обновлениями баз уязвимостей - нужен либо выход наружу, либо offline-обновление через утилиту управления базами. Offline-вариант задокументирован, но менее очевиден при первоначальной настройке.

Harbor и политики. Настройка Content Trust (нотариат образов) с GitFlic CI потребовала явной интеграции: раннер должен подписывать образ при push. Пока работаем без подписи - в бэклоге.

Где стоим

Пайплайн работает на двух проектах, SAST прогоняется на каждый MR. Время одного прогона PT AI на нашем Java-проекте - около 12 минут, что вписывается в приемлемые рамки для ревью. Для критичных находок пайплайн блокирует слияние - работает как ожидается.

Полноценным аудитом безопасности это не назовёшь: конвейер закрывает автоматизируемую часть, но не заменяет ручной анализ архитектуры и ревью логики доступа. Зато это работающий, воспроизводимый процесс из компонентов, которые сейчас доступны и соответствуют требованиям регулятора. Для ряда проектов - это уже достаточное условие для начала.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.