螞蟻開源KubeTEE:讓機(jī)密計算支持大規(guī)模k8s集群
9月25日,在上海外灘大會可信原生技術(shù)論壇上,螞蟻宣布開源KubeTEE,一個云原生大規(guī)模集群化機(jī)密計算框架,解決在云原生環(huán)境中TEE可信執(zhí)行環(huán)境技術(shù)特有的從開發(fā)、部署到運(yùn)維整體流程中的相關(guān)問題。
KubeTEE開源地址:
https://github.com/SOFAEnclave/KubeTEE
背景
2018年,螞蟻集團(tuán)開始全面轉(zhuǎn)型云原生架構(gòu)。在落地云原生架構(gòu)的過程中,螞蟻集團(tuán)的工程團(tuán)隊發(fā)現(xiàn),新的技術(shù)在帶來諸多紅利的同時,也帶來了很多新的挑戰(zhàn)。其中,安全是云原生架構(gòu)里被忽視的一塊短板。經(jīng)過不斷地實踐和探索,螞蟻在2020年提出了“可信原生(Trust-Native)”的理念,將可信任性滲透到云原生架構(gòu)的各層之中,打造全棧可信賴的云計算基礎(chǔ)設(shè)施,為業(yè)務(wù)保駕護(hù)航。
機(jī)密計算理念,以及可信執(zhí)行環(huán)境TEE (Trusted Execution Environment) ,作為保護(hù)應(yīng)用的運(yùn)行安全的技術(shù),也被螞蟻引入并積極實踐,形成了SOFAEnclave機(jī)密計算技術(shù)棧。SOFAEnclave包括三大組件:
Occlum LibOS:解決業(yè)務(wù)開發(fā)過程中的問題,如傳統(tǒng)TEE應(yīng)用開發(fā)需要切分重構(gòu),依賴SDK特定編程語言等問題;
HyperEnclave:解決TEE部署環(huán)境問題,如硬件TEE不普及、軟硬件TEE使用一致性等問題;
KubeTEE:解決TEE集群問題,包括云原生環(huán)境特有的從開發(fā)、部署到運(yùn)維整體流程中的相關(guān)問題。
2019年云棲大會上,螞蟻首次介紹了在SOFAEnclave機(jī)密計算技術(shù)棧方面的一些工作。一年來,Occlum LibOS已經(jīng)開源,并捐獻(xiàn)給CCC(Confidential Computing Consortium)機(jī)密計算聯(lián)盟。CCC機(jī)密計算聯(lián)盟隸屬于Linux基金會,由業(yè)界多家科技巨頭發(fā)起,致力于保護(hù)計算數(shù)據(jù)安全。Occlum捐獻(xiàn)給CCC,將成為CCC社區(qū)首個中國發(fā)起的開源項目。
本次KubeTEE的開源,是業(yè)界首個開源的TEE大規(guī)模集群整體解決方案。螞蟻將持續(xù)擁抱和回饋開源社區(qū),推動行業(yè)技術(shù)一起向前發(fā)展。
KubeTEE是什么
KubeTEE是云原生場景下如何使用TEE技術(shù)的一套整體解決方案,包括多個框架、工具和微服務(wù)的集合。就像其名字所暗示的,KubeTEE結(jié)合Kubernetes和TEE兩個重要技術(shù)方向,解決可信應(yīng)用從單點到容器化集群實施過程中的相關(guān)問題。
KubeTEE的目標(biāo)之一是提供Serverless形態(tài)的機(jī)密計算服務(wù),比如Trusted FaaS,讓業(yè)務(wù)方只需要實現(xiàn)業(yè)務(wù)核心邏輯,就可以簡單地將之提交到TEE環(huán)境中運(yùn)行,而不用重復(fù)整套的業(yè)務(wù)服務(wù)開發(fā)、部署和運(yùn)維的流程。
KubeTEE架構(gòu)圖:
目前,KubeTEE已經(jīng)開源的組件包括:
- sgx-device-plugin:sgx容器插件,讓容器支持sgx特性,由螞蟻與阿里云團(tuán)隊共同開發(fā);
- trusted-function-framework:TFF可信應(yīng)用開發(fā)框架,簡化可信函數(shù)實現(xiàn)過程,屏蔽SGX相關(guān)細(xì)節(jié);
- enclave-configuration-service:AECS,基于遠(yuǎn)程認(rèn)證的enclave配置服務(wù);
- protobuf-sgx:經(jīng)修改以支持Enclave內(nèi)部使用的protobuf協(xié)議。
下面來介紹一下如何利用KubeTEE的這些組件來開發(fā)一個集群化的可信應(yīng)用。
讓可信應(yīng)用開發(fā)變得更簡單
目前服務(wù)器端TEE技術(shù)最成熟的代表就是Intel SGX技術(shù),目前KubeTEE相關(guān)工作也都基于SGX實現(xiàn)。要讓一個基于SGX開發(fā)的可信應(yīng)用能夠運(yùn)行起來并持續(xù)服務(wù),除了類似一般業(yè)務(wù)的普通流程以外,還需要一些額外的SGX技術(shù)相關(guān)工作。
在沒有KubeTEE之前,整個可信應(yīng)用的開發(fā)流程看起來可能像這樣:
開發(fā)階段需要做的事情
- 選擇一個合適的開發(fā)模式開發(fā)可信應(yīng)用,比如基于SDK、某種改進(jìn)的架構(gòu)、或者Occlum這種LibOS方式。另外,為了確保軟件和平臺可信,開發(fā)者還需要實現(xiàn)一些類似遠(yuǎn)程證明和校驗的安全相關(guān)流程。
- 需要維護(hù)可信代碼的簽名密鑰,訪問遠(yuǎn)程證明服務(wù)器的鑒權(quán)密鑰等。
- 編譯和簽名可信應(yīng)用,如果計劃部署到容器環(huán)境,還需要制作容器鏡像。
部署、運(yùn)行和維護(hù)階段需要做的事情
- 獲取支持TEE特性的機(jī)器,并且安裝配置TEE運(yùn)行時依賴的相關(guān)組件。
- 確保運(yùn)行時網(wǎng)絡(luò)環(huán)境正常,比如可以訪問遠(yuǎn)程證明服務(wù)器。
- 合理和高效地調(diào)配物理服務(wù)器資源,支持CI、測試和生產(chǎn)等使用需求。
- 發(fā)布和運(yùn)維可信應(yīng)用服務(wù),包括擴(kuò)縮容等。
從完整的軟件工程角度看,如果讓每個業(yè)務(wù)開發(fā)團(tuán)隊都去重復(fù)這些繁瑣的工程工作,那無疑是非常低效的。KubeTEE的目標(biāo)是通過云原生的手段簡化上述過程,幫助業(yè)務(wù)方更簡單、更順暢地實現(xiàn)基于TEE的可信應(yīng)用和服務(wù),具體包括可信應(yīng)用開發(fā)支持、基礎(chǔ)設(shè)施支持和微服務(wù)輔助支持等方面。
可信應(yīng)用開發(fā)支持
總體來說,KubeTEE支持如下整個可信應(yīng)用的開發(fā)流程: 基于開發(fā)框架的應(yīng)用開發(fā) -> 應(yīng)用自動化簽名服務(wù) -> 基于基礎(chǔ)鏡像和模板工具的容器打包和上傳。
為了滿足不同應(yīng)用場景的開發(fā)需求,在Occlum LibOS基礎(chǔ)上,KubeTEE開源了TFF可信應(yīng)用開發(fā)框架。
其中Occlum LibOS主要適用于一些不想修改的舊應(yīng)用遷移到TEE保護(hù),或者一些基于大型框架的不適合切分的應(yīng)用,或者C++以外其他編程語言開發(fā)的應(yīng)用等。而TFF框架主要適用于需要嚴(yán)格控制Enclave內(nèi)部代碼性能和安全的輕量應(yīng)用場景,所以舍棄了對復(fù)雜應(yīng)用的兼容(這部分Occlum LibOS可以更好的支持),理念是讓TEE原生SDK支持的分割式編程模型更加穩(wěn)定和易用。
TFF利用protobuf message簡化可信和非可信部分接口函數(shù)定義的復(fù)雜度、封裝遠(yuǎn)程證明等TEE技術(shù)底層細(xì)節(jié)和流程,讓使用者只需要關(guān)心可信函數(shù)的實現(xiàn)和調(diào)用邏輯,快速實現(xiàn)可信應(yīng)用。
因為同樣使用了protobuf message來封裝數(shù)據(jù),所以利用TFF框架開發(fā)基于gRPC的微服務(wù)也變得更容易。另外TFF還提供容器了基礎(chǔ)容器鏡像和dockerfile文件模板,幫助使用者快速制作一個可信應(yīng)用容器鏡像。
基礎(chǔ)設(shè)施支持
應(yīng)用開發(fā)就緒之后,需要部署到硬件集群環(huán)境中。在基礎(chǔ)設(shè)施方面,KubeTEE基于Kubernetes,利用云原生的方式管理和使用SGX物理機(jī)器,統(tǒng)一SGX主機(jī)環(huán)境,并抽象成容器邏輯資源池,提供統(tǒng)一的可信應(yīng)用部署服務(wù),讓TEE硬件基礎(chǔ)設(shè)施成為一種可以按需使用的集群化資源。
KubeTEE開源的sgx-device-plugin讓業(yè)務(wù)容器啟動時候自動獲取TEE特性支持,同時方便集群管理和分配TEE資源。 從工程實踐角度,集群中可以隔離CI、測試、預(yù)發(fā)和生產(chǎn)環(huán)境,滿足業(yè)務(wù)不同階段對TEE基礎(chǔ)設(shè)施的需求。
微服務(wù)輔助支持
業(yè)務(wù)部署到TEE集群中以后,會產(chǎn)生一些遠(yuǎn)程證明、業(yè)務(wù)密鑰部署和共享、網(wǎng)絡(luò)代理等通用性需求,還有日志、監(jiān)控、自愈、擴(kuò)縮容等運(yùn)維系統(tǒng)需求。KubeTEE提供了一些輔助微服務(wù)來幫助業(yè)務(wù)方節(jié)省重復(fù)開發(fā)的人力和時間成本。
其中,KubeTEE開源的AECS(Attestation based Enclave Configuration Service)方案就是為了解決可信應(yīng)用多個實例間安全共享密鑰從而實現(xiàn)無狀態(tài)服務(wù)的問題。 AECS主要提供秘鑰生成、導(dǎo)入、存儲、管理和分發(fā),遠(yuǎn)程證明報告代理獲取等基礎(chǔ)功能,將來可能擴(kuò)展更多通用配置管理功能,比如證書生成和分發(fā)。同時,AECS支持多種secret格式和自定義的secret訪問policy,支持多業(yè)務(wù)之間秘鑰隔離管理。
未來展望
目前,KubeTEE已經(jīng)可以較大程度幫助業(yè)務(wù)方降低TEE開發(fā)復(fù)雜度,但是依然任重道遠(yuǎn)。KubeTEE下一階段將更多關(guān)注云原生場景和機(jī)密計算的結(jié)合,持續(xù)貢獻(xiàn)更多組件以及通用服務(wù),讓TEE的使用更高效、更簡單、更云原生化。
最后,我們衷心希望,KubeTEE能和業(yè)界攜手,共建更完整的云端安全計算生態(tài)。
- 10-4· 開源鴻蒙 OpenHarmony Github 鏡像庫正式上線
- 2-25· 優(yōu)麒麟開源操作系統(tǒng)硬件適配中心上線
- 12-28· 螞蟻集團(tuán)面臨五大整改 需合規(guī)開展資產(chǎn)證券化業(yè)務(wù)
- 12-24· 阿里開源量子模擬器 “太章 2.0”:支持從業(yè)人員設(shè)計量子硬件,測試量子算法
- 10-26· 螞蟻集團(tuán)27日網(wǎng)上路演,網(wǎng)下初步詢價直接定發(fā)行價
- 8-19· 螞蟻集團(tuán)最快月內(nèi)在港遞交上市申請,集資或達(dá) 100 億美元
- 8-13· 谷歌開源 chromeOS.dev,在 Chrome OS 上構(gòu)建應(yīng)用更輕松
- 7-15· “開源 Windows”ReactOS 聘請全職開發(fā)者改進(jìn)存儲相關(guān)模塊
- 7-14· 共探區(qū)塊鏈合作空間,螞蟻科技集團(tuán)與安能物流達(dá)成合作共識
- 5-25· 微軟開源早期編程語言 GW-BASIC