Доказательства и аудит

Подтвердите каждое решение. Воспроизведите это несколько месяцев спустя.

Капсулы решений запечатывают доказательства, чтобы аудиторы могли проверить любую версию — в автономном режиме, независимо, полностью идентично.

Взгляд аудитора: что вы получаете

Экспорт капсулы решения создаёт подписанный пакет с адресацией по содержимому и точными входами и выходами решения релиза.

  • Точный SBOM, использованный в сканировании
  • Замороженные снимки фидов уязвимостей (NVD, OSV, advisories поставщиков)
  • Доказательства достижимости (артефакты статических графов вызовов и runtime-трейсы)
  • Версия политики и lattice-правила для gate
  • Производное VEX-заявление с обоснованиями
  • DSSE-подписи, покрывающие содержимое капсулы

Источник: Документация по капсулам решений

Что такое пакет доказательств?

Содержимое

Каждая Капсула решения объединяет точный SBOM, замороженные фиды уязвимостей, графы достижимости, версию политики, производный VEX и метаданные одобрений.

Подписание

Подписи DSSE/in-toto делают пакеты защищёнными от подделки. Выберите криптографические профили FIPS-140-3, ГОСТ Р 34.10, SM2/SM3 или eIDAS.

Экспорт

Экспортируйте капсулы на любом этапе продвижения. Храните в Evidence Locker с семантикой WORM для сроков хранения по требованиям соответствия.

Воспроизведение

Перезапустите любое историческое решение с помощью stella replay. Одинаковые входные данные дают одинаковые результаты, офлайн или онлайн.

Пример структуры капсулы

Каждая капсула решения представляет собой автономный каталог с подписанными артефактами:

decision-capsule-20260126-prod-a1b2/
├── manifest.json           # Метаданные капсулы + подписи
├── sbom.cdx.json           # CycloneDX 1.7 SBOM
├── sbom.cdx.json.sig       # DSSE-подпись
├── reachability/
│   ├── analysis.json       # Вердикты достижимости
│   ├── call-graph.json     # Доказательство статического анализа
│   └── analysis.json.sig   # DSSE-подпись
├── policy/
│   ├── rules.rego          # Снимок политики
│   └── verdict.json        # Решение gate + обоснование
├── approvals/
│   └── jsmith.sig          # Подпись человеческого одобрения
└── feeds/
    └── snapshot.json       # Замороженное состояние CVE/advisory

Фрагмент манифеста капсулы

Манифест фиксирует каждый вход и выход по дайджесту, чтобы решение можно было воспроизвести позже.

apiVersion: capsule.stellaops.dev/v1
metadata:
  id: "cap-2025-12-11-abc123"
  timestamp: "2025-12-11T14:30:00Z"
  scan_id: "scan-xyz789"
inputs:
  sbom:
    format: "cyclonedx@1.6"
    digest: "sha256:..."
  feeds:
    - name: "nvd"
      snapshot: "2025-12-11"
      digest: "sha256:..."
  policy:
    version: "corp-policy@2025-12-01"
    digest: "sha256:..."
outputs:
  vex:
    format: "openvex"
    digest: "sha256:..."
signatures:
  - scheme: "DSSE"
    profile: "FIPS-140-3"
    signer: "build-ca@corp"

Цепочка доказательств

Как доказательства проходят через Стеллу
Поток доказательствИзображениеSBOMДостижимостьВердикт политикиПодписано DSSEПодписано DSSEПодписано DSSE

Что содержит Капсула решения

Дайджест артефакта

SHA-256 адрес содержимого

Подписано

Снимок SBOM

CycloneDX 1.7 / SPDX 3.0

Подписано

Доказательства достижимости

Граф + аттестации рёбер

Подписано

Состояние VEX

Решётчато-разрешённый вердикт

Подписано

Версия политики

Rego/DSL с адресацией по содержимому

Подписано

Одобрения

Подписанные записи одобрений

Подписано

Рабочий процесс соответствия

Аудиторы могут воспроизвести решения месяцы спустя
Поток воспроизведения аудитаКапсула решений6 месяцев назадстелла повторТот же вердиктпобитно идентично
  1. 1

    Аудитор спрашивает

    "Покажите мне доказательство, что эта CVE была обработана правильно в январском релизе."

  2. 2

    Оператор экспортирует

    stella капсула экспорт jan-release-capsule.yaml --format Audit-bundle

  3. 3

    Пакет верифицирует

    Аудитор выполняет stella capsule verify jan-release-capsule.yaml — подписи проверяются, дайджесты совпадают.

  4. 4

    Воспроизведение подтверждает

    stella replay jan-release-capsule.yaml производит идентичный вердикт с замороженными входными данными.

Детерминированный повтор

Выполните то же решение 6 месяцев спустя — те же замороженные входные данные выдадут идентичный вердикт. Сеть не требуется, нет дрейфа состояния, нет двусмысленности.

  • Проверьте подписи капсулы с закреплёнными ключами.
  • Подтвердите, что дайджесты SBOM и фида совпадают с манифестом.
  • Воспроизведите с тем же policy bundle и входами достижимости.
  • Экспортируйте аудиторский пакет с вердиктом, VEX и доказательствами.
Терминал
$ stella replay capsule.json --verify
Воспроизведение решения от 2025-07-15T14:32:00Z...
Версия политики: sha256:e5f6g7h8... (совпадает)
Снимок фида:  sha256:i9j0k1l2... (совпадает)
Вердикт: ALLOW (идентично оригиналу)
Проверка детерминизма: PASS

Форматы и совместимость

SBOM

CycloneDX 1.7 и SPDX 3.0.1. Импортируйте из Trivy, Grype, Syft или создавайте самостоятельно.

VEX

OpenVEX и CSAF 2.0. Разрешение решетки с несколькими выпусками и обнаружение конфликтов.

SARIF

Экспорт формата обмена результатами статического анализа для интеграции IDE и CI.

Air-Gapped Проверка

Аудиторы проверяют подписи, проверяют целостность дайджеста и воспроизводят решения без доступа к сети. Весь криптографический материал перемещается вместе с капсулой.

Терминал
$ stella capsule verify decision-capsule.yaml --offline
Проверка подписи: PASS (ECDSA-P256)
Совпадение дайджеста:           PASS (sha256:abc123...)
Версия политики:         VALID (v3.2.1)
Целостность доказательств:     ВСЕ КОМПОНЕНТЫ ПОДПИСАНЫ
Вердикт:                ALLOW — сеть не требуется

Готовы сделать релизы аудируемыми?

Читать спецификацию Капсулы решения · Смотреть все функции