虛擬機(jī)VS容器 安全比拼誰(shuí)更勝一籌?
我們經(jīng)常說(shuō),“HTTPS很安全”或者“HTTP不安全”,但其實(shí)我們的意思是“HTTPS很難被窺探,中間人攻擊很難執(zhí)行”。
然而,HTTPS已經(jīng)被黑客入侵,在某些情況下,HTTP足夠安全。此外,如果我們?cè)谥С諬TTPS的常見(jiàn)部署中發(fā)現(xiàn)可利用的漏洞,HTTPS可成為黑客網(wǎng)關(guān),直到漏洞被修復(fù)。
HTTP和HTTPS是在IETF RFCs 7230-7237和2828中定義的協(xié)議。HTTPS被設(shè)計(jì)為安全的HTTP,但HTTPS安全HTTP不安全的說(shuō)法隱藏著重要的例外情況。
虛擬機(jī)(VM)和容器沒(méi)有嚴(yán)格的定義,也沒(méi)有故意設(shè)計(jì)成對(duì)方更安全。
為什么我認(rèn)為VM比容器更安全
在戰(zhàn)爭(zhēng)和軟件中,分治法是勝利策略。當(dāng)架構(gòu)將單一復(fù)雜的難以解決的安全問(wèn)題分解成更容易的問(wèn)題時(shí),在大多數(shù)情況下,結(jié)果會(huì)比解決所有問(wèn)題的單一解決方案更加好。
容器是分治法應(yīng)用于應(yīng)用程序的示例。通過(guò)將每個(gè)應(yīng)用程序鎖定在自身,一個(gè)應(yīng)用程序的漏洞將不會(huì)影響其他容器中的應(yīng)用程序。虛擬機(jī)也是采用分治法,但它們?cè)诟綦x方面走的更遠(yuǎn)。
在隔離應(yīng)用程序中的漏洞不會(huì)直接影響其他應(yīng)用程序,但隔離的應(yīng)用程序可能會(huì)破壞與其他容器共享的單個(gè)操作系統(tǒng),并影響所有容器。當(dāng)使用共享操作系統(tǒng)時(shí),應(yīng)用程序、容器和操作系統(tǒng)部署堆棧中任何點(diǎn)的缺陷都會(huì)使整個(gè)堆棧的安全性失效,并危及物理機(jī)器。
虛擬化這樣的分層架構(gòu)可分離每個(gè)應(yīng)用程序的執(zhí)行堆棧,一直到硬件,這可消除應(yīng)用程序相互干擾的可能性。此外,每個(gè)應(yīng)用程序堆棧之間的接口被定義和限制,以防止被濫用。這可保護(hù)應(yīng)用程序免受其他應(yīng)用的影響。
虛擬機(jī)將控制用戶(hù)活動(dòng)的操作系統(tǒng)與控制訪客操作系統(tǒng)及硬件之間交互的虛擬管理程序分隔。VM訪客操作系統(tǒng)控制用戶(hù)活動(dòng),但不會(huì)控制硬件交互。應(yīng)用程序或訪客操作系統(tǒng)中的漏洞不可能會(huì)影響物理硬件或者其他虛擬機(jī)。當(dāng)虛擬機(jī)訪客操作系統(tǒng)和支持容器的操作系統(tǒng)相同時(shí)(通常都是這種情況),相同的漏洞將會(huì)影響運(yùn)行該操作系統(tǒng)的所有其他容器,但不會(huì)危及其他虛擬機(jī)。因此,虛擬機(jī)水平將應(yīng)用程序分離,并垂直分離操作系統(tǒng)與硬件。
VM開(kāi)銷(xiāo)
VM的額外安全性是需要成本的。在計(jì)算系統(tǒng)中,控制轉(zhuǎn)移總是很昂貴,無(wú)論是在處理器周期還是其他資源中。執(zhí)行堆棧存儲(chǔ)和重置,外部操作可能需要暫?;蛘弑辉试S完成等。
訪客操作系統(tǒng)和虛擬管理程序之間的轉(zhuǎn)換費(fèi)用很高,并且需要經(jīng)常發(fā)生。即使是特殊控制指令植入到處理器芯片中,控制轉(zhuǎn)移開(kāi)銷(xiāo)會(huì)降低VM的整體效率。這種降低是否很顯著?這很難說(shuō)。通過(guò)管理控制轉(zhuǎn)移,應(yīng)用程序可調(diào)整為降低開(kāi)銷(xiāo),并且,大多數(shù)服務(wù)器處理器現(xiàn)在被設(shè)計(jì)為簡(jiǎn)化控制轉(zhuǎn)移。換句話(huà)說(shuō),這種降低程度取決于應(yīng)用程序和服務(wù)器,但開(kāi)銷(xiāo)永遠(yuǎn)不能完全消除,只會(huì)減輕。
虛擬管理程序漏洞
讓問(wèn)題進(jìn)一步復(fù)雜化,在VM架構(gòu)中分隔層會(huì)帶來(lái)另一個(gè)問(wèn)題:虛擬管理程序漏洞。虛擬管理程序漏洞是單點(diǎn)故障,可能帶來(lái)潛在巨大后果,特別是在公共云中??上攵瑔蝹€(gè)黑客可在虛擬機(jī)中啟動(dòng)代碼,控制其他公共云消費(fèi)者擁有的應(yīng)用程序,從而入侵整個(gè)公共云。
任何堅(jiān)固的架構(gòu)都可能存在缺陷,虛擬管理程序也不例外。
雖然目前并沒(méi)有任何重大虛擬管理程序攻擊事故,但從常見(jiàn)漏洞和披露(CVE)數(shù)據(jù)庫(kù)來(lái)看,研究人員確實(shí)發(fā)現(xiàn)一些虛擬管理程序缺陷。管理程序開(kāi)發(fā)人員和供應(yīng)商已經(jīng)很快修復(fù)漏洞,在2017年3月,微軟發(fā)布安全公告MS17-008,其中涉及Hyper-V管理程序中7個(gè)已修復(fù)的漏洞,都被標(biāo)記為嚴(yán)重。
筆者仍然認(rèn)為VM比容器提供更好的安全性,但我們必須認(rèn)真看待虛擬機(jī)的安全性。