Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
Практическая работа: одна строка матрицы end-to-end
Цель
Собрать и проверить одну полную строку доказательной матрицы требование → практика → артефакт (evidence) для конкретного релиза так, чтобы строка прошла аудит: была привязана к пункту требования, подтверждена конформным артефактом, имела владельца, место хранения и была воспроизводима.
Что понадобится
- один релиз (commit/tag) учебного проекта;
- доступ к артефактам этого релиза: SBOM (CycloneDX 1.6 JSON) и хотя бы один VEX/VDR;
- заготовка Матрица evidence для аудита.
Шаги
Шаг 1. Выбрать требование
Возьмите одно из пяти требований КАПО (ГОСТ Р 56939-2024 / Проект ГОСТ Р КАПО). Рекомендуется «Формирование перечня зависимостей (ППК/SBOM)» — для него evidence машинный и проверяемый. Запишите формулировку требования дословно.
Шаг 2. Привязать практику и SSDF
Найдите практику курса, которая реализует требование, и соответствующую практику SSDF. Для ППК это П03 (или П04 для C/C++) и SSDF PS.3.2. Зафиксируйте: репозиторий, commit/tag, инструмент, версию инструмента, дату.
Шаг 3. Получить артефакт и проверить конформность по BSI
Возьмите CycloneDX 1.6 JSON релиза и проверьте минимальные поля BSI TR-03183-2 (BSI TR-03183-2 v2.1.0):
# поля самого SBOM (§5.2.1): creator и timestamp
jq '.metadata.timestamp, .metadata.authors, .metadata.tools' sbom.cdx.json
# координаты компонентов (§5.2.2): имя, версия, purl
jq -r '.components[] | [.name, .version, .purl] | @tsv' sbom.cdx.json | head
# версия спецификации должна быть >= 1.6
jq '.specVersion' sbom.cdx.json
Убедитесь, что в SBOM нет блока уязвимостей (BSI §8.1.14 — это MUST NOT):
jq 'has("vulnerabilities")' sbom.cdx.json # ожидаем false
Шаг 4. Привязать динамическую часть отдельно
Сведения об уязвимостях — отдельный артефакт. Возьмите VEX/VDR (П09, П35) и проверьте, что вердикт ссылается на конкретную версию компонента из SBOM шага 3.
Шаг 5. Заполнить строку матрицы
В шаблоне заполните: требование (дословно) · практика (Пxx + SSDF ID) · норма BSI · артефакт · владелец (роль, не ФИО) · место хранения · дата · версия инструмента.
Шаг 6. Проверить воспроизводимость
Опишите, как получить тот же артефакт на следующем релизе одной командой/процедурой. Если воспроизвести нельзя — строка не зачтена.
Что вы должны увидеть
specVersion="1.6"(или выше), непустыеtimestampиtools/authors;- по компонентам — заполненные
name,version,purl; has("vulnerabilities")→false;- VEX-вердикт, ссылающийся на purl/версию из SBOM;
- одну заполненную строку матрицы со всеми атрибутами трассировки.
Если не получилось
timestamp/toolsпустые → инструмент сгенерировал неконформный SBOM; включите запись метаданных или поднимите версию генератора.purlотсутствует у большинства компонентов → анализатор не идентифицировал координаты; см. П24.has("vulnerabilities")→true→ файл смешивает статику и динамику; уязвимости вынести в отдельный VEX/CSAF.- VEX ссылается на имя без версии → вердикт не трассируем до компонента, переделать.
Критерий зачёта
Преподавателю предъявляется одна строка матрицы, для которой выполнены все условия: привязка к пункту требования, конформный артефакт (поля BSI §5.2, без vuln-данных), отдельный VEX/VDR с привязкой к версии, владелец, место хранения, дата/версия инструмента и описанная процедура воспроизведения на следующем релизе.
Нормативная связка
ГОСТ Р 56939-2024 · Проект ГОСТ Р КАПО · NIST SP 800-218 SSDF · BSI TR-03183-2 v2.1.0 · Матрица evidence для аудита · Журналирование и audit trail