Обновление базы уязвимостей Trivy в офлайн-средах
Это руководство объясняет, как поддерживать сканер Trivy в Harbor в актуальном состоянии в изолированных от сети средах, создавая и публикуя собственный образ офлайн-базы уязвимостей.
По умолчанию Trivy загружает базу уязвимостей из интернета. В офлайн-среде это невозможно, из-за чего результаты сканирования быстро устаревают или становятся недоступными. Harbor поддерживает загрузку базы из заранее подготовленного образа — в этом руководстве показано, как собрать такой образ и указать Harbor на него.
Содержание
Предварительные требованияШаг 1 — Сборка офлайн-образа базыШаг 2 — Включение офлайн-сканирования в Harbor CRШаг 3 — Проверка загрузки базыКак поддерживать базу в актуальном состоянииПримечанияПредварительные требования
- Запущенный экземпляр Harbor, управляемый этим оператором.
- Машина с доступом в интернет для сборки образа базы.
- Приватный контейнерный реестр, доступный из кластера Harbor, с учетными данными для push-операций с образами.
- Доступ на редактирование Harbor CR (
harbors.operator.alaudadevops.io).
Шаг 1 — Сборка офлайн-образа базы
На машине с доступом в интернет создайте файл Dockerfile со следующим содержимым. Замените <TRIVY_VERSION> на последнюю доступную на момент сборки версию Trivy.
Соберите образ и отправьте его в приватный реестр:
Итоговый образ должен содержать /trivy-offline.db.tgz в корне — init-контейнер Harbor ожидает именно этот путь.
Шаг 2 — Включение офлайн-сканирования в Harbor CR
Отредактируйте Harbor CR и установите trivy.offlineScan в значение true, затем укажите global.images.trivyOfflineDB на образ, собранный на шаге 1:
Если init-контейнер офлайн-базы при извлечении trivy-offline.db.tgz исчерпывает память, можно увеличить ресурсы только для init-контейнера, не повышая постоянные ресурсы основного контейнера Trivy:
Справка по полям:
Примените изменения и дождитесь обновления Pod Trivy.
Шаг 3 — Проверка загрузки базы
Убедитесь, что init-контейнер завершился успешно и что Trivy подхватил новую базу:
Запустите сканирование любого образа в пользовательском интерфейсе Harbor и убедитесь, что уязвимости отображаются ожидаемым образом.
Как поддерживать базу в актуальном состоянии
Поскольку база уязвимостей часто меняется, регулярно пересобирайте и публикуйте новый образ, чтобы результаты сканирования не устаревали. Хорошим вариантом является запланированная задача CI, которая выполняет сборку из шага 1 и обновляет значение tag в Harbor CR.
Примечания
- ARM / multi-arch. Если кластер работает не на архитектуре amd64, соберите образ
trivyOfflineDBкак multi-arch или соберите его для архитектуры узлов, на которых работает Pod Trivy. - Получение образа. Убедитесь, что кластер Harbor может загружать образы из вашего приватного реестра. Если требуется аутентификация, настройте image pull secret в пространстве имен Harbor.