Sign inSign up

geminishkvdev/cdxgen-distroless

By geminishkvdev

•Updated 7 days ago

CycloneDX cdxgen on distroless, with uv for Python projects without a lock file

Image
0

762

geminishkvdev/cdxgen-distroless repository overview

⁠cdxgen-distroless

Образ генератора SBOM cdxgen⁠ на distroless: SBOM проекта без сети и без установки зависимостей, без оболочки внутри и от непривилегированного пользователя.

Исходники, документация и выпуски: github.com/geminishkv/cdxgen-distroless⁠.

⁠Теги

ТегЧто это
12.9.0, latestтекущий выпуск: cdxgen 12.9.0, linux/amd64 и linux/arm64

Версия образа равна версии cdxgen внутри. Тег может быть пересобран при обновлении базовых образов, поэтому в пайплайнах стоит закреплять digest текущего выпуска:

docker pull docker.io/geminishkvdev/cdxgen-distroless@sha256:a0ea880d18e0ff56cd188a10291f3eb6c8425d62bb1c4eaa49a65c3969122065

Тот же образ опубликован в GHCR: ghcr.io/geminishkv/cdxgen-distroless.

⁠Запуск

SBOM проекта с lock-файлом: каталог монтируется только на чтение, сеть контейнеру не нужна.

IMAGE=docker.io/geminishkvdev/cdxgen-distroless@sha256:a0ea880d18e0ff56cd188a10291f3eb6c8425d62bb1c4eaa49a65c3969122065

docker create --name cdxgen-sbom --network none \
  -v "$PWD":/app:ro "$IMAGE" \
  -t js --spec-version 1.6 --no-install-deps -o /tmp/bom.json /app
docker start -a cdxgen-sbom
docker cp cdxgen-sbom:/tmp/bom.json bom.json
docker rm cdxgen-sbom

Для Python-проекта без lock-файла зависимости сначала разрешает uv pip compile из того же образа, без установки и сборки пакетов. Этот сценарий, параметры и ограничения описаны в README⁠.

⁠Состав

КомпонентВерсияИсточник
cdxgen12.9.0npm-пакет @cyclonedx/cdxgen, зависимости по package-lock.json
Node.js24gcr.io/distroless/nodejs24-debian13:nonroot@sha256:b8cec4b2f2126ff7bd034ec9ac207ffb3272667dfdc48376e3b035d3270549ba
uv0.13.6ghcr.io/astral-sh/uv:0.13.6@sha256:af22a52f5eafef3d78e551599d405c02df61919d18028f0cea8eda93bc9986d0
Python, только stdlib3.12docker.io/library/python:3.12-slim@sha256:e695ab189fa2d082b1c61c69a6b888a5adeca61ceeccad107b1ed2a125721a9e

Пользователь 65532:65532. Оболочки, apt, npm и pip в образе нет, LICENSE и NOTICE лежат в /licenses.

⁠Проверка подписи и происхождения

Образ подписан cosign keyless, сертификат выписан на workflow release.yml репозитория; в GHCR дополнительно лежит аттестация происхождения GitHub.

cosign verify ghcr.io/geminishkv/cdxgen-distroless@sha256:a0ea880d18e0ff56cd188a10291f3eb6c8425d62bb1c4eaa49a65c3969122065 \
  --certificate-identity-regexp '^https://github.com/geminishkv/cdxgen-distroless/\.github/workflows/release\.yml@refs/' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com
gh attestation verify oci://ghcr.io/geminishkv/cdxgen-distroless@sha256:a0ea880d18e0ff56cd188a10291f3eb6c8425d62bb1c4eaa49a65c3969122065 --owner geminishkv

Для проверки нужен cosign 3.x; gh attestation verify требует выполненного gh auth login. Образ в Docker Hub подписан так же: в cosign verify меняется только адрес образа.

⁠SBOM и аттестации

SBOM образа в формате SPDX и provenance mode=max хранятся в реестре аттестациями BuildKit рядом с образом:

docker buildx imagetools inspect docker.io/geminishkvdev/cdxgen-distroless@sha256:a0ea880d18e0ff56cd188a10291f3eb6c8425d62bb1c4eaa49a65c3969122065 --format '{{ json .SBOM }}'
docker buildx imagetools inspect docker.io/geminishkvdev/cdxgen-distroless@sha256:a0ea880d18e0ff56cd188a10291f3eb6c8425d62bb1c4eaa49a65c3969122065 --format '{{ json .Provenance }}'

Те же SBOM файлами, по одному на платформу, приложены к выпуску 12.9.0⁠.

⁠Проверки перед выпуском

Образ опубликован после того, как пайплайн безопасности⁠ прошёл целиком: gitleaks по истории git, hadolint и Trivy по Dockerfile, Trivy по образу с гейтом на CRITICAL и HIGH с доступным исправлением. Сканировалась сборка linux/amd64 из того же Dockerfile и тех же закреплённых входов; опубликованные образы собраны заново.

⁠Архитектура

Сборка образа

Пайплайн безопасности

CI и релиз

⁠Лицензия

Apache-2.0⁠, сторонние компоненты перечислены в NOTICE⁠. Как сообщить об уязвимости, описано в SECURITY.md⁠.

Tag summary

Content type

Image

Digest

sha256:a0ea880d1…

Size

85.5 MB

Last updated

7 days ago

docker pull geminishkvdev/cdxgen-distroless