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

Докажете всяко решение. Възпроизведете го месеци по-късно.

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

Поглед на одитора: какво получавате

Експортирането на Капсула за решение създава подписан пакет, адресиран по съдържание, с точните входове и изходи за решението за релийз.

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

Източник: Документация за Decision Capsules

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

Съдържание

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

Подписване

DSSE/in-toto подписите правят пакетите устойчиви на подправяне. Изберете FIPS-140-3, GOST R 34.10, SM2/SM3 или eIDAS криптографски профили.

Експорт

Експортирайте капсули на всяка стъпка от промоцията. Съхранявайте в Хранилище за доказателства с WORM семантика за периоди на съхранение за съответствие.

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

Стартирайте отново всяко историческо решение с stella replay. Същите входни данни дават същите резултати, офлайн или онлайн.

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

Всяка Decision Capsule е самостоятелна директория с подписани артефакти:

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        # Решение на гейта + обосновка
├── approvals/
│   └── jsmith.sig          # Подпис за човешко одобрение
└── feeds/
    └── snapshot.json       # Замразено състояние на CVE/съвети

Откъс от манифеста на капсулата

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

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 capsule export 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 (идентичен с оригинала)
Проверка на детерминизъм: ПРЕМИНАТО

Формати и оперативна съвместимост

SBOM

CycloneDX 1.6 и SPDX 2.3/3.0. Импортиране от Trivy, Grype, Syft или генериране вътрешно.

VEX

OpenVEX и CSAF 2.0. Решетъчна резолюция от множество издатели с откриване на конфликти.

SARIF

Експорт във формат за обмен на резултати от статичен анализ за IDE и CI интеграция.

Верификация в изолирана среда

Одиторите верифицират подписи, проверяват цялост на дайджести и възпроизвеждат решения без мрежов достъп. Целият криптографски материал пътува с капсулата.

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

Готови ли сте да направите релийзите одитируеми?

Прочетете спецификацията за Капсулата за решение · Вижте всички функции