好,現(xiàn)在我們已經(jīng)對(duì)Hyper-V的架構(gòu)有了一定的了解–從第三方的結(jié)構(gòu)上來看,Hypervisor有兩點(diǎn)安全性值得我們注意:第一,其不能滿足深度防御體系–這一點(diǎn)當(dāng)然是微軟一致推崇的;第二,Hypervisor直接運(yùn)行在硬件上,導(dǎo)致了特權(quán)的最大化,其風(fēng)險(xiǎn)可想而知,因此,Hyper-V既然是基于Hypervisor技術(shù)的,也就面臨了同樣的問題。

微軟的解決辦法是:在Hyper-V中只做內(nèi)存管理和CPU調(diào)度,其他的設(shè)備則通過關(guān)鍵的VMbus–這是一種穿越機(jī)制,通過VMbus進(jìn)入Ring0進(jìn)行轉(zhuǎn)接,從而構(gòu)建了一個(gè)微軟Hyper-V的三層架構(gòu)(當(dāng)然,就是那個(gè)深度防御體系):調(diào)度CPU管理內(nèi)存的Hypervisor層、存儲(chǔ)/網(wǎng)絡(luò)堆棧和驅(qū)動(dòng)運(yùn)行的Ring0層以及Ring3層之中的虛擬設(shè)備/管理用API/虛擬機(jī)(見下圖)。

不知道有沒有人注意到:VMbus是其中的一個(gè)安全性的核心,他負(fù)責(zé)了那些可能會(huì)出現(xiàn)問題的命令和代碼的執(zhí)行–基于VMbus的高速內(nèi)存總線架構(gòu)是其安全性實(shí)現(xiàn)超越主要貢獻(xiàn)者,每臺(tái)虛擬機(jī)之間隔離的VMbus調(diào)用保證了每個(gè)分區(qū),每個(gè)虛擬機(jī)之間完全的隔離開(或許我們可以說是"類物理機(jī)"?)

除此以外,我們還會(huì)看到,正如我在文章開頭所說,Hyper-V底層的Hypervisor代碼量很小,不帶有第三方驅(qū)動(dòng),僅僅是負(fù)責(zé)兩件事情的非常精簡的架構(gòu)下–而且還是純粹的微軟的代碼(微軟自己聲稱不包含任何的bug),安全性能夠得到大大提升–只做最核心的,不做那些可能會(huì)出問題的,Hypervisor會(huì)出問題才怪?!

當(dāng)然,這并不是全部的內(nèi)容,微軟的工程師曾經(jīng)提到過有關(guān)Hpyer-V安全加固部分:首先,Hypervisor擁有自己的地址空間,與Guest的地址空間隔離;其次,Hypervisor可以運(yùn)行在Windows Server 2008上的Server Core上,這是僅僅支持命令行接口的一個(gè)最精簡的Windows Server,一個(gè)沒有GUI Shell但是可以運(yùn)行GUI程序的詭異系統(tǒng)。

利用Server Core安裝Hyper-V,好處很明顯:GUI Shell去掉后,性能更好,而代碼量最小之后,系統(tǒng)需要補(bǔ)丁的幾率也就越小–我覺得這點(diǎn)最關(guān)鍵,誰都知道,微軟的Windows絕對(duì)是補(bǔ)丁大王。

補(bǔ):需要說明的是,子分區(qū)目前仍然要通過父分區(qū)來訪問硬件資源,當(dāng)子分區(qū)內(nèi)的操作系統(tǒng)需要訪問硬件的時(shí)候,由子分區(qū)內(nèi)的VSC(Virtualization Service Client)通過VMBUS將request發(fā)給父分區(qū)里面的VSP(Virtualization Service Provider),然后由VSP去提供實(shí)際的硬件服務(wù)。通過這種方式來使用硬件,相對(duì)于使用硬件模擬的方法,其訪問性能有了大幅度的提高。

分享到

zhabin

相關(guān)推薦