Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
GUAC
Для чего
GUAC (Graph for Understanding Artifact Composition) — не генератор, а агрегатор: он поглощает множество SBOM, provenance-свидетельств (SLSA/in-toto), VEX и advisory из разных источников и сшивает их в единый граф знаний об артефактах. Отвечает на вопросы уровня портфеля, которые отдельный SBOM не закрывает: «где во всех наших образах используется эта уязвимая версия библиотеки» и «что зависит от данного компонента».
Как применяют
GUAC поднимается как сервис (GraphQL API + хранилище), в него загружают документы, а запросы идут к графу:
guacone collect files ./sboms/ # загрузка SBOM/attestations в граф
# далее запрос к GraphQL API, например, поиск всех артефактов с pkg:npm/log4j-...
Внутри GUAC нормализует разные форматы к узлам «пакет», «артефакт», «источник», «свидетельство» и строит рёбра между ними. Это позволяет за один запрос пройтись по всему портфелю, а не открывать SBOM по одному.
Обратные запросы по всему парку Сила GUAC — не в одном SBOM, а в графе по всему портфелю. Он отвечает на «кто зависит от X» и «где используется уязвимая версия» одним запросом, не открывая документы по одному. Это уровень управления парком артефактов.
Сильные стороны
- Сводит разрозненные SBOM/VEX/provenance в единый граф — портфельная, а не пофайловая видимость.
- Отвечает на обратные запросы «кто зависит от X» и «где используется уязвимый компонент» по всему парку артефактов.
- Format-agnostic на входе: SPDX, CycloneDX, in-toto attestations.
- Масштабируется под организацию с десятками-сотнями SBOM.
Ограничения
Граф не лучше своих источников GUAC агрегирует, но не чинит данные: неполные или неточные SBOM на входе дают неполный граф, а его полнота равна полноте и свежести загруженных документов. Плюс это инфраструктура (сервис + БД) с собственной стоимостью сопровождения.
- Сам SBOM не генерирует и качество входных данных не улучшает: «мусор на входе — мусор в графе».
- Это инфраструктура (сервис + БД) с нетривиальным развёртыванием и сопровождением.
- Полнота ответов ограничена полнотой и свежестью загруженных документов.
Offline / on-premise
Разворачивается полностью on-premise: сервис, хранилище и API живут внутри закрытого контура Организации, документы загружаются локально. Внешние коннекторы (подтягивание advisory/OSV) опциональны и в изолированном контуре заменяются загрузкой из внутренних зеркал.
Связанные темы
М08 Защита цепочки поставки и OSA · М10 Много исполнителей · П08. Dependency-Track как портфель SBOM · П28. Поставка от нескольких исполнителей · bomctl · OWASP Dependency-Track · OSV.dev