证据和审计
证明每个决定。几个月后重播。
决策胶囊密封证据,以便审核员可以验证任何发布 — 离线、独立、逐位相同。
审计视角:你将获得什么
导出决策胶囊会生成一个签名且按内容寻址的包,包含发布决策的精确输入与输出。
- 用于扫描的准确 SBOM
- 冻结的漏洞 feed 快照(NVD、OSV、厂商通告)
- 可达性证据(静态调用图工件与运行时跟踪)
- 用于门禁的策略版本与 lattice 规则
- 附带理由的派生 VEX 声明
- 覆盖胶囊内容的 DSSE 签名
来源: 决策胶囊文档
什么是证据包?
内容
每个决策胶囊包含确切的 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/通告状态
胶囊清单摘录
胶囊清单以 digest 固定每个输入与输出,便于日后重放决策。
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" 证据链
决策胶囊包含什么
工件摘要
SHA-256 内容地址
SBOM 快照
CycloneDX 1.7 / SPDX 3.0
可达性证据
图 + 边缘证明
VEX 状态
格解析判定
策略版本
内容寻址的 Rego/DSL
审批记录
签名的审批记录
合规工作流
- 1
审计员询问
"向我展示证据,证明这个 CVE 在一月发布中被正确处理。"
- 2
操作员导出
stella 胶囊导出 jan-release-capsule.yaml --format审核包 - 3
包验证
审计员运行
stella capsule verify jan-release-capsule.yaml— 签名验证通过,摘要匹配。 - 4
重放确认
stella replay jan-release-capsule.yaml使用冻结的输入产生相同的判决。
确定性重放
6个月后运行相同的决策 - 相同的冻结输入产生相同的结论。无需网络,无状态漂移,无歧义。
- 使用固定密钥验证胶囊签名。
- 确认 SBOM 与 feed 快照的 digest 与清单一致。
- 使用相同 policy bundle 和可达性输入重放。
- 导出含裁决、VEX 与证据的审计包。
$ stella replay capsule.json --verify
重放 2025-07-15T14:32:00Z 的决策...
策略版本:sha256:e5f6g7h8... (匹配)
Feed 快照: sha256:i9j0k1l2... (匹配)
裁决:ALLOW(与原始一致)
确定性检查:PASS 格式和互操作性
SBOM
CycloneDX 1.7 和 SPDX 3.0.1。从 Trivy、Grype、Syft 导入或本地生成。
VEX
OpenVEX 和 CSAF 2.0。具有冲突检测功能的多发行者点阵解析。
SARIF
用于 IDE 和 CI 集成的静态分析结果交换格式导出。
气隙验证
审核员无需任何网络访问即可验证签名、检查摘要完整性并重播决策。所有加密材料都随胶囊一起传输。
$ stella capsule verify decision-capsule.yaml --offline
签名校验:PASS(ECDSA-P256)
Digest 匹配: PASS(sha256:abc123...)
策略版本: VALID(v3.2.1)
证据完整性: 全部组件已签名
裁决: ALLOW — 无需网络 