摘要優先版本控制

按內容哈希不可變發布身份

發布是在創建時解決的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 立即將所有標籤解析為其當前摘要。從那一刻起,發布就不再可變。

  • 像 :v2.3.1 這樣的標籤在創建時解析為 sha256:abc123...
  • 如果有人將新映像推送到同一標籤,您的發布不受影響
  • 註冊表查詢始終使用 @sha256:digest 語法 — 無標記重新解析

不變性保證

創建版本後,其摘要集就無法更改。每次都會將完全相同的字節部署到每個環境。

生成的工件

每個部署都會生成不可變的工件,從而實現可重複性、審核和回滾。

compose.stella.lock.yml

Docker Compose文件,其中所有圖像引用都固定到特定摘要。包括用於可追溯性的 Stella 元數據標籤。

image: registry.example.com/myapp/api@sha256:abc123...

labels:

stella.release.id: "rel-uuid"

stella.digest: "sha256:abc123..."

stella.version.json

放置在部署目標上的 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 並通過具有完整證據綁定的內容哈希開始版本控製版本。