天天看點

螞蟻王旭:開源協作如何提升業界的安全?開源項目如何保證安全性?如何提升開源社群的安全水位基金會如何讓開源世界更安全?

在前不久的上海外灘大會上,螞蟻資深技術專家、Kata Containers創始人王旭向參會者分享了開源、開放協作與軟體安全可信的話題,本文根據演講内容編輯整理而成。

今天,我想在這裡和大家探讨開源與安全的話題。在過去,人們一直有一些疑問:開源是否比閉源更安全?開源項目如何保證自己的安全?如何通過開源社群促進業界改善安全性?

這裡,我将以Kata Containers項目以及螞蟻基礎設施團隊的實踐為例,對這些問題做一些探讨,來看看社群和業界是怎麼做的。

開源項目如何保證安全性?

首先是開源比閉源更安全嗎?

你可能從哪裡聽說過:開源軟體相比閉源軟體的一個優越性在于,開源軟體更安全。

開源運動的一位頗具話題性的早期領軍人物Eric S·Raymond,在他的著作《大教堂與集市》中寫道:

“在一群足夠多的beta測試者與共同開發者的情況下,幾乎所有問題都可以被快速定位,并且由某個人迅速解決。”

“有些所謂安全系統,隻有在其不為人所知時才是安全的,當心這些虛假的隐秘性。”

這些論點幾乎是無可辯駁的。然而,争論就在于——開源是否意味着更多專業的review,更多的人看到代碼甚至是發現漏洞了,他們是否會第一時間來幫助開源項目改善品質而非第一時間利用漏洞進行入侵?開源項目是如何第一時間處理漏洞的?

下面讓我們來看一個例子。

這是Kata Contaienrs 項目的 VMT 流程圖,描述了項目漏洞事件響應團隊接收到安全報告後是如何處理的。

螞蟻王旭:開源協作如何提升業界的安全?開源項目如何保證安全性?如何提升開源社群的安全水位基金會如何讓開源世界更安全?

所謂VMT,是 Vulnerability Management Team,這是一個應對安全事件的“特權”工作組,成熟的、社群化的開源項目都有這樣一個核心團隊。當安全研究人員發現在他們的研究中發現項目存在安全漏洞的時候,會向VMT工作組發出報告,而VMT收到之後,會在尋求修複方案的同時,對問題進行評估、去權威機構配置設定CVE編号,在patch merge之後,還需要確定主要使用者的安全,然後再對外公開修複資訊。

這裡的一個關鍵點是,開源項目VMT團隊和安全人員的配合。隻有規範運作的開源項目和白帽子們良好互動,才能真的做到第一時間修複漏洞、保護使用者,而不是放出0-day漏洞。這中間的響應流程,即使對于“開源”軟體,也是不開放的。

是以,這裡我們的結論是——不是你把代碼放在 GitHub 上開源了,安全就随之而來了,你要有吸引安全人員的活躍社群和可以響應問題的機制。這裡我們知道,有些個人化的開源項目是沒有這樣的響應機制的,這樣的開源項目并沒有讓使用者得到安全,相反,一旦有大量使用者使用,得到的是很多驚險。

VMT機制保證了開源項目本身的安全,那麼,在一個龐大的開源社群,比如雲原生社群,它由數量繁多的開源項目組成生态,關于社群的整體安全性,還會有哪些有趣的互動呢。

如何提升開源社群的安全水位

開源的一個便利之處就是,如果你覺得哪裡不夠好,可以自己去彌補。在雲原生 landscape 裡,搜一下安全相關的品類,立刻可以得到一大片的開源安全元件或工具:

螞蟻王旭:開源協作如何提升業界的安全?開源項目如何保證安全性?如何提升開源社群的安全水位基金會如何讓開源世界更安全?

需要說明的是,這些項目不是預先設計的目标,而是社群互動産生的結果。它們反映了一個自組織生态裡的演化規律,而不是操作守則。在開源協作裡,這樣的項目會自然的湧現出來。

這裡,我想以Kata Containers為例,來介紹下如何開發一個開源項目并融入社群。

首先我先來簡單介紹一下 Kata Containers——

Kata Containers 首先是一個容器運作時引擎,在生态中的位置和 runc 是一緻的。但是,和 runc 不同的是,Kata 用輕量級虛拟化技術來做隔離,這個強隔離帶來的不僅是安全隔離,也包括性能隔離和故障隔離。

不過我要強調的一點是,Kata 仍然是一個容器引擎,在系統中是完全對等替換 runc 的,對雲原生應用來說,它是完全透明的,即使從性能和開銷角度說,我們也已經對它進行了很多輕量化的改造。

是以,我們說,它同時兼有虛拟機和容器兩者的優點,secure as VM, fast as containers。

三年來,Kata Containers最讓我感到驕傲的,是通過開源社群,我們撬動了社群裡的其他大玩家,提升了整個雲原生世界的安全水位,利用開放協作提升了雲原生領域的安全性、改善了社群的信任。

Kata創立之前的虛拟化容器技術的發展并不快。2015年上半年,我們就開源了 hyperContainer 和 runV,Intel 也同時開源了 clear containers。不過,當時我們的影響還是非常有限的,想加入CNCF都被拒之門外,但我們還是在 Kubernetes 社群裡制造了一些影響。比如在 2016 年的時候,我們和 kubernetes node 團隊一起推動了 CRI 接口,來抽象化容器引擎。

2017年9月份,我在一個會議上遇到當時 Intel OTC 的時任 GM,也是 Intel 的 SSP VP, Imad Sousou,我們決定一起合作一個開源項目,在基金會的幫助下,我們一起工作了三個月,最終在2017年12月的 KubeCon 大會前一天,釋出了Kata Containers這個項目。

随後的故事可以用峰回路轉來形容,在2018年上半年,也就是緊接着Kata釋出之後的下一次KubeCon,Google釋出了gVisor安全容器項目,再之後半年,在2018年AWS釋出了輕量虛拟化VMM FireCracker,并引用了 Kata Containers項目來做對比。而在這之間的2018年中,Google 推動 containerd 改進了 Shim API,來進一步讓安全容器可以和runC一起被支援,随後這個被稱為 shim-v2 的 API 也得到了 CRI-O 的支援,加上 RuntimeClass 和其他一些改進,可以說,2018年是安全容器的爆發年。

今天,Kata 擁有了不小的使用者社群,得到了 RedHat,SuSE 和 Ubuntu 三大主流 distro 的支援,也在很多不同行業進入了生産之中,不僅我們螞蟻、阿裡用上了,百度的 Kata 案例也在去年的 OpenInfra Summit 上得到了超級使用者大獎,在今年10月19日的OpenInfra Summit大會上,我在Keynote裡會正式宣布Kata Containers 1.x在12個穩定釋出之後,正式釋出2.0版本。不僅 Kata,Google GKE 的使用者還可以用上 gVisor,它幫助使用者躲過了前不久的 CVE-2020-14386 漏洞。

可以說,開源的力量就在于此——代碼隻是它對世界的影響力的冰山一角,在水面之下的哪些開放協作和互動,讓社群的使用者受益,得到了更多的好項目,讓社群向更好的方向發展。

基金會如何讓開源世界更安全?

要想促進整個開源世界的安全,開源社群的治理組織不能不提。其中,基金會不僅可以接納安全項目,還可以安全為目的建立基金會,将天南海北的開發者聚集到一起,攻克共同的安全課題,也是開源安全的重要一環。

讓我們以Linux旗下的機密計算聯盟CCC為例來說明,螞蟻通過将項目捐獻給CCC、參與這樣的組織進而對開源社群的安全作出貢獻。

在資料安全和隐私保護越來越受到重視的今天,機密計算(Confidential Computing)是一個具備廣泛應用前景的前沿技術領域,可信執行環境(Trusted Execution Environment)作為其重要分支,受到業界科技巨頭的重視。

機密計算聯盟就是在這樣的背景下誕生的,CNCF中國區總監Keith Chan告訴我們:CCC的任務和目标之一是在公有雲上實作機密計算,這樣我們可以做到以前無法做到的事情,其中比較典型的就是在雲上運作敏感資料的計算,機密計算将作為安全體系的核心手段來保護這些敏感資料。

要實作這一目标并不容易,因為機密計算仍然處于早期,業界鮮有應用,幾家企業各自推進自己的研發應用,但難以對業界形成示範效應。是以需要基金會這樣的組織來推進這一過程。

CCC希望通過開源開發的原則聚集全世界的人一起來共建機密計算的技術和平台,具體的做法包括:

  • 定義機密計算,并通過開源的方法讓全世界的人可以參與,建構生态圈,加快提高市場的接受度和采用率;
  • 通過開源的方法簡化企業對機密計算應用的開發和管理;
  • 定義一些基礎的服務和架構,并讓開發者能夠放心地采用這些技術。

作為CCC關鍵成員的螞蟻集團也将捐贈Occlum LibOS,這是來自中國的第一個機密計算開源項目,也是目前易用性最好的機密計算LibOS。

螞蟻王旭:開源協作如何提升業界的安全?開源項目如何保證安全性?如何提升開源社群的安全水位基金會如何讓開源世界更安全?

通過将其捐贈給基金會,Occlum将成為社群主導的開源項目,将吸引更多業界專家共建,并将和社群其它開源項目合作,如與HyperLedger的avalon項目的合作,在更廣泛的應用場景中落地。

另外,不僅僅是Occlum,螞蟻集團還正式開源了KubeTEE,解決機密計算在叢集中的問題,還有正在研發中的HyperEnclave,解決TEE部署環境問題。這些機密計算的元件,也是螞蟻對提升整個社群和業界的安全性所做的努力。

正是有開發者、組織、業界機構的共同努力,才讓開源項目和社群更加安全,而更安全的開源社群,也将讓整個世界變得更加安全。

繼續閱讀