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

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин 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:
  - 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"

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

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

Покажите преподавателю заполненную карточку для одной AI-поставки по всем семи кластерам и устно объясните на 3 примерах, какие именно элементы AI-SBOM добавляет поверх обычного SBOM (provenance датасета, лицензия весов, training properties, data flow с внешними API, sensitivity данных). Каждый unknown должен быть обоснован.

SBOM for AI сам по себе не повышает безопасность Руководство G7 подчёркивает: документ полезен только в связке с инструментами — сканированием уязвимостей, бюллетенями и triage. Заполненная карточка без процесса реагирования — это инвентарь, а не защита. Свяжите vulnerability_referencing с реальным triage-процессом.

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