Confidential Containers:雲原生機密計算基礎設施

OpenAnolis小助手發表於2022-10-18

文/龍蜥社群雲原生 SIG

前言部分

機密容器是 Cloud Native Computing Foundation(CNCF)下的一個新的 Sandbox 專案。機密容器專案基於 CPU 可信執行環境(TEE)技術,並與雲原生容器以及 Kubernetes 技術結合,構建出新的軟體架構,其設計目的是為執行在不受使用者控制的雲端計算基礎設施上的敏感資料和應用提供安全可信的計算環境。機密容器專案的目標是標準化機密計算在容器技術層面的實現方式,遮蔽多種 CPU TEE 的底層實現細節,在使用體感上保持與使用普通容器進行開發和部署的一致性。阿里雲還將機密解決方案推廣到龍蜥社群, 並基於龍蜥社群構建開箱即用的機密容器解決方案。

CPU TEE(如 AMD SEV、Intel SGX 和 Intel TDX)能夠提供處理器微架構級記憶體訪問控制與隔離機制,在記憶體級提供加密和完整性保護,增加新的指令集與處理器執行模式,禁止不可信裝置透過 DMA 訪問加密記憶體,目的是防止在計算過程中洩露或篡改敏感資料和程式碼。CPU TEE 建立了一種新的威脅模型,使用者敏感資料和應用的安全性無需由雲服務提供商及其基礎設施管理員來保證,而僅依賴於硬體級別的TEE 保護技術。機密容器專案的目標是在容器級別標準化機密計算,並簡化其在 Kubernetes 的使用。這是為了讓 Kubernetes 使用者能夠使用熟悉的工作流和工具部署機密容器工作負載,而無需深入瞭解底層機密計算技術。機密容器將支援多種環境,包括公共雲、本地和邊緣計算。

目前機密容器專案的核心參與者包括阿里雲、AMD、ARM、IBM、Intel、Microsoft、Red Hat、Rivos 等在內的軟體和硬體公司。阿里雲作為該專案核心技術的主要貢獻者,在機密容器社群不久前釋出的 0.1.0 release 中,阿里雲在該專案以及相關依賴專案的貢獻比例約佔 20%,位居社群第二,僅次於 Intel。該專案 9 個核心子專案中有 5 個由阿里雲的 Maintainer 負責,專案的技術指導委員會 10 名成員中,阿里雲佔有 2 個席位。

技術架構

機密容器有兩種典型架構:

Confidential Containers:雲原生機密計算基礎設施

  • Pod 級機密容器:該架構基於 Kata Containers 專案,最大區別是將基於普通虛擬化技術實現的輕量級 Sandbox Pod替換為基於機密計算技術實現的輕量級 TEE Pod,目的是將特定租戶的整個 Pod 以及其中的容器執行在受 CPU TEE 保護的執行環境中。除此之外,TEE Pod 內部還額外整合了 image-rs 和 attestation-agent 等元件,它們負責實現容器映象的拉取、授權、驗籤、解密、遠端證明以及秘密注入等安全特性。Pod 級機密容器支援 AMD SEV 以及 Intel TDX 機密虛擬機器。

  • 程式級機密容器:該架構基於阿里雲、Intel 與螞蟻合作的 CNCF 專案 Inclavare Containers。租戶的容器執行在支援 Intel SGX Enclave 的CPU TEE中。該架構的特別之處在於 Pod 由容器工作負載執行在 LibOS(目前支援螞蟻 Occlum,將來會支援Intel Gramine)之上,並由 enclave-agent 對容器的生命週期進行管理。除此之外的核心元件 image-rs 和 attestation-agent 元件均與 Pod 級機密容器架構相同。

機密容器的基本執行過程為:

  • 使用者使用標準工具製作一個簽名和/或加密的受保護的容器映象,並上傳到容器映象倉庫中。

  • 使用者命令 Kubernetes 啟動這個受保護的容器映象。kubelet 會向 containerd 發起建立 Pod 的 CRI 請求,containerd 則把請求轉發給 kata-runtime/shim-rune,最終呼叫 QEMU/Dragonball/rune 建立實際的 Pod。在機密容器中,Pod 被對映為CPU TEE。

  • CPU TEE 執行初始化,最終啟動 kata-agent/enclave-agent 監聽後續請求。

  • kubelet 向 containerd 發起 Image Pulling 的 CRI 請求,containerd 則把請求轉發給 kata-runtime/shim-rune,最終 kata-agent/enclave-agent 收到請求並透過 image-rs 子模組提供的容器映象管理功能,在 TEE 內安全地執行拉取、驗籤、解密、unpack 以及掛載容器映象的操作。

  • 如果 TEE 內沒有預先在 boot image 中內建驗籤或解密容器映象的相關策略檔案或金鑰,則 image-rs 子模組會請求 attestation-agent 元件透過遠端證明協議與遠端可信的遠端證明服務進行基於CPU TEE 硬體的身份認證與授權,透過attestation-agent 與遠端證明服務建立的安全可信通道返回 image-rs 子模組需要的敏感資料。

  • 遠端證明服務驗證 CPU TEE 硬體認證證據的完整性和真實性。起到比較驗證作用的可信參考值由機密計算軟體供應鏈安全基礎設施來下發。如果 CPU TEE 透過了身份認證,遠端證明服務將授權金鑰管理服務(KMS)返回 attestation-agent 請求的敏感資料,比如容器映象的解密金鑰和加密引導過程中用到的磁碟解密金鑰。

產品解決方案

作為機密容器專案的核心成員,阿里雲除了積極參與社群的開源工作,也一直致力於機密容器產品化和推廣工作。阿里雲將機密容器解決方案推廣至龍蜥社群,基於 Anolis,使用 RunD 沙箱容器,整合雲原生套件和機密容器相關元件,構建開源的、開箱即用的 Pod 級機密容器解決方案。

Confidential Containers:雲原生機密計算基礎設施

Anolis OS

Anolis OS 是龍蜥社群打造的 Linux 開源發行版。基於 Anolis OS,阿里雲聯合AMD、Intel 等合作伙伴,已經完成 kernel、KVM 等元件對於 CPU TEE 的支援與適配, 後續我們將支援更多的 HW-TEE 平臺。

RunD 沙箱容器

RunD 沙箱容器是由龍蜥社群開源的安全容器,包含 Rust Kata runtime 和Dragonball VMM,已經於 2022 年 10 月 10 日正式作為 Kata Container 3.0.0 release 版本的重要特性發布。此前 RunD 已在工業界多個雲產品上落地, 也在今年登選 ATC 頂會論文。Kata 3.0.0 版本的釋出標誌著 RunD 成功定義了安全容器下一代的發展方向並已成為上游安全容器社群的最新事實標準。後續我們將基於 RunD 安全容器打造更完整的機密容器技術,包含支援更多的 HW-TEE 平臺,以及構建更完備的機密容器支援能力。

相關連結

雲原生 SIG 連結地址:

雲原生機密計算SIG連結地址:

機密容器 github 連結地址:

—— 完 ——


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2919032/,如需轉載,請註明出處,否則將追究法律責任。

相關文章