Windows Server 2008 Hyper-V的安全性從何而來?
Hyper-V是微軟提出的一種系統管理程序虛擬化技術,該技術的設計目的是為更為廣泛的用戶提供更加熟悉的、成本效益更高的虛擬化基礎設施軟件。
和之前的Virtual PC、Virtual Server類似,Hyper-V也是微軟的一種虛擬化技術解決方案,但相比于之前的解決方案,該方案在各方面都取得了突飛猛進的發展,從架構上來講只有"硬件-Hyper-V-虛擬機"三層,而且Hyper-V本身非常小巧,代碼簡單,且不包含任何第三方驅動,所以安全可靠、執行效率高,能夠充分利用硬件資源,使虛擬機系統性能更接近于真實系統的性能。
在新的Hyper-V中微軟一直強調提出其安全性方面的優勢,或許微軟希望通過對安全性的闡述強調以下兩點:
1、微軟的Hyper-V是與眾不同的;
2、微軟Hyper-V的微架構相比與其它"第三方的解決方案"是有特殊安全性優勢的。
的確,微軟Hyper-V在微內核方面就已經顯示了它所具有的極大優勢。Hyper-V的微內核管理程序包含了盡可能少的代碼,在Hyper-V的管理程序中,驅動程序是跑在每一個獨立的分區之中的,在這里,我們并不能看不到設備驅動程序,是因為虛擬主機OS雖然在相互獨立的單獨分區內,但是卻能夠很好地通過Hypervisor直接訪問硬件。
同時,Hyper-V本身內部也很少含有第三方代碼,它所有的代碼都是一個純粹的微軟代碼,而且代碼性能非常好,所以里面不存在任何BUG,所以說微軟非常成功地將Hyper-V的安全隱患降到了最低。但這也只是Hyper-V安全性話題中的一部分而已,很顯然,微軟在保護Hyper-V上投入了更為巨大的力量,而且這些力量產生了更為有效的作用,Hyper-V具有了其他任何同類產品無法比擬的安全性,特別是在與Windows Server緊密結合之后,其安全性又得到了極大的提高。而所有這一切也成了微軟與VMware、Xen Source這些第三方解決方案抗衡的重要砝碼。
另外,我們知道微軟Hyper-V的前身來自于Virtual Server,這是一個建立在Ring0內核模式和Ring3用戶模式下的傳統模式。宿主機的Windows和驅動程序及VS底層驅動都是在Ring0下,Virtual Server則是在Windows Server上的,它通過IIS來進行管理,與內核進行通信。但是,對于虛擬機來講,其Virtual Server則是運行于一個高于Windows的Ring1虛擬內核模式上,特權低于Ring0,高于Ring3--問題在于很多特權指令很可能不能夠在Ring1上得到完善的支持,當然,我記得微軟好像也有一種二進制指令翻譯的技術對此進行處理,但是這畢竟不是一個最"根本"的解決途徑。
在Hyper-V中,不再有宿主機和虛擬機之分,微軟帶來的新概念是:父分區和子分區。先在硬件底層安裝Hypervisor,然后在虛擬機上劃分多個分區。雖然父分區和子分區可以對應之前的宿主機和虛擬機,但是它們基本上擁有了平等的地位,它們的內核都是運行在Ring0上,應用程序運行在Ring3用戶模式上。與VS最大的不同是,虛擬機的內核不再運行在Ring1之中,Hypervisor則運行在更底層上,大致是運行在CPU上的一個層上,從圖中我們可以看到,微軟虛擬化的功能和結構已經大大復雜化和體系化。
其次,微軟Hyper-V的安全因素還包括其完善的隔離機制,微軟Hyper-V所有的虛擬化設備之間都不是經過共享的,每一個Parent Partition與Child Partition之間的VMbus調用全部都是經過隔離的。不管是網絡,還是硬盤,還是其他的設備,每臺主機之間都是經過隔離的子分區。每一個虛擬機之間都是通通看不到對方的(在你沒有設置任何共享的情況下)。所以在這樣的條件下,每個安全應用都能各自獨立而安全的運行。
通過以上的解釋,我們對Hyper-V的架構有了一定的了解--從第三方的結構上來看,Hypervisor有兩點安全性值得我們注意:
第一,其不能滿足深度防御體系--這一點也是微軟一致推崇的;第二,Hypervisor直接運行在硬件上,這就導致了特權的最大化,其風險可想而知,Hyper-V既然是基于Hypervisor技術的,也就面臨著同樣的問題。對于這兩個方面的問題,微軟的解決辦法是:在Hyper-V中只做內存管理和CPU調度,其他的設備通過關鍵的VMbus--這是一種穿越機制,通過VMbus進入Ring0進行轉接,從而構建了一個微軟Hyper-V的三層架構(當然,就是那個深度防御體系):調度CPU管理內存的Hypervisor層、存儲/網絡堆棧和驅動運行的Ring0層以及Ring3層之中的虛擬設備/管理用API/虛擬機。
不知道有沒有人注意到:VMbus是其中的一個安全性核心,它負責了那些可能會出現問題的命令和代碼的執行--基于VMbus的高速內存總線架構是其安全性實現超越的主要貢獻者,每臺虛擬機之間隔離的VMbus調用保證了每個分區、每個虛擬機之間完全的隔離開(或許我們可以說是"類物理機")。
除此以外,正如我在文章開頭所說,Hyper-V底層的Hypervisor代碼量很小,不帶有第三方驅動,它所有的僅僅是負責兩件事情的非常精簡的架構--而且還是純粹的微軟的代碼(微軟自己聲稱不包含任何bug),安全性能夠得到大大提升--只做最核心的,不做那些可能會出問題的,Hypervisor會出問題才怪?!
當然,這并不是全部內容,微軟的工程師曾經提到過有關Hpyer-V安全加固部分的內容:
首先,Hypervisor擁有自己的地址空間,它與Guest的地址空間隔離;其次,Hypervisor可以運行在Windows Server 2008的Server Core上,這是一個僅僅支持命令行接口的、最精簡的Windows Server,也是一個沒有GUI Shell但是可以運行GUI程序的詭異系統。還有一點是,利用Server Core安裝Hyper-V的好處很明顯:去掉GUI Shell后,它的性能更好了。同時,代碼量越小,系統需要補丁的幾率也就越小--我覺得這點是最關鍵的,誰都知道,微軟的Windows絕對是補丁大王。
補:需要說明的是,目前,子分區仍然要通過父分區來訪問硬件資源,當子分區內的操作系統需要訪問硬件的時候,由子分區內的VSC(Virtualization Service Client)通過VMBUS將request發給父分區里的VSP(Virtualization Service Provider),然后由VSP提供實際的硬件服務。通過這種方式來使用硬件,相對于使用了硬件模擬的方法,其訪問性能就有了大幅度的提高。
【編輯推薦】