В последний месяц разработчики, использующие Trivy для сканирования контейнеров, столкнулись с серьёзной проблемой: при попытке загрузить базу данных уязвимостей из GitHub Container Registry (ghcr.io) возникает ошибка TOOMANYREQUESTS. Это связано с тем, что GitHub начал ограничивать количество подключений к своему реестру, что негативно сказывается на работе Trivy и создаёт дополнительные трудности для разработчиков.
https://habr.com/ru/companies/flant/news/854318/
В посте зря трагедию рисуют
На самом деле Trivy выкладывает ещё базы в
- https://hub.docker.com/r/aquasec/trivy-db/tags
- https://gallery.ecr.aws/aquasecurity/trivy-db
Это можно увидеть в их Actions
declare -A registries=(
["ghcr.io"]="${lowercase_repo}"
["public.ecr.aws"]="${lowercase_repo}"
["docker.io"]="${lowercase_repo}"
)
https://github.com/aquasecurity/trivy-db/blob/main/.github/workflows/cron.yml#L87C1-L92C1
Для того, что бы указать БД не по умолчанию используйте ключ
--db-repository.А ещё вот вам кусочек GitLab pipeline (написанный своими руками 🌝), которым можно перекладывать к себе в registry базу Trivy
variables:
TRIVY_DB_ARCHIVE_NAME: "db.tar.gz"
TRIVY_DB_EXTERNAL_TAG: "2"
TRIVY_DB_EXTERNAL_IMAGE: "ghcr.io/aquasecurity/trivy-db:${TRIVY_DB_EXTERNAL_TAG}"
TRIVY_DB_ARTIFACT_TYPE: "application/vnd.aquasec.trivy.config.v1+json"
TRIVY_DB_ARTIFACT_META: "application/vnd.aquasec.trivy.db.layer.v1.tar+gzip"
TRIVY_DB_INTERNAL_IMAGE: "${CI_REGISTRY}/path/trivy-db:latest"
pull-push-trivy-db:
image: ${CI_REGISTRY}/tools/oras:latest
stage: build
script:
- docker login --username "${CI_REGISTRY_USER}" --password "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
- /oras pull "${TRIVY_DB_EXTERNAL_IMAGE}"
- /oras push --artifact-type "${TRIVY_DB_ARTIFACT_TYPE}" "${TRIVY_DB_INTERNAL_IMAGE}" "${TRIVY_DB_ARCHIVE_NAME}:${TRIVY_DB_ARTIFACT_META}"
в дальнейшем тоже используйте ключик
--db-repository, который будет указывать на ваш реджистри.Если что, то посмотреть как с публикацией и управлением базами работает Trivy можно тут
https://github.com/aquasecurity/trivy-db/blob/main/.github/workflows/cron.yml#L81
А вообще, собирайте базы сами и держите их при себе 🌝