Как исключить размеченные уязвимости из отчетов (VulnerabilityReports)
Когда в кластере включен Модуль сканирования образов контейнеров Trivy, формируются отчеты о выявленных уязвимостях в образах контейнеров (VulnerabilityReports). В отчетах могут быть обнаружены уязвимости с критичностью HIGH, не относящиеся к образам контейнеров компонентов РОСА Кубис (известные размеченные уязвимости).
В графическом интерфейсе отчеты представлены в разделе "Безопасность" на странице "Анализ образов".
При необходимости можно исключить известные (размеченные) уязвимости из отчетов. Для этого необходимо:
- Подготовить конфигурацию для Trivy и загрузить файл vex-updated.json с размеченными уязвимостями в формате VEX;
- Создать в кластере ConfigMaps с конфигурацией для Trivy и файлом vex-updated.json;
- Подготовить и загрузить ShturvalServicePatch для применения к SSC shturval-scanner.
Подготовка конфигурации и файла с уязвимостями
- Создать конфигурационный YAML-файл для Trivy с именем trivy.yaml со следующим содержимым:
vulnerability:
vex:
- /tmp/vex/openvex.json
- Загрузить по ссылке vex-updated.json для текущей версии Комплекса.
- Перейти в кластер, где необходимо исключить размеченные уязвимости из отчета.
- Открыть раздел "Сервисы и Репозитории", перейти на страницу "Установленные сервисы" и найти Модуль сканирования образов контейнеров (shturval-scanner), перейти к управлению (рисунок 85).
- В блоке "Спецификация сервиса" найти параметр trivy.dbRegistry и скопировать его значение (рисунок 86).
- Открыть загруженный файл vex-updated.json и найти "repository_url". По умолчанию в "repository_url" указан registry "r.shturval.tech". Заменить "r.shturval.tech" на значение из trivy.dbRegistry и сохранить изменения. Пример vex-updated.json до изменений:

Рисунок 85 ‒ Управление модулем

Рисунок 86 ‒ Копирование параметра
{
"@context": "https://openvex.dev/ns/v0.2.0",
"@id": "https://openvex.dev/docs/public/vex/ee517aa7-57db-4d0b-9909-90aabf452bce",
"author": "Лаборатория Числитель",
"timestamp": "2025-08-18T08:32:53.692213Z",
"version": 1,
"statements": [
{
"vulnerability": {
"name": "CVE-2025-47907"
},
"products": [
{
"@id": "pkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-snapshotter"
},
{
"@id": "pkg:oci/cinder-csi-plugin@sha256%3A2c197dce4b635a170a1c5c0c040761e7b83ab8affd4e1c4edaed813bad65d268?arch=amd64&repository_url=r.shturval.tech%2Fprovider-os%2Fcinder-csi-plugin\npkg:oci/cinder-csi-plugin@sha256%3A2c197dce4b635a170a1c5c0c040761e7b83ab8affd4e1c4edaed813bad65d268?arch=amd64&repository_url=r.shturval.tech%2Fprovider-os%2Fcinder-csi-plugin"
},
{
"@id": "pkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-attacher\npkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-attacher\npkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-attacher\npkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-attacher\npkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-attacher"
},
{
"@id": "pkg:oci/csi-node-driver-registrar@sha256%3Ad544f280fb3b683b6d15ddd5371bbeee5ce6295721bfcf684706453a755c6d9f?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-node-driver-registrar\npkg:oci/csi-node-driver-registrar@sha256%3Ad544f280fb3b683b6d15ddd5371bbeee5ce6295721bfcf684706453a755c6d9f?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-node-driver-registrar\npkg:oci/csi-node-driver-registrar@sha256%3Ad544f280fb3b683b6d15ddd5371bbeee5ce6295721bfcf684706453a755c6d9f?arch=amd64&repository_url=r.shturval.tech%2Fsig-storage%2Fcsi-node-driver-registrar"
},
...
Пример vex-updated.json после изменений:
{
"@context": "https://openvex.dev/ns/v0.2.0",
"@id": "https://openvex.dev/docs/public/vex/ee517aa7-57db-4d0b-9909-90aabf452bce",
"author": "Лаборатория Числитель",
"timestamp": "2025-08-18T08:32:53.692213Z",
"version": 1,
"statements": [
{
"vulnerability": {
"name": "CVE-2025-47907"
},
"products": [
{
"@id": "pkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-snapshotter\npkg:oci/csi-snapshotter@sha256%3Aed26fa61da16cefa307ce5761f6208ec4cf88ec4efde20f0d0fba47e83e54f18?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-snapshotter"
},
{
"@id": "pkg:oci/cinder-csi-plugin@sha256%3A2c197dce4b635a170a1c5c0c040761e7b83ab8affd4e1c4edaed813bad65d268?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fprovider-os%2Fcinder-csi-plugin\npkg:oci/cinder-csi-plugin@sha256%3A2c197dce4b635a170a1c5c0c040761e7b83ab8affd4e1c4edaed813bad65d268?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fprovider-os%2Fcinder-csi-plugin"
},
{
"@id": "pkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-attacher\npkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-attacher\npkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-attacher\npkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-attacher\npkg:oci/csi-attacher@sha256%3A66ab827e23958d971a5e29219a2d4cff2e873fd1b2a9b7c6d4d30c61928e8ecf?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-attacher"
},
{
"@id": "pkg:oci/csi-node-driver-registrar@sha256%3Ad544f280fb3b683b6d15ddd5371bbeee5ce6295721bfcf684706453a755c6d9f?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-node-driver-registrar\npkg:oci/csi-node-driver-registrar@sha256%3Ad544f280fb3b683b6d15ddd5371bbeee5ce6295721bfcf684706453a755c6d9f?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-node-driver-registrar\npkg:oci/csi-node-driver-registrar@sha256%3Ad544f280fb3b683b6d15ddd5371bbeee5ce6295721bfcf684706453a755c6d9f?arch=amd64&repository_url=mirror.ip-xx-xx-xx-xx.shturval.link%2Fsig-storage%2Fcsi-node-driver-registrar"
},
...
Важно ‒ Если в trivy.dbRegistry registry задан с портом, то в repository_url двоеточие необходимо заменить на %3A.
Пример в SSC shturval-scanner trivy.dbRegistry:
trivy:
dbRegistry: registry:443
Тогда в vex-updated.json:
repository_url=registry%3A443
Создание ConfigMaps
В графическом интерфейсе Комплекса нужно перейти в неймспейс trivy-system кластера, где необходимо исключить размеченные уязвимости из отчета, затем открыть раздел "Хранилище" и перейти на страницу "ConfigMaps" (рисунок 87).

Рисунок 87 ‒ Страница "ConfigMaps"
Далее требуется создать ConfigMap с именем trivy-config, для чего в блоке "Бинарные ключи" загрузить конфигурационный файл trivy.yaml, сформированный на шаге подготовки, в окне загрузки в правом нижнем углу выбрать "Все файлы (.)", чтобы появилась возможность найти trivy.yaml. Когда файл загружен, нажать Сохранить (рисунки).

Рисунок 88 ‒ Загрузка ключей

Рисунок 89 ‒ Выбор файла ключа

Рисунок 90 ‒ Сохранение ConfigMap
Затем нужно создать ConfigMap с именем openvex. В блоке "Бинарные ключи" загрузить vex-updated.json. В окне загрузки в правом нижнем углу выбрать "Все файлы (.)", чтобы появилась возможность найти vex-updated.json. Когда файл загружен, нажать Сохранить.
Изменение ssc shturval-scanner
- После добавления ConfigMaps в кластере нужно подготовить ShturvalServicePatch для применения к спецификации (SSC) Модуля сканирования образов контейнеров (shturval-scanner), где добавить customvalues, как представлено в примере ShturvalServicePatch:
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
name: shturval-scanner-vex
spec:
shturvalServiceConfigName: shturval-scanner
customvalues:
trivyOperator:
scanJobCustomVolumes:
- configmap:
name: trivy-config
name: config
- configmap:
name: openvex
name: openvex
scanJobCustomVolumesMount:
- mountPath: /trivy.yaml
name: config
subPath: trivy.yaml
- mountPath: /tmp/vex/openvex.json
name: openvex
subPath: vex-updated.json
- В кластер загрузить с помощью импорта манифестов подготовленный ShturvalServicePatch.
- После добавления ShturvalServicePatch в кластере открыть раздел "Сервисы и Репозитории", перейти на страницу "Установленные сервисы" и найти Модуль сканирования образов контейнеров (shturval-scanner). Перевести модуль в выключенное состояние, выбрав режим "Выкл". Дождаться, когда удалятся все нагрузки из неймспейса trivy-system, после чего включить модуль, выбрав режим "Авто" и сохранить изменения.
- В интерфейсе командной строки подключиться к кластеру и удалить сформированные ранее отчеты по результатам сканирования ‒ VulnerabilityReport.
Пример команды (рисунок 91):
kubectl get vulnerabilityreports -A -o json | jq -r '.items[] | "\(.metadata.namespace) \(.metadata.name)"' | while read namespace name; do
kubectl delete VulnerabilityReport $name -n $namespace
done

Рисунок 91 ‒ Результат команды

Рисунок 91 ‒ Результат команды
Сканирование образов контейнеров перезапустится автоматически.
- Проверить запуск сканирования и формирования новых отчетов VulnerabilityReports.
Команда (рисунок 92):
kubectl get vulnerabilityreports -A

Рисунок 92 ‒ Результат команды

Рисунок 92 ‒ Результат команды
- В графическом интерфейсе кластера открыть раздел "Безопасность" и перейти на страницу "Анализ образов". Убедиться, что размеченные уязвимости отсутствуют.