現(xiàn)代計算的發(fā)展可以分為四次浪潮,每次浪潮的到來都促進(jìn)了IT技術(shù)的快速發(fā)展。伴隨效率的提升,也引發(fā)了新的安全挑戰(zhàn)。
第一次浪潮:發(fā)生在1990年代之前,最明顯的特征是在裸機(jī)服務(wù)器上運(yùn)行C/S架構(gòu)。通常,服務(wù)器上只有一個操作系統(tǒng),也只運(yùn)行一個應(yīng)用。
第二次浪潮:始于2000年左右,功能完整的操作系統(tǒng)虛擬化技術(shù)的出現(xiàn)。虛擬化的發(fā)展改變了服務(wù)器市場,迎來了虛擬計算的時代。
第三次浪潮:以云和容器技術(shù)為主要特征。容器能夠得到廣泛采用,主要是有兩個推動因素:在DevOps的推動下,需要加快產(chǎn)品的上市時間;以及各類應(yīng)用要實(shí)現(xiàn)在不同云端之間的可移植性。
第四次浪潮:功能即服務(wù)(FaaS),現(xiàn)在也正在快速發(fā)展,但是尚未得到企業(yè)的廣泛應(yīng)用。功能即服務(wù)(FaaS)不受硬件和操作系統(tǒng)影響,對計算能力進(jìn)行了更高層次的抽象。
目前,我們處于第三次浪潮的快速發(fā)展時期,以容器為代表的云原生得到了市場的高度認(rèn)可,目前正在成為新一代主流IT基礎(chǔ)設(shè)施。多年來,開發(fā)人員已經(jīng)對處理操作系統(tǒng)和應(yīng)用依賴問題不勝其煩。容器具有很好的可移植性,通過將所有文件打包在一起,實(shí)現(xiàn)了“一次打包,隨處運(yùn)行”,有效解決了操作系統(tǒng)和應(yīng)用依賴的打包問題。雖然容器使用率越來越高,但是相關(guān)安全建設(shè)卻處于落后階段。
一、容器安全成為云安全第一戰(zhàn)場
云和容器之間有著本質(zhì)的聯(lián)系,云安全離不開容器安全,不可能脫離容器安全而單獨(dú)去講云安全。
雖然現(xiàn)在市場上有各類開源和商業(yè)容器安全產(chǎn)品,但很多點(diǎn)狀產(chǎn)品只是解決了容器某一特定方面的安全挑戰(zhàn),完全沒有把握容器安全的整體狀況。例如,在容器上開發(fā)的大多數(shù)應(yīng)用都是在使用各類開源和商業(yè)的IaaS和PaaS服務(wù)。但是由于缺乏對IaaS和PaaS環(huán)境的可見性,導(dǎo)致企業(yè)在云端面臨一些風(fēng)險。如果沒有完整的可見性,并采取控制措施限制橫向移動,則很難檢測到攻擊者在容器中的橫向移動。
了解容器的整體堆?梢杂行Ь徑怙L(fēng)險,而只注重于解決容器安全某一特定方面的點(diǎn)狀產(chǎn)品則可能會因為沒有全局觀而捕捉不到這一風(fēng)險。例如,當(dāng)CVE最新公告公布了容器最新漏洞,了解整個容器的堆棧情況則可以解決這一漏洞所有信息,包括受影響的資產(chǎn)范圍、鏡像補(bǔ)丁的修復(fù)狀態(tài)等。
二、DevSecOps:構(gòu)建全生命周期的容器安全解決方案
鑒于容器和云的運(yùn)行速度非?欤珼evSecOps是安全團(tuán)隊唯一可行的途徑。DevSecOps將DevOps團(tuán)隊和安全團(tuán)隊整合在一起,盡早在容器生命周期中引入安全。這種方法將安全嵌入到整個容器生命周期中:構(gòu)建、部署和運(yùn)行。
構(gòu)建安全
在容器構(gòu)建階段集成安全是指,在構(gòu)建階段的早期引入安全檢查,而不是在運(yùn)行時被動地引入安全。構(gòu)建階段的安全應(yīng)側(cè)重于消除漏洞、惡意軟件和不安全的代碼。由于容器是由庫、二進(jìn)制文件和應(yīng)用代碼組成,因此,為組織機(jī)構(gòu)建立正式的容器鏡像倉庫至關(guān)重要。安全團(tuán)隊的工作是找到鏡像倉庫,并迅速設(shè)置相關(guān)訪問策略等安全標(biāo)準(zhǔn)。例如創(chuàng)建受信鏡像,在DevSecOps團(tuán)隊之間達(dá)成一個共識流程并自動執(zhí)行,確保不會從任何不受信的鏡像倉庫中部署任何容器。
部署安全
數(shù)據(jù)研究表明,46%的組織機(jī)構(gòu)接受來自任何來源的Kubernetes Pod的流量。這一數(shù)據(jù)表明,大家對于容器部署安全認(rèn)知遠(yuǎn)不如物理服務(wù)器安全部署認(rèn)知,畢竟在本地部署服務(wù)器之后,極少有組織機(jī)構(gòu)會將其完全開放給互聯(lián)網(wǎng)。
在部署階段,重點(diǎn)是確保團(tuán)隊能夠?qū)⒏黜椣嚓P(guān)內(nèi)容正確的整合在一起。容器鏡像可能是沒有漏洞,但是如果將鏡像部署到配置不安全的Kubernetes pod中,還是會面臨安全風(fēng)險。只有編排工具和容器引擎都需要制定一個安全標(biāo)準(zhǔn),方可實(shí)現(xiàn)部署的安全配置。此外,需要采用必要的流程和工具來實(shí)現(xiàn)自動化和持續(xù)監(jiān)控。例如,從CIS在Docker和Kubernetes方面的安全基準(zhǔn)入手,制定相應(yīng)的部署安全策略,限制只有安全的鏡像才能進(jìn)入運(yùn)行時。
運(yùn)行時安全
運(yùn)行時安全要確定運(yùn)行中的容器有哪些新漏洞并了解正常情況應(yīng)該是什么樣子。這還包括調(diào)查0day漏洞等異常和可疑活動。有調(diào)查發(fā)現(xiàn),在運(yùn)維階段修復(fù)bug的成本是在設(shè)計階段修復(fù)成本的100倍。
如果安全團(tuán)隊從一開始(在構(gòu)建階段)就參與進(jìn)來,那么確保運(yùn)行時安全可能就沒有那么復(fù)雜了。如果安全開展得晚了,現(xiàn)在只是被動地重點(diǎn)關(guān)注運(yùn)行時安全,那么,依然建議從頭開始檢查一遍容器安全風(fēng)險。確保最終的安全狀態(tài)當(dāng)然至關(guān)重要,但是如果只關(guān)注運(yùn)行時,則可能無法從根源上解決安全問題,導(dǎo)致很多類似問題反復(fù)發(fā)生。
三、寫在最后
在云原生環(huán)境下,容器安全必須作為整體企業(yè)云安全策略的一部分來解決。使用點(diǎn)狀安全產(chǎn)品可以有效解決容器某一特定方面的安全問題,但單獨(dú)解決容器和云安全問題將讓組織機(jī)構(gòu)忽略掉某些風(fēng)險,更有效的方法是將容器安全視為云安全的一部分,通過容器安全加強(qiáng)云安全態(tài)勢。