← Back to notes

SBOM в production: CycloneDX,
SPDX и контроль поставки


Теория

Что такое SBOM

SBOM (Software Bill of Materials) — машинно-читаемый инвентарь компонентов ПО: пакеты, версии, hashes, поставщики и dependency-связи. NTIA «Minimum Elements for an SBOM» (July 2021) задаёт минимум: supplier, component name, version, unique identifier, dependency relationship, SBOM author, timestamp.

Применение:

  • vulnerability scanning (привязка CVE к component+version);
  • license compliance;
  • расследование supply-chain инцидентов.

CycloneDX и SPDX

  • CycloneDX (OWASP/Ecma): актуальная версия 1.7, опубликована как ECMA-424 2nd edition. Поддерживает software, services, vulnerabilities/VEX, cryptography, ML-BOM, SaaSBOM; основные сериализации — JSON и XML.
  • SPDX (Linux Foundation): актуальная спецификация — 3.0.1; SPDX 2.2.1 стандартизован как ISO/IEC 5962:2021, а ISO-версия SPDX 3.0 находится в процессе стандартизации. Сильная сторона — модель лицензий (SPDX License List) и профили SPDX 3.x.

Оба формата поддерживаются основными генераторами (syft, trivy, cdxgen) и сканерами (grype, trivy, dependency-track).


Что нужно уметь объяснить

Почему SBOM не заменяет сканирование?

SBOM — инвентарь. Сканер сопоставляет компоненты со списком уязвимостей (NVD, OSV, GHSA). Без сканера SBOM ничего не блокирует.

Что даёт максимальный эффект?

Привязка SBOM к digest артефакта (sha256:), подпись SBOM как in-toto attestation и policy-проверка перед deploy.

Когда SBOM устаревает?

При любом изменении артефакта. Генерация — на каждый build.


Практика

1. Генерация SBOM

# CycloneDX из контейнера
syft registry.example.com/app:1.0.0 -o cyclonedx-json > sbom.cdx.json

# SPDX
syft registry.example.com/app:1.0.0 -o spdx-json > sbom.spdx.json

2. SBOM как attestation (cosign)

cosign attest --yes \
  --predicate sbom.cdx.json \
  --type cyclonedx \
  registry.example.com/app:1.0.0

3. Сканирование по SBOM

grype sbom:./sbom.cdx.json --fail-on critical

4. Policy gate

  • блок при critical CVE без approved exception (VEX);
  • блок при отсутствии SBOM/подписи на артефакте;
  • traceability: bom-ref ↔ image digest.

Ссылки

SBOM в production: CycloneDX, SPDX и контроль поставки | Aleksandr Suprun