🛠 SBOM: легковесная генерация cdxgen
Ранее, мы с тобой посмотрели тут, что такое Software Bill of Materials SBOM. Мы разобрали как он выглядит, зачем и почему используется. Давай теперь посмотрим на сам инструмент и на то как его использовать, но он с особенностями.
Инструмент:
cdxgen - CLI инструмент для автоматизации SBOM в формате CycloneDX. Основные функции как анализ метаданных и лицензий, чтение manifest файлов. Из важного у него только генерация одного формата. Тип лицензии: Apache License 2.0.
Конвертация SBOM в формат, отличный от CycloneDX потребует конвертор. Зависимости, собранные вручную либо перепакованные могут не определяться или частично. Совместим с Dependency-Track для управления SBOM, включая Trivy, Grype.
Поддерживает следующие языки и форматы пакетов. Официальная документация и репозиторий. Может подписывать их.
Применение:
sudo npm install -g @cyclonedx/cdxgen
cd <Path to source code>
docker run --rm -e CDXGEN_DEBUG_MODE=debug -v /tmp:/tmp -v $(pwd):/app:rw -t ghcr.io/cyclonedx/cdxgen:master -r /app -o /app/bom.json # либо -p для вывода в консоли/ терминале
cdxgen -t java -o bom.json --server-url https://deptrack.server.com --api-key "token" --project-group ... # пример отправки на Dependency-Track
Флаги:
cdxgen [-t], [-o], [-p], [-r], [-h], [-v]
-t, --type # если не указывать этот параметр, то соберет вообще все зависимости, которые сможет
--exclude-type # убрать из обработки
-o, --output # сохранение в формате - XML, JSON
-p, --print # вывод "дерева SBOM" в виде таблицы
-r, --recurse // кекурсивное сканирование по директориям
--no-recursive # базово по файлам в корневой директории
--deep
--fail-on-error # при сбое сбора одного из типов компонент высвечивает earning
--technique # по умолчанию стоит auto режим, но можно задать "source-code-analysis", "binary-analysis", "manifest-analysis", "hash-сomparison", "instrumentation", "filename"
--required-only # для исключений/ ограничений
Поддерживаемые BOM:
• Cryptography CBOM - Java, Python
• Operations OBOM - Linux container images
• Software-as-a-Service SaaSBOM - Java, Python, JavaScript, TypeScript, PHP
• Attestations (CDXA)
• Vulnerability Disclosure Report (VDR) - OWASP depscan VDR
Pipeline:
sbom:
image: node:20-alpine
stage: test
script:
- npm i -g @cyclonedx/cdxgen
- cdxgen -r . -o sbom.json
artifacts:
paths: [sbom.json]
Итого: инструмент достаточно прост, поможет собирать зависимости и контролировать их, например полезно для сверки используемых компонент на проекте и при merge/ pull requeste от contributor. И да, конечно же, любимая история прописания пути для registry и использования только безопасных зависимостей.
#toolchain #sbom
