Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
План занятия (90 минут)
Цели занятия
- Слушатель отличает CycloneDX, SPDX и SWID по структуре файла и по назначению.
- Слушатель знает, что по BSI TR-03183-2 v2.1.0 форматом SBOM признаются только CycloneDX ≥ 1.6 и SPDX ≥ 3.0.1, а SWID — лишь идентификатор компонента.
- Слушатель умеет найти обязательные по BSI (раздел 5.2.2) поля компонента в обоих форматах и назвать, что теряется при конвертации.
- Слушатель связывает три категории лицензий BSI (original / distribution / effective) с полями форматов.
Материалы
- Стенд из П01. Стенд WSL2 Docker и базовая гигиена (CLI,
jq). - Два готовых SBOM одного артефакта: CycloneDX 1.6 JSON и SPDX 3.0.1 JSON.
- Конспект М03, Чек-лист качества CycloneDX, Чек-лист качества SPDX.
- Выдержка обязательных полей из BSI TR-03183-2 v2.1.0 (раздел 5.2).
Тайминг и ход занятия
| Мин | Блок | Формат | Содержание |
|---|---|---|---|
| 0–8 | Вводный кейс | разбор | «Заказчик прислал SWID-теги и назвал это SBOM» — почему это не проходит по BSI. |
| 8–25 | Теория: назначение форматов | лекция | CycloneDX (безопасность/VEX) vs SPDX (лицензии/граф provenance) vs SWID (инвентаризация). Версии BSI: 1.6 / 3.0.1. |
| 25–40 | Модель данных | лекция + доска | component+type в CDX против графа Package/File+Relationship в SPDX; три категории лицензий; bsi:component:*. |
| 40–60 | Демо: один компонент в двух форматах | демонстрация | jq по CDX и SPDX: достаём creator, version, hash, licenses, purl/swid. Показ потерь при конвертации. |
| 60–82 | ПЗ в парах | практика | По ПЗ М03: проверить обязательные поля компонента (BSI 5.2.2), заполнить таблицу. |
| 82–90 | Рефлексия | обсуждение | Какой формат закрепить в Организации под какую задачу; что записать в Соглашение о качестве данных SBOM. |
Демонстрация (опорные команды)
# CycloneDX 1.6: спецверсия и обязательные поля компонента
jq '.specVersion' bom.cdx.json
jq '.components[0] | {name, version, purl, hashes, licenses}' bom.cdx.json
# SPDX 3.0.1: версия профиля и пакет
jq '.creationInfo.specVersion // ."@graph"[]?.type' bom.spdx.json
Контрольная точка
Слушатель устно отвечает: (1) является ли SWID форматом SBOM по BSI и почему; (2) какие минимальные версии CycloneDX и SPDX требует BSI; (3) одно поле компонента, которое нет нативно ни в одном формате и кодируется через bsi:component:*.