Введение
Прошло почти полгода с момента предыдущего релиза Dependency-Track v4.11 (о котором мы также писали в этой статье). 1 октября вышел новый релиз Dependency-Track v4.12.0, а на днях – релиз v4.12.1. Мы опробовали новый функционал и готовы рассказать о тех изменениях, которые показались нам наиболее интересными.
Этот релиз в основном был посвящен работе с тегами. Также был добавлен новый интерфейс для работы с нарушениями политик и изменены правила работы с API. Но обо всем по порядку.
Теги
Алерты могут быть привязаны к проектам с определенными тегами.
Оповещения теперь могут приходить не только по проектам, но и по заданным тегам.
Проекты могут быть включены или исключены для валидации BOM через теги.
Таким образом можно включить (или отключить) валидацию BOM для всех проектов, за исключением тех, которым присвоены определенные теги.
Проекты могут быть тегированы как часть запроса загрузки BOM. Для запросов PUT/POST на api/v1/bom добавилось поле projectTags, чтобы сразу указывать теги при загрузке SBOM.
Поля с тегами на фронтенде сейчас предлагают автозаполнение.
Появилось новое представление Tag Management, благодаря которому можно управлять тегами, в том числе через REST API эндпоинты. Теперь можно отслеживать, сколько тегов существует и к каким проектам, политикам и алертам они привязаны. Проекты, политики и алерты могут быть отвязаны от тегов, а теги могут удаляться.
Интерфейс представляет собой список всех имеющихся в системе тегов, связанных с проектами, политиками, алертами (каждая сущность — отдельный столбец).
Можно открыть диалоговое окно, позволяющее:
Провалиться внутрь — доступно только для проекта;
Отвязать одну или несколько сущностей от данного тега;
-
Удалить тег.
Тег можно удалить даже в случае, если к нему привязаны другие сущности (то есть необязательно отвязывать от тега все прикрепленные к нему проекты/алерты/политики, чтобы удалить его). Для удаления необходимо добавить пользователю или команде право TAG_MANAGEMENT. По умолчанию , администратор системы не имеет данных прав, так что после обновления Dependency-Track на новую версию это право нужно добавить вручную.
После добавления прав необходимо заново осуществить вход в систему, затем можно удалить тег.
Работа с политиками
-
Глобальный интерфейс аудита нарушений политик. Аналогично глобальному представлению уязвимостей из версии 4.11.0 в этом релизе был добавлен интерфейс для работы с нарушениями политик.
Появилась возможность поиска по следующим полям:
по типу нарушения (Fail, Warn, Info),
по типу риска (License, Security, Operational),
по статусу анализа (Not Set, Rejected, Approved),
по датам появления,
по названию политики, лицензии, компоненту и имени проекта,
по срабатываниям конкретных политик, заведенных вами в Dependency-Track.
Увы, проблемы с долгой загрузкой остаются. Как и в случае с интерфейсом для уязвимостей, загрузка занимает значительное время — в среднем 46 секунд для объема нарушений, равного 44912 срабатываниям.
Добавлена поддержка политик на основании EPSS.
EPSS (Exploit Prediction Scoring System — прогноз эксплуатации уязвимости) позволяет предсказать, насколько вероятна эксплуатация той или иной уязвимости.
Ранее для каждого проекта уже существовала система предсказания эксплуатации на основании графика EPSS / CVSS. Чем ближе уязвимость к верхнему правому краю графика, тем более она опасна и тем выше вероятность, что она будет проэксплуатирована.
Поэтому наличие условий в политике, по которым можно выставить отслеживание EPSS, является очень хорошей помощью в триаже уязвимостей, особенно если EPSS прописан в связке с критичностью уязвимости.
Изменения в API
Ручка GET /v1/bom/token/{uuid} объявлена как устаревшая (deprecated), вместо неё предлагается использовать /v1/event/token/{uuid}.
Аналогично с ручкой GET /api/v1/tag/{policyUuid}, можно использовать вместо неё GET /api/v1/tag/policy/{uuid} в своих интеграциях.
Модернизация. Технологический стек Dependency-Track был обновлен – c Swagger v2 на OpenAPI v3. В связи с этим описание API доступно по новому адресу: <hostname>/api/openapi.json).
Добавлена аутентификация в бейджи.
Бейдж (badge) – это SVG-значок с информацией о состоянии проекта (подробнее здесь.) На основании анализа Dependency-Track его можно загружать в репозиторий с оригинальным проектом через API.
Ранее Dependency-Track мог выгружать информацию о нарушениях политик и о количестве уязвимостей без аутентификации, но это создавало проблемы для безопасности проекта, поэтому по умолчанию эта функция была отключена. В этом релизе неавторизованный доступ был помечен как устаревший. Сейчас для того, чтобы загрузить бейдж, необходимо сделать следующее:
-
Выдать команде, ответственной за проект, право VIEW_BADGES;
Создать API-ключ команды для запрашивания бейджа. Его можно использовать в заголовке X-API-Key или в параметре apiKey в URI;
Использовать ключ в HTML или в Markdown (примеры можно посмотреть здесь)
Это можно объединить с контролем доступа к портфелю проектов, так что по ключу можно получить доступ к Badges подмножества проектов. Ссылка на полную документацию здесь.
Дополнительные изменения
Кроме описанных выше обновлений, в релиз Dependency-Track v4.12.0. были добавлены:
Модернизация. Dependency‑Track переехал с Java 17 на Java 21, с Java EE на Jakarta EE 10, с Jetty 10 на Jetty 12. Про переход со Swagger v2 на OpenAPI v3 мы упомянули выше.
Если Dependency‑Track установлен в k8s и вы используете read‑only файловую систему, контейнер frontend не сможет запуститься после обновления. Подробнее: frontend/#940.
Новый способ обработки SBOM «BOM Processing V2», о котором мы писали в прошлой статье по v4.11, сейчас настроен по умолчанию и является единственной доступной опцией.
Добавлен новый тип нотификации BOM_VALIDATION_FAILED — теперь в случае ошибки валидации BOM отправляется уведомление с InvalidBomProblemDetails.
При создании проекта теперь можно сразу привязать его к команде:
Подводя итог
За три недели после релиза Dependency‑Track v4.12.0 в GitHub проекта не появилось критических issue. К тому же вышла версия 4.12.1 с небольшими исправлениями, и мы рекомендуем вам переходить сразу на нее.
Мы считаем развитие в сторону менеджмента тегов интересным решением, а интерфейс работы с нарушенными политиками — логичным продолжением после такого же интерфейса в версии 4.11.