Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
protobom
Для чего
protobom — не генератор, а нейтральная модель данных SBOM и библиотека к ней. Это Protocol Buffers-представление состава, в которое читаются и SPDX, и CycloneDX, после чего из той же модели можно записать любой из форматов. По сути это «общий знаменатель», на котором строят конвертацию между форматами и инструменты, не желающие хардкодить парсер под каждую версию SPDX/CycloneDX.
Это модель и библиотека, а не CLI protobom не сканирует артефакты и не имеет «команды для пользователя». Его ценность раскрывается внутри другого инструмента (например, bomctl), который читает SPDX/CycloneDX в единую модель и пишет обратно нужный формат.
Как применяют
Используется как Go-библиотека внутри других инструментов: документ читается в единый объект Document, а затем сериализуется в нужный формат.
doc, _ := reader.New().ParseFile("sbom.spdx.json") // SPDX на входе
writer.New().WriteFile(doc, "sbom.cdx.json") // CycloneDX на выходе
Внутренняя модель описана в .proto и хранит узлы (Node) состава, рёбра зависимостей (Edge) и метаданные документа независимо от исходного формата.
Сильные стороны
- Единая модель снимает комбинаторику «каждый формат в каждый» — парсер и сериализатор пишутся один раз.
- Protobuf-схема даёт строгий, версионируемый контракт данных SBOM.
- Лежит в основе экосистемы инструментов работы с SBOM (например, операций объединения и трансляции).
- Сохраняет граф зависимостей, а не только плоский список.
Ограничения
Конвертация теряет детали Перевод между SPDX и CycloneDX через общую модель — lossy: формат-специфичные поля упрощаются или исчезают. Сконвертированный SBOM нельзя считать дословно равным исходному, особенно для нормативной трассировки.
- Это библиотека/модель, а не готовый CLI для конечного пользователя — самостоятельно образ не сканирует.
- При трансляции между форматами часть формат-специфичных полей неизбежно теряется или упрощается (lossy-конвертация).
- Требует кода-обвязки: ценность раскрывается внутри другого инструмента.
Offline / on-premise
Полностью офлайн: это локальная библиотека преобразования данных, сеть не нужна по определению. В закрытом контуре используется как зависимость внутренних утилит конвертации SBOM.
Связанные темы
М03 Форматы SBOM · М05 Инструменты генерации SBOM · П02. Чтение CycloneDX JSON руками · CycloneDX · SPDX · bomctl