不可变身份
SHA-256 摘要确保升级的工件与扫描和批准的工件字节相同。
摘要优先版本控制
发布是在创建时解决的OCI 摘要捆绑。标签是人类可读的别名;摘要是加密真理。
可变标签会产生歧义。随着时间的推移,相同的标签可能指向不同的内容。摘要优先版本控制消除了这种不确定性。
SHA-256 摘要确保升级的工件与扫描和批准的工件字节相同。
对工件的任何修改都会更改其摘要。拉动时间不匹配 = 部署失败。篡改是不可能隐藏的。
通过链接扫描、批准和部署的加密证明,准确了解哪个工件部署在何处、何时以及为何。
回滚返回到精确的已知良好摘要,而不是“无论最新指向现在”。保证相同的字节。
Stella 中的版本捆绑了多个组件,每个组件均由其 OCI 摘要标识。该版本本身具有便于人类阅读的语义版本。
示例版本捆绑
Release: myapp-v2.3.1
组件:
api: sha256:abc123...
worker: sha256:def456...
frontend: sha256:789ghi...
从 CLI
$ stella release create --name myapp-v2.3.1 --components api:v2.3.1,worker:v2.3.1
stella release list --environment production\nstella release show myapp-v2.3.1 --components 创建版本时,Stella 立即将所有标签解析为其当前摘要。从那时起,该版本就不再可变。
不变性保证
创建版本后,其摘要集无法更改。每次都会将完全相同的字节部署到每个环境。
每次部署都会生成不可变的内容实现可重复性、审计和回滚的工件。
Docker Compose 文件,其中所有图像引用都固定到特定摘要。包括用于可追溯性的 Stella 元数据标签。
image: registry.example.com/myapp/api@sha256:abc123...
labels:
stella.release.id: "rel-uuid"
stella.digest: "sha256:abc123..."
放置在部署目标上的 JSON 元数据文件,指示当前版本、组件、部署策略和要回滚的先前版本。
"release": { "name": "myapp-v2.3.1" }
"deployment": { "strategy": "rolling" }
"previous": { "digest": "sha256:789..." }
"signature": "base64-encoded-signature"
每个版本都将安全证据与正在部署的确切摘要绑定。证据通过推广随发布一起传播。
| 证据字段 | 内容 |
|---|---|
| sbomDigest | 为此摘要生成的 SBOM 的 SHA-256 |
| scanVerdict | 通过证据参考进行策略评估的通过/失败结果 |
| reachabilityProof | 此摘要的签名可达性图的 CAS URI |
| policyHash | 用于评估的策略版本的哈希 |
确定性重播:给定相同的版本和策略哈希,重新评估会产生位相同的判决。审计员可以在几个月后验证决策。
安装 Stella Ops 并通过具有完整证据绑定的内容哈希开始版本控制版本。