В сборки — только одобренные open-source компоненты
Каждая сборка тянет пакеты и образы из интернета. Коммерческие «файрволы» репозиториев задерживают новые компоненты, пока их не посмотрит безопасность. Строим такой же контроль на открытых инструментах или на отечественных AppSec.Track и AppSec.Registry.
Новые зависимости попадают в сборки, минуя безопасность: разработчик добавил — конвейер скачал.
Карантин для образов, заявка с одобрением для пакетов, наблюдение после одобрения.
В сборках только одобренные компоненты, у каждого решения есть автор и дата.
Для кого
- Безопасность хочет решать, какие open-source пакеты попадают в рабочие сборки.
- Смотрели Sonatype Repository Firewall или JFrog Curation, но они недоступны или не подходят по цене.
- У вас Nexus Community Edition или нет хранилища артефактов, и сборки скачивают зависимости напрямую из интернета.
- Заказчик, аудитор или орган по сертификации спрашивает, как вы проверяете сторонние компоненты, а честный ответ — «разработчики выбирают сами».
Как это делают коммерческие продукты
Чтобы было понятно, с чем сравнивать.
- Sonatype Repository Firewall. Если новый запрошенный компонент нарушает политику, он попадает в карантин и не скачивается через прокси-репозиторий. Безопасность разбирает нарушения и выпускает компонент. Если сервис недоступен, новые компоненты остаются заблокированными.1
- JFrog Curation. Политики, которые не пускают в организацию вредоносные, уязвимые и неподходящие по лицензии пакеты ещё до скачивания.2
Оба — коммерческие надстройки над хранилищем артефактов своего вендора.
Коммерческий файрвол → открытые инструменты
Цель та же: ничего нового не попадает в сборки без проверки. Разница — в том, кто и как принимает решение.
Как это работает для пакетов
Сборки не ходят в интернет
Зависимости npm, PyPI и Maven конвейер берёт только из внутреннего реестра.
Новая зависимость — это заявка
Разработчик открывает merge request в белый список. Конвейер скачивает пакет и проверяет: известные уязвимости, признаки вредоносного кода (GuardDog — открытый сканер от Datadog4), антивирус, лицензию.
Безопасность одобряет
Только после одобрения пакет публикуется во внутренний реестр. История merge request — ваш журнал решений. На GitLab Premium и Ultimate одобрение группы безопасности можно сделать обязательным правилом5; на бесплатной версии — отдельный проект белого списка, в который принимает изменения только безопасность.
Наблюдение после одобрения
Dependency-Track6 следит за всем одобренным и сообщает владельцам проектов о новых уязвимостях.
Для образов отдельной заявки не нужно: прокси-проект Harbor проверяет каждый новый образ сам и не отдаёт его, если уязвимости выше порога или образ не подписан3.
Вариант на отечественных продуктах
Если нужен коммерческий продукт с поддержкой производителя — AppSec.Track вместе с AppSec.Registry.
- AppSec.Track: по описанию производителя — блокирует загрузку вредоносных пакетов в реальном времени, защищает от подмены зависимостей и тайпсквоттинга, проверяет контрольные суммы, ведёт SBOM и чёрные и белые списки лицензий, останавливает конвейер при нарушении политики.7
- AppSec.Registry: хранилище артефактов с карантином и политиками допуска; сканирование AppSec.Track при поступлении компонента.8
- AppSec.Track работает и с уже установленными Nexus и Artifactory — хранилище менять не обязательно.7
Какой вариант выгоднее — открытый или на AppSec, — говорим после замеров: зависит от числа форматов, команд и того, нужна ли вам поддержка производителя.
Что из ГОСТ Р 56939-2024 это закрывает
Два процесса стандарта касаются именно сторонних компонентов. Приказ ФСТЭК России № 240 при сертификации проверяет наличие средств композиционного анализа (п. 19). Профиль защиты Банка России для ПО финансовых организаций разрешает только проверенные сторонние компоненты — с композиционным анализом и проверкой на вредоносное ПО (политика безопасности 6), и проверять их до размещения в репозитории, в том числе антивирусом (табл. 7.4.3.7). Тексты требований →
Это материалы для процессов 5.16 и 5.17, а не заключение о соответствии. Регламенты процессов пишете вы, мы даём шаблоны.
Что вы получаете
Карантин образов
Прокси-проекты Harbor, которые проверяют каждый новый образ и не отдают уязвимые выше порога или неподписанные.
Заявки на пакеты
Проект белого списка, конвейер проверок и публикация во внутренний реестр.
Порядок исключений
Как попросить исключение, кто решает и когда оно истекает.
Наблюдение
Dependency-Track со всем одобренным и оповещения владельцам проектов.
Две инструкции
Для разработчиков — как заказать пакет. Для безопасности — как рассматривать заявку.
Как проходит
- Шаг 1 · 1–3 дня
Замеры
Что сборки скачивают сейчас, откуда и как часто появляются новые зависимости. Фиксированная цена и план.
- Шаг 2
Образы
Прокси-проекты Harbor с проверкой и блокировкой, сборки переключаются на них.
- Шаг 3
Пакеты
Белый список, конвейер проверок, внутренний реестр. Сначала — одна пилотная команда.
- Шаг 4
Наблюдение и передача
Dependency-Track, порядок исключений, инструкции, встречи с разработчиками и безопасностью.
Порядок всегда один. Сколько займёт каждый шаг, зависит от объёма: замеры на первом шаге задают цену и сроки.
Что нужно от вас и что не входит
Нужно от вас
- Ответственный в безопасности, который одобряет заявки.
- Возможность закрыть агентам сборки прямой выход в интернет — скажем, что именно закрыть.
- Пилотная команда, готовая первой работать по-новому.
Не входит
- Рассмотрение заявок за вас — решение остаётся за вашей безопасностью.
- Гарантия, что вредоносный пакет никогда не пройдёт: проверки снижают риск, но не убирают его.
- Покупка коммерческих данных об угрозах.
Вопросы и ответы
Разработчики не начнут ждать неделями?
Образы проверяются в прокси без участия людей. Новый пакет ждёт одобрения — срок ответа согласуем с безопасностью, а распространённые пакеты одобряем заранее, чтобы очередь была короткой.
Это так же надёжно, как Sonatype или JFrog?
У коммерческих продуктов свои данные об угрозах и автоматический карантин для пакетов. У нас — открытые сканеры и явный шаг одобрения. Многим командам этого достаточно; кому-то коммерческий продукт стоит своих денег. Что подходит вам, скажем после замеров.
Можно оставить Nexus Community Edition?
Да. Одобренные пакеты может хранить Nexus CE — мы добавляем вокруг него заявки и карантин образов. Если Nexus упёрся в лимиты, смотрите три пути.
Нужен ли GitLab Premium?
Нет. С Premium обязательное одобрение безопасностью настраивается правилом в проекте; на бесплатной версии используем отдельный проект белого списка.
Источники
- Sonatype Help: Firewall Quarantine
- JFrog: Announcing JFrog Curation
- Harbor Docs: Project Configuration
- Datadog Security Labs: GuardDog 3.0
- GitLab Docs: Merge request approval rules
- OWASP Dependency-Track
- AppSec.Track — сайт производителя
- AppSec.Registry — сайт производителя
Sonatype Repository Firewall, JFrog Curation — товарные знаки их правообладателей.
Расскажите, что ваши сборки скачивают из интернета
Форматы (образы, npm, PyPI, Maven…) и число конвейеров — этого достаточно, чтобы оценить объём на первом звонке.