Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
Чек-лист качества CycloneDX
Назначение
Покомпонентная проверка качества SBOM в формате CycloneDX (ECMA-424 / JSON): валидность схемы, полнота координат purl, связность графа dependencies и корректность лицензионных выражений. Решает, можно ли доверять этому SBOM как машинному источнику фактов о составе поставки.
Когда применяется
После приёмки конверта (Чек-лист ZIP поставки), на этапе контроля качества данных перед загрузкой SBOM в портфель (см. П08. Dependency-Track как портфель SBOM). Применяется к каждому файлу bom.json поставки.
Контекст формата CycloneDX — компонентно-ориентированный формат: корень
bom, массивcomponents, графdependencies. Базовая работа с ним разобрана в П02. Чтение CycloneDX JSON руками; форматные детали — в CycloneDX ECMA-424.
Блок 1. Валидность документа
- [ ]
bomFormat=CycloneDX,specVersionуказан и поддерживается (1.4+). - [ ] Документ проходит валидацию по JSON-схеме соответствующей версии (без ошибок структуры).
- [ ]
serialNumberприсутствует и уникален (форматurn:uuid:...). - [ ]
versionдокумента задан;metadata.timestampкорректен.
Блок 2. Метаданные и subject
- [ ]
metadata.componentописывает анализируемый продукт (имя, версия, тип). - [ ]
metadata.toolsуказывает генератор и его версию (нужно для трассируемости evidence). - [ ] Указан
metadata.supplier/author(роль/организация-соисполнитель, без ФИО).
Блок 3. Координаты компонентов
- [ ] Каждый элемент
components[]имеетtype,name,version. - [ ] У каждого компонента есть
purl(или явно обоснованное отсутствие — попадает в unresolved). - [ ]
purlнормализованы: корректный тип, без «приватных» qualifiers, ломающих сопоставление (см. П24. PURL нормализация и private qualifiers). - [ ] Где применимо — присутствует
cpeилиexternalReferencesдля сопоставления с уязвимостями. - [ ]
bom-refуникальны в пределах документа (нет дубликатов идентификаторов). - [ ] Присутствуют
hashesкомпонентов хотя бы для бинарных артефактов.
Блок 4. Граф зависимостей
- [ ] Секция
dependenciesприсутствует и непустая. - [ ] Все
refиdependsOnуказывают на существующиеbom-ref(нет «висячих» ссылок). - [ ] Граф связен: нет компонентов, не достижимых от корня (или они объяснены).
- [ ] Для C/C++ граф согласован с build evidence поставки (см. П21. Conan graph и package identity).
Блок 5. Лицензии
- [ ] У компонентов заполнено
licenses(idSPDX илиexpression). - [ ] Лицензионные выражения синтаксически валидны (SPDX expression).
- [ ] Доля компонентов без лицензии измерена и укладывается в порог соглашения о качестве.
Метрики покрытия (фиксируются в отчёте)
| Метрика | Порог приёмки | Факт |
|---|---|---|
| purl coverage | ≥ 95 % компонентов | |
| license coverage | ≥ 90 % компонентов | |
| dependency graph | связен, без висячих ref | |
| unresolved | вынесены в реестр |
Связь с курсом
- Модуль: М03. Форматы SBOM · М04. Идентификаторы
- Практики: П02. Чтение CycloneDX JSON руками · П24. PURL нормализация и private qualifiers · П34. SBOM quality gate
- Нормативка: CycloneDX ECMA-424 · CISA Minimum Elements for SBOM · OWASP SCVS
- Связанные шаблоны: Соглашение о качестве данных SBOM · Чек-лист качества SPDX · Реестр unresolved libraries