平台與維運 2026 年 6 月 25 日

2026-06-24 — Jaeger ClickHouse 後端 8.6 倍壓縮、SBOM 供應鏈合規、AI Agent 委託認證架構

primary=https://www.cncf.io/blog/2026/06/23/building-jaegers-clickhouse-backend-8-6x-compression-on-10-million-spans/ primary=https://github.com/jaegertracing/jaeger/blob/main/internal/storage/v2/clickhouse/BENCHMARKING.md primary=https://github.com/jaegertracing/jaeger/blob/v2.18.0/docs/adr/008-clickhouse-storage-schema.md primary=https://www.docker.com/blog/what-is-an-sbom/ primary=https://www.cncf.io/blog/2026/06/23/agent-auth-a-lawyers-day-in-court/ primary=https://arxiv.org/pdf/2603.24775

Jaeger v2.18.0 新增 ClickHouse 儲存後端:1000 萬條 Span 達到 8.6 倍壓縮比

CNCF Blog · 2026-06-23

分散式追蹤工具 Jaeger 於 2026 年 6 月 23 日由 Meta 維護者 Mahad Zaryab 發表 v2.18.0 ClickHouse 後端的技術分析,說明這項仍處於 alpha 階段的新儲存選項。在 1,000 萬條 Span 的基準測試中,spans 資料表的磁碟佔用從 5.99 GiB 壓縮至 722 MiB,達到 8.6 倍壓縮比。這是 Jaeger 在 Elasticsearch/OpenSearch 與 Cassandra 之外,首次引入列式儲存引擎作為後端選項。

背景

Jaeger 長期以來依賴 Elasticsearch/OpenSearch 或 Cassandra 作為 Span 儲存後端,兩者均採用行式或文件導向的儲存模型。追蹤資料本質上高度重複——相同的服務名稱、操作名稱、狀態碼在數千列中反覆出現。列式資料庫對這類資料的壓縮效果遠優於行式格式,因此 ClickHouse 成為自然的候選方案。此次實作依循 ADR-008 的設計決策,並在 Oracle Cloud VM.Standard2.4(4 OCPU、60 GB RAM)單節點環境下完成基準測試。

核心改動

Schema 核心為單一 spans 資料表,搭配多個 Materialized View 維護衍生資料。主鍵選擇了 (service_name, name, start_time) 而非 trace_id,以優化服務/操作維度的搜尋查詢,代價是單一 Trace 的 Span 不再連續存放。為補償這個取捨,Schema 在 trace_id 欄位上加了 Bloom filter skip index,並建立 trace_id_timestamps Materialized View 預先計算每個 Trace 的時間範圍,讓取得單一 Trace 時可做 partition 與 granule 剪枝。

屬性儲存採用 ClickHouse 的 Nested 資料型別,按型別分為獨立欄位:

  • bool_attributes Nested(key String, value Bool)
  • double_attributes Nested(key String, value Float64)
  • int_attributes Nested(key String, value Int64)
  • str_attributes Nested(key String, value String)

另有 attribute_metadata 輔助表在查詢時解析字串屬性過濾條件,映射 key 對應的 (type, level) 組合,避免全表掃描。所有支援資料表均在啟動時自動建立,設定 create_schema: true 即可,無需手動執行 DDL。

規格細節

啟用方式需透過 feature gate 明確開啟,目前仍為實驗性功能:

go run ./cmd/jaeger \
  --config cmd/jaeger/config-clickhouse.yaml \
  --feature-gates=storage.clickhouse

ClickHouse 版本需求為 25.x,可用官方提供的 docker-compose 快速啟動。Schema 在未來版本中仍可能出現破壞性變更,不建議直接用於生產環境。

影響範圍

基準測試數據如下:

指標數值
壓縮比(spans 表)8.6×(5.99 GiB → 722 MiB)
寫入吞吐量52,129 spans/秒
依 Trace ID 取得追蹤平均 101 ms
服務/操作維度搜尋37–47 ms
屬性過濾搜尋1,769 ms

屬性過濾查詢延遲偏高(約 1.7 秒)是目前已知弱點,後續版本將針對此場景優化。對於追蹤資料量龐大、儲存成本敏感的團隊,ClickHouse 後端提供了一條值得評估的低成本路徑,尤其適合已在其他場景部署 ClickHouse 的組織避免引入額外元件。

原始來源:CNCF Blog — Building Jaeger's ClickHouse backendJaeger ClickHouse Benchmarking ReportADR-008 Schema Design


軟體原料清單 SBOM:供應鏈安全的必備基礎設施

Docker Blog · 2026-06-23

SBOM(Software Bill of Materials,軟體原料清單) 是一份機器可讀的清單,完整記錄軟體成品中每個元件、函式庫與模組的來源、版本與授權資訊。Docker 於 2026 年 6 月 23 日發表深度技術文章,說明 SBOM 在容器工作流程中的產生、儲存與應用方式。面對 Log4Shell 等重大漏洞事件,以及美國行政命令 EO 14028 與歐盟《網路韌性法》(CRA) 的合規要求,SBOM 已從選配工具轉變為交付流程的必要環節。

背景

2021 年 Log4Shell 漏洞爆發時,擁有 SBOM 的組織能在數分鐘內確認受影響映像,沒有的則需耗費數天。Sonatype 研究顯示,65% 的開源 CVE 在 NVD 資料庫中沒有 CVSS 評分,其中 46% 在獨立評估後屬於高危或嚴重等級。現有調查同時指出,逾 50% 的組織僅在特定需求時才臨時產生 SBOM,而非系統性地整合進 CI/CD 流程。

核心改動

SBOM 目前有兩大主流格式。SPDX(由 Linux Foundation 管理,ISO/IEC 5962:2021)以授權合規與開源審計為核心,支援 JSON、YAML、tag-value 及 RDF/XML;CycloneDX(由 OWASP 管理)以漏洞管理與 DevSecOps 流程為重點,支援 JSON、XML 及 Protocol Buffers。兩者各有側重但並不互斥,可視需求同時產出。

每筆元件記錄包含套件名稱、版本、供應商、授權類型、Package URL (purl),以及 SHA-256 等加密雜湊值。以下是 SPDX 格式的範例條目:

{
  "name": "openssl",
  "SPDXID": "SPDXRef-Package-openssl",
  "versionInfo": "3.1.4",
  "supplier": "Organization: OpenSSL Project",
  "licenseDeclared": "Apache-2.0",
  "checksums": [{ "algorithm": "SHA256", "value": "a1b2c3..." }]
}

規格細節

在容器工作流程中,SBOM 應於建置階段產生,以捕捉最終映像的完整狀態,而非僅依賴原始碼層級的分析。Docker BuildKit 支援以單一旗標在建置時產生 SBOM 並以 in-toto 格式附加為 OCI attestation:

docker buildx build --attest type=sbom --tag myapp:latest .

SBOM 告訴你映像中「有什麼」,而 Provenance attestation 則說明它「如何被建置」,兩者共同構成 SLSA 框架要求的可驗證供應鏈。SBOM 必須與映像一同儲存在 OCI Registry 以防止版本漂移,並持續與最新 CVE 資料庫比對,無需重新分析原始碼。

影響範圍

法規面,美國 CISA 已於 2025 年發布 SBOM 最低元素指導方針,歐盟《網路韌性法》則將要求延伸至歐洲市場銷售的產品。金融、醫療、國防與關鍵基礎設施領域已逐漸將 SBOM 列為採購前提條件。需特別留意的是,SBOM 不等同於 SCA(軟體組成分析)工具,SBOM 是清單本身,SCA 工具是掃描清單找出漏洞的執行者;此外,SBOM 也無法偵測執行期零日漏洞或業務邏輯錯誤,僅是縱深防禦體系中的一層。

原始來源:Docker Blog — What is an SBOM?


AI Agent 認證新挑戰:代理人身分、委託授權與稽核的技術架構

CNCF Blog · 2026-06-23

CNCF Ambassador Lin Sun 於 2026 年 6 月 23 日發表 Agent Auth: A Lawyer's Day in Court,以法庭類比說明 AI Agent 在身分驗證上面臨的新問題。文章的核心論點是:AI Agent 本質上是「微服務的進化版」,在傳統服務認證之上,還需要額外的委託身分、操作範圍與稽核可觀察性三層能力。隨著 MCP(Model Context Protocol)與 A2A(Agent-to-Agent)協定逐漸普及,這套問題在 2026 年已成為雲原生平台的工程實務議題。

原本的問題

傳統微服務只需回答「這個服務是誰?」,利用 mTLS 或 JWT 即可完成身分驗證。但 AI Agent 場景需要同時回答三個問題:這個 Agent 是誰(Agent Identity)、它代表哪個使用者行事(Principal Identity),以及被委託了哪些特定權限(Delegation Scope)。現有的身分基礎設施,如 SPIFFE/SPIRE 負責工作負載身分、cert-manager 負責憑證生命週期管理,可以解決第一個問題,但對後兩個問題沒有直接答案。

同時,Agent 的生命週期往往比傳統服務更短暫、更動態——一個對話可能在幾秒內產生並銷毀多個子 Agent。X.509 憑證核發的延遲在某些場景下已與 Agent 的存活時間不相容,這也是 IETF 在 2026 年初同步推進 AIMS、WIMSE、Agentic JWT、SCIM for Agents 等四份 Internet-Draft 的背景原因。

採用的方法

文章提出以 OBO Token(On-Behalf-Of Token) 作為委託授權的核心載體。一個完整的 OBO Token 需要包含四項資訊:

  • Principal Identity:原始使用者的身分
  • Agent Identity:執行操作的 Agent 身分(由 SPIFFE SVID 或等效機制提供)
  • Delegated Permissions:被授予的操作清單
  • Scope of Delegation:委託範圍與有效期限

擁有有效委託授權並不等同於可以執行任意操作——每次請求仍需通過獨立的授權策略引擎驗證,確認該操作是否在委託範圍之內。文章推薦的技術棧包含 SPIFFE 負責 Agent 身分核發、Istio 處理 mTLS 與流量授權、agentgateway 作為 Agent 請求的閘道層。

實際效果

這套架構的目標是讓 Agent 平台具備五項核心能力:強身分建立、跨請求的 Principal 身分傳播、委託 Token 核發與驗證、授權策略與範圍執行,以及完整的操作稽核追蹤。稽核可觀察性在 Agent 場景中尤其重要,因為 Agent 可能在短時間內代表多個使用者對多個後端服務發出請求,傳統日誌難以還原完整的操作鏈。Istio 的 Telemetry API 與 agentgateway 的請求日誌目前是較成熟的可觀察性方案,但標準化工作仍在 CNCF Working Group 層級進行中。

原始來源:CNCF Blog — Agent Auth: A Lawyer's Day in CourtAIP: Agent Identity Protocol for Verifiable Delegation Across MCP and A2A


End of article
0
Would love your thoughts, please comment.x
()
x