Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

Практическая работа: полнота SBOM и разделение слоёв

Цель

На реальном CycloneDX JSON оценить присутствие минимальных элементов (NTIA/CISA), посчитать «слепые» компоненты и развести найденные проблемы по слоям: дефект факта (SBOM), интерпретация, решение. Проверяемый результат — заполненная таблица дефектов и вывод о готовности артефакта.

Входные данные (зафиксировать до начала)

Запишите: репозиторий, commit/tag, инструмент и его версию, дату генерации SBOM, путь к файлу (bom.json). Без этих координат результат не воспроизводим.

Шаги

  1. Метаданные артефакта. Проверьте, кто и чем сгенерировал SBOM: bash jq '.metadata | {timestamp, tools: .tools, authors: .authors, component: .component.name}' bom.json
  2. Общий объём. Сколько всего компонентов: bash jq '.components | length' bom.json
  3. Компоненты без идентификатора (не сопоставятся с CVE автоматически): bash jq '[.components[] | select(.purl == null and .cpe == null)] | length' bom.json jq '.components[] | select(.purl == null) | .name' bom.json
  4. Компоненты без версии: bash jq '.components[] | select(.version == null or .version == "" or .version == "unknown") | {name, version}' bom.json
  5. Граф зависимостей. Есть ли связи (или только плоский список): bash jq '.dependencies | length' bom.json
  6. Классификация. Для каждой находки определите слой: дефект факта (поле SBOM), интерпретация (нужно сопоставление с базой) или решение (вердикт человека). Отметьте, что из этого — дефект инструмента, а что — дефект процесса поставки (например, соисполнитель прислал SBOM без supplier).

Что вы должны увидеть

Находка Поле Слой (факт/интерпретация/решение) Источник (инструмент/процесс)
37 компонентов без purl components[].purl факт процесс (генерация на этапе after-build)
версия unknown у внутр. форка components[].version факт процесс
«нет CVE → значит безопасно» — ошибка интерпретации —

Если не получилось

Критерий зачёта

Показать преподавателю: (1) число компонентов без purl/версии; (2) состояние metadata; (3) таблицу с минимум пятью находками, каждая отнесена к слою и к источнику; (4) одно предложение — какой gate можно безопасно включить в CI и какой порог полноты в нём задать.

Нормативная связка

NTIA Minimum Elements for SBOM и CISA Minimum Elements for SBOM (состав полей), BSI TR-03183-2 v2.1.0 (качество), ГОСТ Р 56939-2024 (управляемость). Закрепление: Минимальный набор полей ППК, Чек-лист качества CycloneDX, Соглашение о качестве данных SBOM.

Основа практики: П02. Чтение CycloneDX JSON руками.