Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
cdxgen
Для чего
cdxgen — генератор CycloneDX-SBOM, ориентированный на исходный код и манифесты сборки. Он разбирает файлы зависимостей десятков языков (package-lock.json, requirements.txt, pom.xml, go.mod, Cargo.toml, conan.lock, CMake-кэш) и строит граф зависимостей с прямыми и транзитивными связями. Для C/C++ это один из немногих генераторов, который пытается восстановить состав из артефактов сборки, а не только из пакетного менеджера.
Как применяют
Запуск по каталогу проекта с явным указанием типа и evidence-режимом:
cdxgen -t c -o bom.cdx.json --spec-version 1.6 .
cdxgen -t python --required-only -o bom.cdx.json .
В выводе компоненты несут bom-ref, PURL и блок evidence с указанием, из какого файла извлечён факт. Для C/C++ полезен флаг --deep и переменная CDXGEN_DEBUG, чтобы видеть, какие манифесты и заголовки распознаны.
Блок evidence — главный аргумент доверия В отличие от плоского списка, cdxgen помечает каждый компонент полем
evidenceс указанием файла-источника. На приёмке SBOM это позволяет отличить факт («извлечено изconan.lock») от догадки, а не верить генератору на слово.
Сильные стороны
- Самое широкое покрытие языков среди генераторов, включая «трудные» C/C++, Conan и системные пакеты.
- Строит именно граф зависимостей (
dependencies), а не плоский список — видны прямые и транзитивные рёбра. - Блок
evidenceповышает доверие к SBOM: видно происхождение каждого компонента. - Гибкая настройка глубины и фильтров (
--required-only,--deep, типы проектов).
Ограничения
- Для C/C++ без чёткого пакетного менеджера результат сильно зависит от наличия Conan/vcpkg-манифестов; вендоренные исходники легко пропустить.
- Часть продвинутых анализов (atom/SAST-slicing) тянет дополнительные среды выполнения и память.
- Возможны ложные включения тулчейн-зависимостей, если не отфильтровать dev-ветку графа.
Offline / on-premise
Утечка в закрытом контуре По умолчанию обогащение лицензий ходит в публичные реестры. В изолированном контуре это и недопустимая утечка, и источник «зависающих» сборок. Перед запуском выставляйте
FETCH_LICENSE=falseи направляйте менеджеры на внутренние зеркала.
Базовая генерация SBOM работает офлайн. Опциональное обогащение (запросы к публичным реестрам для метаданных и лицензий) требует сети — в закрытом контуре его отключают (FETCH_LICENSE=false) и поднимают локальное зеркало менеджеров. Контейнерный образ cdxgen разворачивается во внутреннем реестре.
Связанные темы
М05 Инструменты генерации SBOM · М09 C/C++ legacy · П04. Генерация SBOM через cdxgen для C C++ · П20. CMake dependency graph · П21. Conan graph и package identity · Conan · CycloneDX · Package URL