“裸奔”的容器,安全問題迫在眉睫

提供安全的基礎(chǔ)鏡像應(yīng)該是容器云平臺(tái)的基本職責(zé)之一。不過業(yè)務(wù)團(tuán)隊(duì)還需要加載業(yè)務(wù)應(yīng)用及相應(yīng)的工具庫等到基礎(chǔ)鏡像,然后生成業(yè)務(wù)鏡像。這就可能引入新的安全威脅。在鏡像部署之前或者在鏡像進(jìn)入鏡像倉庫之前需要進(jìn)行必要的安全掃描,以檢測(cè)鏡像文件可能存在的漏洞和問題,在部署之前修復(fù)鏡像存在的漏洞。

最近測(cè)容器安全,才發(fā)現(xiàn)部署的容器云平臺(tái)和容器應(yīng)用幾乎在裸奔,每個(gè)鏡像和容器都有各種各樣的漏洞,平臺(tái)本身也不少問題,真是不測(cè)不知道,一測(cè)嚇一跳。容器本身就是弱安全的,容易帶來越權(quán)逃逸等問題,同時(shí)容器應(yīng)用研發(fā)人員對(duì)容器技術(shù)又缺乏了解,缺乏相應(yīng)的安全意識(shí)和安全知識(shí),這就帶來了比較嚴(yán)重的潛在的安全問題。

容器安全問題涉及內(nèi)容很多,比如說鏡像安全、容器運(yùn)行時(shí)安全(入侵檢測(cè)監(jiān)控、入侵?jǐn)r截和隔離)、容器平臺(tái)自身的安全、容器網(wǎng)絡(luò)安全、微隔離等,任何一項(xiàng)內(nèi)容做好都不容易,而且又可能涉及多個(gè)部門和團(tuán)隊(duì),需要協(xié)作,所以我們也在討論容器安全應(yīng)該由安全團(tuán)隊(duì)來負(fù)責(zé)還是容器云平臺(tái)團(tuán)隊(duì)來負(fù)責(zé),在安全左移的趨勢(shì)下,是否應(yīng)該更多關(guān)注pre-runtime安全等等。安全問題無處不在,有很多的事項(xiàng)迫在眉睫。

一、容器安全的核心在哪?

最近的測(cè)試讓我一直在思考容器安全的核心到底應(yīng)該在哪里。是鏡像安全?還是容器運(yùn)行時(shí)安全?還是主機(jī)安全?網(wǎng)絡(luò)安全?雖然都在鼓吹安全左移,但我覺得容器運(yùn)行時(shí)安全依然是核心,要能及時(shí)的檢測(cè)到安全威脅并自動(dòng)實(shí)現(xiàn)入侵?jǐn)r截,網(wǎng)絡(luò)微隔離或者網(wǎng)絡(luò)阻斷可能是最后的手段了。不過為了減少安全漏洞,降低安全威脅程度,前期的安全準(zhǔn)備及安全措施也是至關(guān)重要,比如鏡像安全掃描和補(bǔ)丁修復(fù),平臺(tái)和網(wǎng)絡(luò)自身的安全能力等等,都是密切相關(guān)。任何環(huán)節(jié)有漏洞,都可能會(huì)帶來嚴(yán)重的問題。

二、安全左移

安全左移目的就是要提前采取措施修復(fù)潛在的漏洞,盡可能在后期的運(yùn)行過程中增強(qiáng)抗攻擊能力。對(duì)于容器云平臺(tái)來說,基礎(chǔ)鏡像的維護(hù)就非常重要。雖然目前說可以很方便的從網(wǎng)絡(luò)上下載各種各樣的鏡像文件,但很多鏡像文件都存在這樣那樣的眾多漏洞,如果不加區(qū)分的部署在自己的容器云環(huán)境,勢(shì)必會(huì)帶來很多潛在的問題。所以這就需要在容器云平臺(tái)提供企業(yè)業(yè)務(wù)應(yīng)用開發(fā)所需的基礎(chǔ)鏡像,比如jdk、tomcat、nginx、mysql、kafka、nodejs、CentOs等等,這些鏡像需要容器團(tuán)隊(duì)來維護(hù)并及時(shí)的更新,在發(fā)現(xiàn)新的漏洞之后先更新基礎(chǔ)鏡像,然后在合適時(shí)間合適的方式用新鏡像更新存量運(yùn)行時(shí)的容器。

基礎(chǔ)鏡像的安全維護(hù)可能是一個(gè)不小的工作量。但是這是一個(gè)值得做的事情。很多容器云廠商也提供像制品庫、應(yīng)用商店一樣的功能來管理鏡像,但缺乏對(duì)鏡像的深度維護(hù)和安全舉措。這些鏡像往往存在著很多漏洞,在公司內(nèi)網(wǎng)可能還好,一旦運(yùn)行在互聯(lián)網(wǎng)環(huán)境,就面臨著極大的威脅。按照安全左移的思想,最好的辦法就是所有部署的鏡像都是安全的鏡像,在部署之前解決掉安全問題。在測(cè)試中我們震驚于一個(gè)鏡像竟然存在數(shù)百個(gè)高危漏洞,如果讓業(yè)務(wù)應(yīng)用團(tuán)隊(duì)去修復(fù),基本上是不可能的。所有的業(yè)務(wù)應(yīng)用鏡像最好來自于平臺(tái)所提供的安全的基礎(chǔ)鏡像。這樣,至少統(tǒng)一的安全的基礎(chǔ)鏡像會(huì)減少安全漏洞,也減少業(yè)務(wù)團(tuán)隊(duì)自己下載、生成鏡像所帶來的安全隱患。

三、Pre-Runtime鏡像掃描

提供安全的基礎(chǔ)鏡像應(yīng)該是容器云平臺(tái)的基本職責(zé)之一。不過業(yè)務(wù)團(tuán)隊(duì)還需要加載業(yè)務(wù)應(yīng)用及相應(yīng)的工具庫等到基礎(chǔ)鏡像,然后生成業(yè)務(wù)鏡像。這就可能引入新的安全威脅。在鏡像部署之前或者在鏡像進(jìn)入鏡像倉庫之前需要進(jìn)行必要的安全掃描,以檢測(cè)鏡像文件可能存在的漏洞和問題,在部署之前修復(fù)鏡像存在的漏洞。

我們?cè)诮ㄔO(shè)容器云平臺(tái)時(shí),“以鏡像倉庫為媒介”,隔離開發(fā)和部署,我們不向終端用戶提供Docker和Kubernetes CLI命令,所有的操作通過平臺(tái)UI完成。也就是說要部署鏡像,需上傳鏡像到鏡像倉庫,上傳鏡像倉庫里的鏡像可以自動(dòng)被安全掃描。如果存在高危漏洞,則可以通過設(shè)置的規(guī)則禁止部署。

我們測(cè)試的容器安全廠商提供Jenkins插件來實(shí)現(xiàn)高危漏洞鏡像阻斷部署,用于CD持續(xù)部署流程。由于思路的不同,實(shí)現(xiàn)方式有差別。不過我個(gè)人覺得可以再安全左移一點(diǎn),把部署阻斷放在鏡像倉庫。高危漏洞的鏡像禁止出鏡像倉庫或者甚至禁止進(jìn)鏡像倉庫,在upload時(shí)實(shí)現(xiàn)鏡像的安全掃描和高危阻斷。

四、運(yùn)行時(shí)安全檢測(cè)和監(jiān)控

鏡像不被運(yùn)行,即便有漏洞、有病毒也不會(huì)帶來危害,但一旦被運(yùn)行生成容器,那么漏洞就是實(shí)實(shí)在在的,病毒就可能開始發(fā)作。所以容器啟動(dòng)時(shí)的檢測(cè)是運(yùn)行時(shí)檢測(cè)的第一步。這和操作系統(tǒng)自身的漏洞檢測(cè)、病毒檢測(cè)等是一樣的。所以我們測(cè)試的廠商所使用的安全引擎也幾乎一摸一樣,能力基本相同。目前檢測(cè)結(jié)果相對(duì)來說誤報(bào)的幾率還是很大的,對(duì)于一些高危的威脅定義也有差別。其實(shí)我們覺得高危應(yīng)該是指某一個(gè)漏洞或病毒等的威脅危害程度,而不是指這個(gè)鏡像或容器的綜合威脅評(píng)判得分。用得分綜合評(píng)判容易導(dǎo)致誤解。個(gè)人覺得更應(yīng)關(guān)注個(gè)體危害,當(dāng)然也要關(guān)注綜合威脅。

容器運(yùn)行起來,如果有漏洞就可能被攻擊,所以這就需要對(duì)容器網(wǎng)絡(luò)流量和網(wǎng)絡(luò)異常請(qǐng)求進(jìn)行監(jiān)控,對(duì)容器的整個(gè)運(yùn)行時(shí)進(jìn)行監(jiān)測(cè)。這和傳統(tǒng)的網(wǎng)絡(luò)安全主機(jī)檢測(cè)是一樣,所以一家以傳統(tǒng)主機(jī)安全擴(kuò)展到容器安全的廠商在這方面是占優(yōu)勢(shì)的,至少理論上是占優(yōu)勢(shì)的。不過容器網(wǎng)絡(luò)又區(qū)別于傳統(tǒng)網(wǎng)絡(luò),容器網(wǎng)絡(luò)安全和容器網(wǎng)絡(luò)隔離措施也稍有別于傳統(tǒng)網(wǎng)絡(luò)安全。

五、容器網(wǎng)絡(luò)安全和微隔離

容器網(wǎng)絡(luò)是一種虛擬化網(wǎng)絡(luò)SDN(軟件定義網(wǎng)絡(luò)),可以自成一體。容器網(wǎng)絡(luò)安全隔離有幾種實(shí)現(xiàn)方式:零信任網(wǎng)絡(luò)微隔離、ServiceMesh、Kubernetes網(wǎng)絡(luò)策略等。零信任網(wǎng)絡(luò)就是通過軟件定義網(wǎng)絡(luò)來實(shí)現(xiàn),所以如果要構(gòu)建零信任體系,可以采用零信任網(wǎng)絡(luò)微隔離技術(shù)。不過由于當(dāng)前實(shí)際的網(wǎng)絡(luò)環(huán)境,離零信任網(wǎng)絡(luò)還是有不小的距離,雖然希望引入零信任網(wǎng)絡(luò)微隔離能力,不過由于其要求有些高,難以落地而作罷。Kubernetes網(wǎng)絡(luò)策略隔離是最簡(jiǎn)單的方式,各家廠商基本上也是采用這種方式,不過用網(wǎng)絡(luò)策略配置規(guī)則是非常的繁瑣,在容器量小的情況下還可以接受,大量時(shí)就非常復(fù)雜化??赡芤诸?、分域等,對(duì)于跨應(yīng)用、跨域訪問的請(qǐng)求,眾多的規(guī)則很容易帶來混亂。在容器網(wǎng)絡(luò)安全提上日程的當(dāng)前,ServiceMesh可能是一個(gè)比較好的選項(xiàng)。基于ServiceMesh實(shí)現(xiàn)流量鏈路拓?fù)?,流量安全管控,訪問控制和容器網(wǎng)絡(luò)隔離等,配合網(wǎng)絡(luò)安全引擎,從而實(shí)現(xiàn)容器網(wǎng)絡(luò)的運(yùn)行時(shí)安全和微隔離管控等。

六、容器安全回歸容器平臺(tái)

不經(jīng)過這次測(cè)試,對(duì)于容器安全廠商的本質(zhì)差別其實(shí)是難以認(rèn)知的。對(duì)于市面上的反饋,參加測(cè)試的兩家半斤八兩、功能大同小異,甚至廠商自身的人員也沒說明白有什么實(shí)質(zhì)差別。

前面我們提到過,一家是從傳統(tǒng)主機(jī)安全擴(kuò)展到容器安全,一家是云原生安全。首先從其產(chǎn)品理念和產(chǎn)品架構(gòu)來說,就有很大的區(qū)別。主機(jī)安全廠商的容器安全產(chǎn)品是一個(gè)附屬組件,緊耦合于主機(jī)安全產(chǎn)品,至少目前是無法分離的,這就使其從容器云平臺(tái)視角看起來顯得笨重。不過從傳統(tǒng)網(wǎng)絡(luò)安全的視角來看則是完美的。云原生的容器安全產(chǎn)品架構(gòu)則和容器云的輕量、敏捷很匹配,這是我比較喜歡的。關(guān)注點(diǎn)是不一樣的。所以一千個(gè)人眼里有一個(gè)前哈姆雷特,也是正常的。

不過容器安全最終還是要回歸容器云平臺(tái)的,容器安全運(yùn)維核心在于容器云平臺(tái),而不是網(wǎng)絡(luò),這是有些區(qū)別的。特別如果不能很好的區(qū)分容器主機(jī)和非容器主機(jī),會(huì)帶來額外的維護(hù)工作量。容器云平臺(tái)的容器安全我覺得可以看作是應(yīng)用安全的一部分,雖然也涉及網(wǎng)絡(luò)安全,但核心不在網(wǎng)絡(luò),所以容器安全回歸容器云平臺(tái)會(huì)更合適點(diǎn)。

當(dāng)然,容器安全離不開網(wǎng)絡(luò)安全團(tuán)隊(duì)的支持,畢竟很多問題都需要專業(yè)的網(wǎng)絡(luò)安全的協(xié)助和支持。

容器安全的市場(chǎng)取決于容器平臺(tái)的市場(chǎng),所以最終容器安全的前景依賴于和容器云平臺(tái)的應(yīng)用前景。如果把容器安全能力直接融合于容器云平臺(tái),使容器安全能力融合成或至少集成容器平臺(tái)或容器云平臺(tái)的一部分,那就更完美了。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論