開發與維運

螞蟻宣佈開源KubeTEE:雲原生集群化機密計算框架

作者:肖俊賢、閆守孟、秦凱倫

9月25日,在上海外灘大會可信原生技術論壇上,螞蟻宣佈開源KubeTEE,一個雲原生大規模集群化機密計算框架,解決在雲原生環境中TEE可信執行環境技術特有的從開發、部署到運維整體流程中的相關問題。

KubeTEE開源地址:https://github.com/SOFAEnclave/KubeTEE

背景

2018年,螞蟻集團開始全面轉型雲原生架構。在落地雲原生架構的過程中,螞蟻集團的工程團隊發現,新的技術在帶來諸多紅利的同時,也帶來了很多新的挑戰。其中,安全是雲原生架構裡被忽視的一塊短板。經過不斷地實踐和探索,螞蟻在2020年提出了“可信原生(Trust-Native)”的理念,將可信任性滲透到雲原生架構的各層之中,打造全棧可信賴的雲計算基礎設施,為業務保駕護航。

機密計算理念,以及可信執行環境TEE(Trusted Execution Environment) ,作為保護應用的運行安全的技術,也被螞蟻引入並積極實踐,形成了SOFAEnclave機密計算技術棧。SOFAEnclave包括三大組件:

  • Occlum LibOS:解決業務開發過程中的問題,如傳統TEE應用開發需要切分重構,依賴SDK特定編程語言等問題;
  • HyperEnclave:解決TEE部署環境問題,如硬件TEE不普及、軟硬件TEE使用一致性等問題;
  • KubeTEE:解決TEE集群問題,包括雲原生環境特有的從開發、部署到運維整體流程中的相關問題。

2019年雲棲大會上,螞蟻首次介紹了在SOFAEnclave機密計算技術棧方面的一些工作。一年來,Occlum LibOS已經開源,並捐獻給CCC(Confidential Computing Consortium)機密計算聯盟。CCC機密計算聯盟隸屬於Linux基金會,由業界多家科技巨頭髮起,致力於保護計算數據安全。Occlum捐獻給CCC,將成為CCC社區首箇中國發起的開源項目。

本次KubeTEE的開源,是業界首個開源的TEE大規模集群整體解決方案。螞蟻將持續擁抱和回饋開源社區,推動行業技術一起向前發展。

KubeTEE是什麼

KubeTEE是雲原生場景下如何使用TEE技術的一套整體解決方案,包括多個框架、工具和微服務的集合。就像其名字所暗示的,KubeTEE結合Kubernetes和TEE兩個重要技術方向,解決可信應用從單點到容器化集群實施過程中的相關問題。

KubeTEE的目標之一是提供Serverless形態的機密計算服務,比如Trusted FaaS,讓業務方只需要實現業務核心邏輯,就可以簡單地將之提交到TEE環境中運行,而不用重複整套的業務服務開發、部署和運維的流程。

KubeTEE架構圖:

目前,KubeTEE已經開源的組件包括:

下面來介紹一下如何利用KubeTEE的這些組件來開發一個集群化的可信應用。

讓可信應用開發變得更簡單

目前服務器端TEE技術最成熟的代表就是Intel SGX技術,目前KubeTEE相關工作也都基於SGX實現。要讓一個基於SGX開發的可信應用能夠運行起來並持續服務,除了類似一般業務的普通流程以外,還需要一些額外的SGX技術相關工作。

在沒有KubeTEE之前,整個可信應用的開發流程看起來可能像這樣:

開發階段需要做的事情

1.選擇一個合適的開發模式開發可信應用,比如基於SDK、某種改進的架構、或者Occlum這種LibOS方式。另外,為了確保軟件和平臺可信,開發者還需要實現一些類似遠程證明和校驗的安全相關流程。

2.需要維護可信代碼的簽名密鑰,訪問遠程證明服務器的鑑權密鑰等。

3.編譯和簽名可信應用,如果計劃部署到容器環境,還需要製作容器鏡像。

部署、運行和維護階段需要做的事情

1.獲取支持TEE特性的機器,並且安裝配置TEE運行時依賴的相關組件。

2.確保運行時網絡環境正常,比如可以訪問遠程證明服務器。

3.合理和高效地調配物理服務器資源,支持CI、測試和生產等使用需求。

4.發佈和運維可信應用服務,包括擴縮容等。

從完整的軟件工程角度看,如果讓每個業務開發團隊都去重複這些繁瑣的工程工作,那無疑是非常低效的。KubeTEE的目標是通過雲原生的手段簡化上述過程,幫助業務方更簡單、更順暢地實現基於TEE的可信應用和服務,具體包括可信應用開發支持、基礎設施支持和微服務輔助支持等方面。

可信應用開發支持

總體來說,KubeTEE支持如下整個可信應用的開發流程:基於開發框架的應用開發 -> 應用自動化簽名服務 -> 基於基礎鏡像和模板工具的容器打包和上傳。

為了滿足不同應用場景的開發需求,在OcclumLibOS基礎上,KubeTEE開源了TFF可信應用開發框架。

其中Occlum LibOS主要適用於一些不想修改的舊應用遷移到TEE保護,或者一些基於大型框架的不適合切分的應用,或者C++以外其他編程語言開發的應用等。而TFF框架主要適用於需要嚴格控制Enclave內部代碼性能和安全的輕量應用場景,所以捨棄了對複雜應用的兼容(這部分Occlum LibOS可以更好的支持),理念是讓TEE原生SDK支持的分割式編程模型更加穩定和易用。

TFF利用protobuf message簡化可信和非可信部分接口函數定義的複雜度、封裝遠程證明等TEE技術底層細節和流程,讓使用者只需要關心可信函數的實現和調用邏輯,快速實現可信應用。

因為同樣使用了protobufmessage來封裝數據,所以利用TFF框架開發基於gRPC的微服務也變得更容易。另外TFF還提供容器了基礎容器鏡像和dockerfile文件模板,幫助使用者快速製作一個可信應用容器鏡像。

基礎設施支持

應用開發就緒之後,需要部署到硬件集群環境中。在基礎設施方面,KubeTEE基於Kubernetes,利用雲原生的方式管理和使用SGX物理機器,統一SGX主機環境,並抽象成容器邏輯資源池,提供統一的可信應用部署服務,讓TEE硬件基礎設施成為一種可以按需使用的集群化資源。

KubeTEE開源的sgx-device-plugin讓業務容器啟動時候自動獲取TEE特性支持,同時方便集群管理和分配TEE資源。從工程實踐角度,集群中可以隔離CI、測試、預發和生產環境,滿足業務不同階段對TEE基礎設施的需求。

微服務輔助支持

業務部署到TEE集群中以後,會產生一些遠程證明、業務密鑰部署和共享、網絡代理等通用性需求,還有日誌、監控、自愈、擴縮容等運維繫統需求。KubeTEE提供了一些輔助微服務來幫助業務方節省重複開發的人力和時間成本。

其中,KubeTEE開源的AECS(Attestation based Enclave ConfigurationService)方案就是為了解決可信應用多個實例間安全共享密鑰從而實現無狀態服務的問題。AECS主要提供祕鑰生成、導入、存儲、管理和分發,遠程證明報告代理獲取等基礎功能,將來可能擴展更多通用配置管理功能,比如證書生成和分發。同時,AECS支持多種secret格式和自定義的secret訪問policy,支持多業務之間祕鑰隔離管理。

未來展望

目前,KubeTEE已經可以較大程度幫助業務方降低TEE開發複雜度,但是依然任重道遠。KubeTEE下一階段將更多關注雲原生場景和機密計算的結合,持續貢獻更多組件以及通用服務,讓TEE的使用更高效、更簡單、更雲原生化。

最後,我們衷心希望,KubeTEE能和業界攜手,共建更完整的雲端安全計算生態。

Leave a Reply

Your email address will not be published. Required fields are marked *