Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
П39. SBOM for AI: minimum elements
Цель
Взять одну реальную AI-поставку (например, локально развёрнутую открытую LLM в составе сервиса) и заполнить семь кластеров минимальных элементов SBOM for AI из совместного руководства G7 (2026). Проверяемый результат — заполненная карточка, где для каждого обязательного элемента указано либо значение, либо явное unknown с причиной. Главный навык — отличить то, что добавляет AI-SBOM, от обычного SBOM приложения.
AI-система — это тоже ПО, но обычного SBOM мало Руководство G7 прямо говорит: SBOM for AI дополняет, а не заменяет классический SBOM. Дерево
package-lock.jsonне описывает происхождение обучающего датасета, лицензию весов, lineage дистилляции и контекстную длину модели. Семь кластеров закрывают именно эти разрывы. См. G7 SBOM for AI Minimum Elements.
Команда или действие
Это аналитическая практика без сканера. Заполните карточку по семи кластерам для выбранной модели/сервиса. Минимальный машиночитаемый каркас (YAML) — заполнять по элементам руководства:
metadata: # информация о самом SBOM, не о компонентах
sbom_author: "Организация, роль (не ФИО)"
sbom_version: "1.0.0" # G7: major = 1 для этих min-элементов
data_format: "CycloneDX"
data_format_version: "1.6"
author_signature: "cosign / unknown"
tool_name: "..."
tool_version: "..."
generation_context: "after build" # before build | build | after build
timestamp: "2026-06-17T12:00:00+03:00" # RFC 9557
dependency_relationships: "includes / derived-from"
system_level_properties:
name: "..."
components: ["LLM", "vector-db", "orchestrator"]
producer: "..."
version: "..."
data_flow: "источник -> назначение, внешние API, web grounding"
data_usage: "ссылка на док: логируется ли ввод, дообучается ли модель"
io_properties: "модальность (text/audio/image), токенизатор"
intended_application_area: "напр. финансы / healthcare"
models:
- name: "..."
identifier: "pkg:... / CPE / SWHID / commit-hash"
version: "..."
producer: "кто делал pre-/post-/fine-tuning"
hash_value: "..."
hash_algorithm: "SHA-256" # имя по IANA, алгоритм по NIST
properties: "архитектура (decoder-only transformer), число параметров"
training_properties: "ссылка на model card: SFT/RLHF/DPO..."
license: "open weight / open data — ссылка на лицензию"
external_references: "model card, research paper"
datasets:
- name: "..."
description: "pre-train / fine-tune / eval; private|public"
content: "тип данных, формат"
identifier: "URL/URI"
hash: "..."
provenance: "origin, метод сбора (web crawl/контракт), labeling"
sensitivity: "PII / copyright / financial / public"
dependency_relationship: "derived-from <dataset>"
license: "ссылка на лицензию датасета"
infrastructure:
software: ["runtime", "frameworks", "package managers", "firmware"]
hardware: "ссылка на HBOM (если есть)"
security_properties:
controls: ["access control", "I/O filters", "prompt-injection controls"]
compliance: "сертификации / стандарты"
policy_information: "ссылка на security.txt"
vulnerability_referencing: "ссылка на БД уязвимостей модели/системы"
kpi:
security_metrics: "robustness benchmark"
operational_performance: "uptime, latency, throughput"
Что вы должны увидеть
Заполненная карточка, где нет молчаливых пропусков: каждый обязательный элемент либо имеет значение, либо помечен unknown с однострочной причиной (руководство G7 прямо требует помечать неизвестное, а не опускать). Контрольная характеристика хорошей работы:
- В кластере
modelsестьhash_value+hash_algorithm(имя алгоритма по IANA Hash Function Textual Names, сам алгоритм одобрен NIST), либо явноеunknown: нет доступа к файлу весов. - Разведены три разные лицензии:
models[].license(веса),datasets[].license(данные) и лицензии runtime-компонентов вinfrastructure.software— это типичная ловушка, где всё сваливают в одну строку. system_level_properties.data_flowописывает внешние API и web grounding, а не только внутренние вызовы.- В
metadataзаполненыgeneration_contextиdependency_relationships— поля, которых нет в «обычном» SBOM.
Минимальная заполненная модель
models:
- name: "qwen2.5-7b-instruct"
identifier: "pkg:huggingface/Qwen/Qwen2.5-7B-Instruct"
version: "snapshot 2026-02"
producer: "Qwen team (pre-training); Организация (fine-tuning)"
hash_value: "unknown: веса подгружаются рантаймом, локального файла нет"
hash_algorithm: "SHA-256"
properties: "decoder-only transformer, ~7.6B параметров, ctx 32k"
training_properties: "model card: SFT + DPO"
license: "Apache-2.0 (open weight) — ссылка на LICENSE"
external_references: "model card на Hugging Face"
Если не получилось
- Карточка получилась как обычный SBOM приложения. Признак — заполнены только
infrastructure.softwareи зависимости, аmodels/datasets/system_level_propertiesпустые. Это и есть тот разрыв, который закрывает практика: вернитесь и заполните минимум по моделям и датасетам. - Везде проставлено
unknownбез причины.unknownдопустим, но руководство требует указывать, что значение неизвестно, и почему. «Молчаливый пропуск» элемента и осознанныйunknown— разные вещи на приёмке. - Слиты разные лицензии. Если
licenseодна на всю систему — почти наверняка ошибка: лицензия весов, лицензия датасета и лицензии библиотек обычно разные и имеют разные ограничения на использование. - Перепутаны
metadata.producerиsystem.producer.SBOM author— кто сгенерировал документ;producer(system/model) — кто создал саму систему/модель. Они совпадают, только если вы и автор системы — одно лицо.
Критерий зачёта
Покажите преподавателю заполненную карточку для одной AI-поставки по всем семи кластерам и устно объясните на 3 примерах, какие именно элементы AI-SBOM добавляет поверх обычного SBOM (provenance датасета, лицензия весов, training properties, data flow с внешними API, sensitivity данных). Каждый unknown должен быть обоснован.
SBOM for AI сам по себе не повышает безопасность Руководство G7 подчёркивает: документ полезен только в связке с инструментами — сканированием уязвимостей, бюллетенями и triage. Заполненная карточка без процесса реагирования — это инвентарь, а не защита. Свяжите
vulnerability_referencingс реальным triage-процессом.
Нормативная связка
- Модуль М16 — AI-поставка и семь кластеров.
- Смежные практики: П38. Честный SBOM контейнерного образа, П36. Итоговый мини-проект.
- Шаблон: Чек-лист SBOM for AI.
- Нормативка: G7 SBOM for AI Minimum Elements (2026), CycloneDX / SPDX как форматы-носители, ГОСТ Р 56939-2024.