喬 然,胡 俊,榮 星
(北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,北京 100124)
作為一種全新的計(jì)算與服務(wù)模式,云計(jì)算技術(shù)在近年來(lái)得到了快速發(fā)展,并在社會(huì)生活中扮演著越來(lái)越重要的角色。然而云安全事故的頻發(fā)嚴(yán)重制約云計(jì)算產(chǎn)業(yè)的發(fā)展壯大,凸顯了云計(jì)算安全問(wèn)題的重要性[1]。
云計(jì)算面臨的安全風(fēng)險(xiǎn)是與其自身的技術(shù)特點(diǎn)和服務(wù)模式緊密關(guān)聯(lián)的。與傳統(tǒng)的網(wǎng)絡(luò)或集群應(yīng)用模式相比,虛擬化技術(shù)是云計(jì)算最突出的特點(diǎn)之一。虛擬化共享技術(shù)的引入,在提高資源利用效率的同時(shí),由于虛擬機(jī)環(huán)境的動(dòng)態(tài)性等特點(diǎn)以及技術(shù)漏洞所帶來(lái)的相對(duì)于物理環(huán)境的弱安全性,為虛擬化環(huán)境的安全留下了隱患。
此外,云計(jì)算的另外一個(gè)特點(diǎn)——開放性同樣為云計(jì)算安全帶來(lái)了挑戰(zhàn)。開放性主要體現(xiàn)在服務(wù)對(duì)用戶的開放性和內(nèi)部接口對(duì)外調(diào)用的開放性。開放性下身份驗(yàn)證機(jī)制相對(duì)薄弱,這就使得惡意用戶可以通過(guò)合法的途徑進(jìn)入云計(jì)算環(huán)境并進(jìn)行攻擊以竊取需要的信息,良性的云計(jì)算環(huán)境也可能被非法用戶用于不正當(dāng)用途。其中,虛擬機(jī)系統(tǒng)作為云計(jì)算的基礎(chǔ)設(shè)施又會(huì)成為這些攻擊的一個(gè)主要目標(biāo)。
鑒于以上事實(shí),如何建立有效的虛擬機(jī)安全機(jī)制就成為了云計(jì)算虛擬化安全研究的一個(gè)重要課題。然而,之前針對(duì)虛擬化安全的研究工作大多是針對(duì)單機(jī)虛擬化環(huán)境,難以適應(yīng)云計(jì)算場(chǎng)景的要求。本文根據(jù)云計(jì)算環(huán)境的要求,設(shè)計(jì)集中管理、分布式實(shí)施的云計(jì)算強(qiáng)制訪問(wèn)控制,以及基于云計(jì)算資源控制的安全隔離機(jī)制,來(lái)保護(hù)客戶虛擬機(jī)的安全。
云計(jì)算虛擬化技術(shù)與傳統(tǒng)虛擬化最大的不同就是開放性帶來(lái)的多租戶共享計(jì)算資源,整個(gè)虛擬化平臺(tái)或客戶虛擬機(jī)受到惡意用戶從內(nèi)部攻擊的可能性就會(huì)大幅提高。目前,云計(jì)算虛擬化面臨的主要安全威脅有虛擬機(jī)逃逸及隱通道信息泄露等[2-3]。
在傳統(tǒng)虛擬化技術(shù)中,針對(duì)虛擬機(jī)逃逸大多采用監(jiān)控的方式來(lái)發(fā)現(xiàn)并阻止危險(xiǎn)的發(fā)生。監(jiān)控機(jī)制的一種思路通過(guò)虛擬機(jī)環(huán)境所提供的Hypervisor層從客戶虛擬機(jī)所處環(huán)境之外對(duì)其進(jìn)行監(jiān)控。這類機(jī)制可以有效地保護(hù)安全部件免遭篡改,同時(shí)這一方式對(duì)監(jiān)控環(huán)境的影響較小,方便透明實(shí)現(xiàn),在系統(tǒng)的兼容性上也有優(yōu)勢(shì)。但這種方式會(huì)存在語(yǔ)義斷層問(wèn)題?;谏鲜鏊悸穼?shí)現(xiàn)的客戶虛擬機(jī)保護(hù)機(jī)制主要有:Antfarm[4],sHype[5],XenAccess[6],VMWatcher[7]等。
然而云計(jì)算與傳統(tǒng)單機(jī)虛擬化環(huán)境架構(gòu)的不同,控制權(quán)由Hypervisor 向控制節(jié)點(diǎn)Controller 轉(zhuǎn)移。傳統(tǒng)的虛擬機(jī)監(jiān)控機(jī)制設(shè)計(jì)在計(jì)算節(jié)點(diǎn)Hypervisor 中,難以有效與云控制節(jié)點(diǎn)上虛擬機(jī)管理控制流程銜接,會(huì)出現(xiàn)安全鏈斷裂而無(wú)法保證虛擬機(jī)整個(gè)生命周期的安全,并不能很好地在云計(jì)算場(chǎng)景中發(fā)揮作用。新的云計(jì)算虛擬機(jī)監(jiān)控機(jī)制應(yīng)是一種集中管理,分布式實(shí)施的監(jiān)控機(jī)制。在控制節(jié)點(diǎn)增加對(duì)計(jì)算節(jié)點(diǎn)監(jiān)控機(jī)制的管理和配置,并且介入虛擬機(jī)創(chuàng)建流程,對(duì)虛擬機(jī)整個(gè)生命周期提供保護(hù),而訪問(wèn)控制的具體執(zhí)行仍在計(jì)算節(jié)點(diǎn)上。
同樣,對(duì)于隱通道導(dǎo)致的信息泄露的問(wèn)題,傳統(tǒng)虛擬化環(huán)境由于虛擬機(jī)不可避免地共享同一物理平臺(tái),此類問(wèn)題難以得到很好的解決。在云計(jì)算這一定位于商用的服務(wù)模式中,通過(guò)這一方式嘗試竊取其他用戶信息的情況大多存在于利益相關(guān)或有利益沖突的用戶間。并且此類用戶大多會(huì)意識(shí)到彼此的存在,這也為解決這一問(wèn)題提供了突破口??梢钥紤]利用云計(jì)算多計(jì)算節(jié)點(diǎn)架構(gòu),通過(guò)控制計(jì)算節(jié)點(diǎn)與虛擬機(jī)間的關(guān)系進(jìn)行虛擬機(jī)隔離,來(lái)阻斷信息流進(jìn)而克服隱通道問(wèn)題。
本文采用了集中管理、分布式執(zhí)行的云計(jì)算訪問(wèn)控制機(jī)制,與基于云計(jì)算資源控制的隔離機(jī)制相結(jié)合,來(lái)保證云計(jì)算虛擬化平臺(tái)中客戶虛擬機(jī)的安全。
系統(tǒng)主要由2 個(gè)部分功能組成:(1)集中管理、分布式實(shí)施的訪問(wèn)控制功能;(2)基于云資源控制的隔離功能。2 個(gè)安全功能由統(tǒng)一的安全管理模塊進(jìn)行配置管理并提供輔助功能。整個(gè)系統(tǒng)劃分為3 個(gè)部分:安全管理,訪問(wèn)控制機(jī)制及隔離機(jī)制。系統(tǒng)架構(gòu)如圖1 所示。
圖1 系統(tǒng)總體架構(gòu)設(shè)計(jì)
本文的訪問(wèn)控制機(jī)制基于STE 模型,執(zhí)行在計(jì)算節(jié)點(diǎn)虛擬化層,直接監(jiān)控虛擬機(jī)對(duì)虛擬資源的訪問(wèn)。但對(duì)訪問(wèn)控制的管理工作存在于云管理節(jié)點(diǎn),這樣就可以有更加全面完整的視角監(jiān)控虛擬機(jī)在云中創(chuàng)建流程,從而可以在虛擬機(jī)生命周期開始就配置訪問(wèn)控制機(jī)制對(duì)其進(jìn)行保護(hù)。這一機(jī)制的工作原理是:安全管理模塊會(huì)在虛擬機(jī)創(chuàng)建時(shí)調(diào)用訪問(wèn)控制模塊,為目標(biāo)虛擬機(jī)及虛擬資源添加標(biāo)簽。在Hypervisor 中虛擬機(jī)對(duì)虛擬資源的訪問(wèn)操作處理中已加入鉤子函數(shù),每當(dāng)虛擬機(jī)需要對(duì)虛擬資源進(jìn)行訪問(wèn)時(shí),鉤子函數(shù)會(huì)截獲這一訪問(wèn)請(qǐng)求,并判斷虛擬機(jī)是否具有訪問(wèn)權(quán)限。本文中訪問(wèn)控制機(jī)制的目的是發(fā)現(xiàn)惡意用戶行為,實(shí)現(xiàn)對(duì)虛擬資源的保護(hù)。本文訪問(wèn)控制解決了將一般虛擬機(jī)監(jiān)控機(jī)制運(yùn)用在云環(huán)境中時(shí)監(jiān)控機(jī)制運(yùn)行在計(jì)算節(jié)點(diǎn)時(shí)與控制節(jié)點(diǎn)間的信息斷層問(wèn)題。
基于云資源控制的隔離機(jī)制實(shí)現(xiàn)了中國(guó)墻模型,工作在云控制節(jié)點(diǎn)上,通過(guò)控制虛擬機(jī)啟動(dòng)過(guò)程的基礎(chǔ)設(shè)施資源(即計(jì)算節(jié)點(diǎn))分配來(lái)隔離虛擬機(jī),而非對(duì)虛擬機(jī)的直接保護(hù),如圖1 虛線部分所示?;谠朴?jì)算資源控制方式的隔離機(jī)制就是在虛擬機(jī)創(chuàng)建或遷移時(shí),控制計(jì)算節(jié)點(diǎn)與虛擬機(jī)間的關(guān)系,根據(jù)用戶提供的可能會(huì)與自己存在利益關(guān)系的其他用戶信息,將特定的計(jì)算節(jié)點(diǎn)分配給虛擬機(jī),使虛擬機(jī)運(yùn)行在沒(méi)有其他利益相關(guān)用戶虛擬機(jī)的計(jì)算節(jié)點(diǎn)上,從而避免信息泄露。該機(jī)制從虛擬機(jī)創(chuàng)建通過(guò)介入虛擬機(jī)的創(chuàng)建和遷移過(guò)程,將利益相關(guān)用戶的虛擬機(jī)建立在不同的計(jì)算節(jié)點(diǎn)上進(jìn)行隔離,目的是杜絕隱通道帶來(lái)的非法信息流動(dòng)。
這2 種安全機(jī)制工作在云計(jì)算不同的層次,訪問(wèn)控制機(jī)制主要對(duì)客戶虛擬機(jī)資源提供運(yùn)行時(shí)的保護(hù),而隔離機(jī)制提供一種啟動(dòng)前的預(yù)保護(hù)來(lái)解決隱通道問(wèn)題,相互配合對(duì)客戶虛擬機(jī)進(jìn)行保護(hù)。從虛擬機(jī)創(chuàng)建流程開始,安全機(jī)制會(huì)對(duì)整個(gè)虛擬機(jī)的生命周期進(jìn)行保護(hù)。并由統(tǒng)一的安全管理模塊進(jìn)行安全數(shù)據(jù)維護(hù)、安全策略配置等管理及輔助工作,使得2 種安全機(jī)制可以有效地協(xié)同運(yùn)行在云計(jì)算環(huán)境中。
安全管理模塊運(yùn)行在云控制節(jié)點(diǎn)上,負(fù)責(zé)對(duì)本文中的訪問(wèn)控制機(jī)制與隔離機(jī)制進(jìn)行統(tǒng)一管理及輔助功能,包括維護(hù)云平臺(tái)安全策略、用戶標(biāo)簽相關(guān)等數(shù)據(jù),管理訪問(wèn)控制與隔離機(jī)制等。
3.2.1 標(biāo)簽設(shè)計(jì)及安全策略
用戶標(biāo)記及安全策略是本文安全機(jī)制工作的基礎(chǔ),文中的2 種安全機(jī)制的正常工作都依賴于安全用戶標(biāo)記,而這也正是本文將隔離機(jī)制與訪問(wèn)控制機(jī)制相結(jié)合的切入點(diǎn)。本文提出了自己的安全標(biāo)記設(shè)計(jì)及生成方法,使其能夠同時(shí)滿足STE 與中國(guó)墻模型的要求。
前文提到本文中的訪問(wèn)控制基于STE 模型,而隔離機(jī)制基于中國(guó)墻模型。STE 模型是TE 模型[8]的簡(jiǎn)化模型,其思想是將系統(tǒng)中的主體被劃分成若干不同的域,定義不同的域標(biāo)簽賦予每個(gè)主體及每個(gè)客體。STE 模型訪問(wèn)控制的執(zhí)行方法就是根據(jù)主體和客體的標(biāo)簽是否相同進(jìn)行訪問(wèn)行為控制。而中國(guó)墻策略模型是一種經(jīng)典的隔離機(jī)制模型,用于避免利害相關(guān)的信息進(jìn)入同一個(gè)控制域中。在中國(guó)墻模型中,實(shí)現(xiàn)一個(gè)運(yùn)行態(tài)排除規(guī)則,這一規(guī)則定義一組互斥的負(fù)載類型標(biāo)簽,即一個(gè)沖突集;任意時(shí)刻,在一個(gè)Hypervisor 平臺(tái)上只允許加載沖突集一種標(biāo)簽的負(fù)載[9]。本文就是將STE 的標(biāo)簽與中國(guó)墻的標(biāo)簽進(jìn)行整合,使用同一安全標(biāo)記同時(shí)支持2 種安全機(jī)制。
在用戶標(biāo)簽的設(shè)計(jì)上,考慮到云計(jì)算不僅會(huì)存在個(gè)人用戶,還需要同時(shí)滿足組織機(jī)構(gòu)用戶的安全要求。云計(jì)算中一些組織機(jī)構(gòu)希望能夠與和自己有利益關(guān)系的其他組織的虛擬機(jī)進(jìn)行隔離,但不清楚對(duì)方組織內(nèi)部的結(jié)構(gòu),此時(shí)就需要進(jìn)行組織間的隔離。本文設(shè)計(jì)了二級(jí)用戶標(biāo)簽作為一個(gè)用戶的唯一標(biāo)志,其形式為(組織標(biāo)簽.個(gè)人標(biāo)簽)。這樣設(shè)計(jì)既可以滿足云計(jì)算從組織角度進(jìn)行隔離的要求,又能將用戶標(biāo)簽精確到每一個(gè)用戶可以為細(xì)粒度的訪問(wèn)控制提供基礎(chǔ)。
標(biāo)簽的生成方法可以是直接對(duì)組織名和用戶名的直接引用也可采用對(duì)用戶名和組織名計(jì)算摘要值作為標(biāo)簽的方式,例如對(duì)用戶名和組織名稱進(jìn)行MD5 運(yùn)算作為對(duì)應(yīng)的用戶和組織標(biāo)記,這樣可以使得用戶標(biāo)簽具有唯一性。用戶標(biāo)簽在用戶向云平臺(tái)注冊(cè)時(shí)生成,從用戶虛擬機(jī)建立起就對(duì)虛擬機(jī)及屬于該虛擬機(jī)的資源進(jìn)行標(biāo)記,對(duì)客戶虛擬機(jī)整個(gè)生命周期進(jìn)行保護(hù)。
設(shè)計(jì)了用戶標(biāo)簽后,還需要對(duì)應(yīng)的安全策略來(lái)指導(dǎo)安全機(jī)制的執(zhí)行。由于統(tǒng)一了安全標(biāo)簽,同樣需要設(shè)計(jì)統(tǒng)一的云平臺(tái)安全策略。訪問(wèn)控制的STE策略相對(duì)簡(jiǎn)單,只需要告知計(jì)算節(jié)點(diǎn)所有用戶標(biāo)簽就可以執(zhí)行訪問(wèn)控制。而中國(guó)墻策略定義了一組沖突集,沖突集信息是執(zhí)行隔離控制的根本依據(jù)。在本文場(chǎng)景下,沖突集信息應(yīng)是用戶提出需要與自己虛擬機(jī)進(jìn)行隔離的用戶名稱集合,反映自己的安全需求。每個(gè)云用戶應(yīng)提出自己的沖突集,并由安全管理節(jié)點(diǎn)將所有用戶的需求整合成統(tǒng)一安全策略并部署到云平臺(tái)中。
3.2.2 安全管理模塊設(shè)計(jì)
安全管理模塊的主要工作有4 個(gè)方面:(1)管理云用戶標(biāo)簽;(2)管理云平臺(tái)安全策略;(3)向新建虛擬機(jī)添加標(biāo)簽開始訪問(wèn)控制保護(hù);(4)維護(hù)云平臺(tái)各計(jì)算節(jié)點(diǎn)虛擬機(jī)運(yùn)行情況。在設(shè)計(jì)上,向計(jì)算節(jié)點(diǎn)發(fā)出虛擬機(jī)及資源標(biāo)簽添加命令的功能被放在管理模塊,彌補(bǔ)了前文描述過(guò)的從計(jì)算節(jié)點(diǎn)進(jìn)行管理會(huì)導(dǎo)致的安全鏈斷裂問(wèn)題,管理模塊有更好的視角監(jiān)控虛擬機(jī)啟動(dòng)過(guò)程及用戶信息。此外,安全管理模塊還需要維護(hù)一個(gè)表來(lái)記錄當(dāng)前云計(jì)算所有計(jì)算節(jié)點(diǎn)運(yùn)行了哪些虛擬機(jī)以及這些虛擬機(jī)的標(biāo)簽,為隔離機(jī)制提供支持。該模塊需要實(shí)現(xiàn)的具體功能主要有:
(1) 向上層提供接口接收經(jīng)中間件層發(fā)來(lái)的用戶注冊(cè)信息及沖突集要求;
(2) 根據(jù)用戶的信息進(jìn)行運(yùn)算,得到兩級(jí)用戶安全標(biāo)記,并記錄;
(3) 整合所有用戶標(biāo)簽及沖突集要求,形成安全策略文檔;
(4) 將安全策略文件部署給訪問(wèn)控制及隔離模塊;
(5) 向虛擬機(jī)啟動(dòng)過(guò)程提供各種信息支持;
(6) 與虛擬機(jī)建立命令協(xié)調(diào),調(diào)用計(jì)算節(jié)點(diǎn)訪問(wèn)控制功能添加主客體標(biāo)簽;
(7) 維護(hù)云平臺(tái)虛擬機(jī)運(yùn)行信息。
基于以上分析,本文安全管理模塊需要在虛擬機(jī)生命周期的3 個(gè)過(guò)程中介入進(jìn)行安全配置,使得訪問(wèn)控制機(jī)制和隔離機(jī)制可以對(duì)云計(jì)算中的虛擬機(jī)進(jìn)行保護(hù)。得到該模塊的工作流程如圖2 所示。
圖2 安全管理模塊工作流程
訪問(wèn)控制機(jī)制的具體執(zhí)行在計(jì)算節(jié)點(diǎn)上,由2 個(gè)功能模塊組成。
3.3.1 訪問(wèn)控制配置模塊
訪問(wèn)控制配置模塊工作在各個(gè)計(jì)算節(jié)點(diǎn)的宿主操作系統(tǒng)Dom0 中,負(fù)責(zé)與云控制節(jié)點(diǎn)安全管理模塊通信,接收命令完成對(duì)本計(jì)算節(jié)點(diǎn)的訪問(wèn)控制執(zhí)行機(jī)制的配置及管理。該模塊是將在云計(jì)算環(huán)境中實(shí)現(xiàn)訪問(wèn)控制的關(guān)鍵部件之一,起到了紐帶作用,訪問(wèn)控制配置模塊具體需要完成的工作有:(1)接收控制節(jié)點(diǎn)安全管理模塊發(fā)送的命令及數(shù)據(jù),包括安全策略數(shù)據(jù)及更新命令、用戶虛擬機(jī)標(biāo)簽的添加等;(2)當(dāng)通信模塊接收到這些命令后,需要對(duì)這些數(shù)據(jù)進(jìn)行處理并調(diào)用接口部署到Hypervisor;(3)命令執(zhí)行完成后,通信模塊得到執(zhí)行模塊返回的結(jié)果或數(shù)據(jù),然后對(duì)結(jié)果或數(shù)據(jù)進(jìn)行包裝,發(fā)送到控制節(jié)點(diǎn)的管理模塊。工作流程如圖3 所示。
圖3 訪問(wèn)控制配置模塊工作流程
3.3.2 訪問(wèn)控制執(zhí)行模塊
訪問(wèn)控制執(zhí)行模塊負(fù)責(zé)訪問(wèn)控制機(jī)制的具體執(zhí)行。運(yùn)行在Hypervisor 層,訪問(wèn)控制執(zhí)行模塊可以更好地監(jiān)控到客戶虛擬機(jī)對(duì)系統(tǒng)資源的訪問(wèn),同時(shí)也可以避免遭受破壞,因?yàn)镠ypervisor 有很高的系統(tǒng)權(quán)限。
訪問(wèn)控制執(zhí)行模塊的基本工作就是,通過(guò)鉤子函數(shù)在計(jì)算節(jié)點(diǎn)上對(duì)虛擬機(jī)資源的訪問(wèn)進(jìn)行強(qiáng)制訪問(wèn)控制。當(dāng)計(jì)算節(jié)點(diǎn)的虛擬機(jī)需要對(duì)任意系統(tǒng)資源進(jìn)行訪問(wèn)時(shí),訪問(wèn)控制執(zhí)行模塊會(huì)截獲這一訪問(wèn)請(qǐng)求,之后根據(jù)配置模塊加載的安全策略來(lái)判斷是否允許該訪問(wèn)。訪問(wèn)控制工作流程如圖4 所示。
圖4 訪問(wèn)控制執(zhí)行模塊工作流程
本文中隔離機(jī)制的設(shè)計(jì)思路是采用對(duì)云計(jì)算資源進(jìn)行控制的方式來(lái)實(shí)現(xiàn)虛擬機(jī)的隔離,而這一過(guò)程對(duì)用戶是完全透明的。隔離機(jī)制工作在云控制節(jié)點(diǎn)上,依賴于云計(jì)算提供的多計(jì)算節(jié)點(diǎn)架構(gòu)實(shí)現(xiàn)功能。
前文已經(jīng)介紹過(guò)隔離機(jī)制基于中國(guó)墻策略模型。隔離機(jī)制通過(guò)對(duì)云計(jì)算節(jié)點(diǎn)進(jìn)行資源控制,根據(jù)用戶提供的可安全要求,將這些利益相關(guān)用戶的虛擬機(jī)運(yùn)行在不同計(jì)算節(jié)點(diǎn)上對(duì)它們進(jìn)行隔離,這樣就可以在很大程度上避免惡意用戶對(duì)同一物理平臺(tái)上其他利益相關(guān)用戶的信息進(jìn)行竊取。在一臺(tái)虛擬機(jī)創(chuàng)建或遷移時(shí),隔離機(jī)制會(huì)根據(jù)該虛擬機(jī)標(biāo)簽、沖突集信息以及云平臺(tái)虛擬機(jī)運(yùn)行狀態(tài),判斷哪些計(jì)算節(jié)點(diǎn)正在運(yùn)行與其有安全利益沖突的虛擬機(jī),使得新虛擬機(jī)不會(huì)被創(chuàng)建在這些計(jì)算節(jié)點(diǎn)上,從而避免非法的信息流動(dòng)。
本文的設(shè)計(jì)中,隔離控制流程工作在控制節(jié)點(diǎn)上,在虛擬機(jī)創(chuàng)建或遷移時(shí)對(duì)其進(jìn)行調(diào)度,以確保其能工作在安全的計(jì)算節(jié)點(diǎn)上。為了保證這一功能的實(shí)現(xiàn),除了需要安全管理模塊提供的管理、策略部署和數(shù)據(jù)維護(hù)等功能的支持外,還需要對(duì)云計(jì)算平臺(tái)虛擬機(jī)的建立流程進(jìn)行改變,增加一個(gè)隔離調(diào)度控制流程。圖5 為隔離機(jī)制的工作流程。
圖5 隔離控制流程
如圖5 所示,虛線左側(cè)中為一般云計(jì)算虛擬機(jī)創(chuàng)建流程,而右邊則是本文中為了實(shí)現(xiàn)隔離機(jī)制增加的工作流程。本機(jī)制的具體工作流程描述如下:
(1) 通過(guò)API 調(diào)用發(fā)來(lái)啟動(dòng)虛擬機(jī)命令及部分虛擬機(jī)基本要求,如資源要求等;
(2) 云控制節(jié)點(diǎn)收到這些數(shù)據(jù)后會(huì)執(zhí)行啟動(dòng)初始化工作,分配其他基本信息,如虛擬機(jī)UUID 等;
(3) 云控制節(jié)點(diǎn)將根據(jù)用戶對(duì)資源如內(nèi)存等的要求開始對(duì)計(jì)算節(jié)點(diǎn)篩選,得到滿足用戶資源要求的計(jì)算節(jié)點(diǎn)列表;
(4) 完成以上工作后由開始隔離機(jī)制控制流程進(jìn)行處理。通過(guò)隔離機(jī)制提供的接口將虛擬機(jī)信息及(3)所選出的計(jì)算節(jié)點(diǎn)列表傳遞到該流程中;
(5) 隔離控制流程從本文的安全管理模塊中獲取虛擬機(jī)的安全標(biāo)簽等信息;
(6) 隔離控制流程根據(jù)平臺(tái)各計(jì)算節(jié)點(diǎn)虛擬機(jī)運(yùn)行狀態(tài)表,對(duì)要建立的虛擬機(jī)標(biāo)簽及安全策略進(jìn)行比對(duì),挑選出符合安全要求的計(jì)算節(jié)點(diǎn)列表并返回;
(7) 云平臺(tái)管理程序從(5)返回的列表中選出一個(gè)計(jì)算節(jié)點(diǎn)為建立虛擬機(jī)的目標(biāo)節(jié)點(diǎn);
(8) 安全管理模塊將目標(biāo)計(jì)算節(jié)點(diǎn)及虛擬機(jī)標(biāo)簽信息記錄,以備后續(xù)虛擬機(jī)創(chuàng)建流程使用;
(9) 云平臺(tái)管理程序下發(fā)虛擬機(jī)創(chuàng)建命令及數(shù)據(jù)到目標(biāo)節(jié)點(diǎn),完成虛擬機(jī)的創(chuàng)建。
本文在基于XEN 虛擬化環(huán)境的OPENSTACK云平臺(tái)上實(shí)現(xiàn)了上述安全機(jī)制。在管理節(jié)點(diǎn)實(shí)現(xiàn)了安全管理模塊和基于云計(jì)算資源控制的隔離機(jī)制,在計(jì)算節(jié)點(diǎn)實(shí)現(xiàn)了訪問(wèn)控制配置模塊和訪問(wèn)控制執(zhí)行模塊。
安全管理模塊需要提供接口響應(yīng)對(duì)其的調(diào)用請(qǐng)求,應(yīng)作為一個(gè)守護(hù)進(jìn)程存在于控制節(jié)點(diǎn)中來(lái)監(jiān)聽來(lái)自云平臺(tái)其他組件的連接。采用socket 通信作為提供接口的方式。
連接建立后主程序會(huì)判斷發(fā)送來(lái)的操作,主要有用戶注冊(cè)生成、虛擬機(jī)建立開始和結(jié)束操作,然后調(diào)用響應(yīng)的功能函數(shù)進(jìn)行處理來(lái)完成操作。實(shí)現(xiàn)了manage_core 類來(lái)完成安全管理模塊所需要進(jìn)行的所有管理操作。
最后,安全管理模塊在與計(jì)算節(jié)點(diǎn)通信功能的設(shè)計(jì)上不會(huì)維護(hù)計(jì)算節(jié)點(diǎn)的IP 地址等信息,而是通過(guò)調(diào)用OPENSTACK 的RESTFUL[10]接口來(lái)獲取信息,將數(shù)據(jù)及命令下發(fā)。
4.2.1 訪問(wèn)控制配置模塊
訪問(wèn)控制配置模塊在實(shí)現(xiàn)上同樣作為一個(gè)守護(hù)進(jìn)程常駐各計(jì)算節(jié)點(diǎn)的內(nèi)存中,響應(yīng)云控制節(jié)點(diǎn)發(fā)出的命令。本模塊針對(duì)云控制節(jié)點(diǎn)的要求實(shí)現(xiàn)了對(duì)虛擬機(jī)及資源標(biāo)簽的添加、安全策略的加載及變更功能。在與云控制節(jié)點(diǎn)的通信上通過(guò)socket 機(jī)制監(jiān)聽端口,而在對(duì)下層訪問(wèn)控制執(zhí)行模塊的管理上采用了調(diào)用XenAPI[11]的方式。
啟動(dòng)訪問(wèn)控制通信模塊程序后會(huì)監(jiān)聽socket 端口并初始化一個(gè)mac_conf 類的對(duì)象來(lái)處理各種云控制節(jié)點(diǎn)發(fā)來(lái)的命令。在mac_conf 對(duì)象初始化過(guò)程中會(huì)與XenAPI 進(jìn)行連接。
當(dāng)訪問(wèn)控制通信模塊主程序接收到來(lái)自云控制節(jié)點(diǎn)的命令時(shí),會(huì)調(diào)用mac_conf 類對(duì)應(yīng)的方法進(jìn)行處理。例如,在需要對(duì)虛擬機(jī)標(biāo)簽進(jìn)行變更時(shí),首先會(huì)對(duì)屬于該虛擬機(jī)的資源標(biāo)簽進(jìn)行修改,如VIF 和vDisk 兩類,之后再完成對(duì)虛擬機(jī)標(biāo)簽的修改。此外,還實(shí)現(xiàn)一些其他的輔助操作,如掛起、恢復(fù)虛擬機(jī)等對(duì)云計(jì)算訪問(wèn)控制機(jī)制提供支持。
4.2.2 訪問(wèn)控制執(zhí)行模塊
本文的訪問(wèn)控制執(zhí)行模塊依托于XEN 提供的XSM 架構(gòu)以及sHype 機(jī)制來(lái)實(shí)現(xiàn)。sHype 是IBM開發(fā)的一種基于XSM 架構(gòu)實(shí)現(xiàn)的安全機(jī)制,它已與XEN 代碼高度結(jié)合,為XEN 的資源訪問(wèn)提供強(qiáng)制訪問(wèn)控制機(jī)制,并且不會(huì)帶來(lái)過(guò)高的系統(tǒng)開銷。sHype 架構(gòu)如圖6 所示。
圖6 sHype 架構(gòu)
本文中訪問(wèn)控制執(zhí)行模塊只需要運(yùn)行在底層的對(duì)鉤子函數(shù)的處理等部分,而不需要原來(lái)sHype 管理部分的功能。因此,在本文中對(duì)sHype 實(shí)現(xiàn)的功能進(jìn)行了簡(jiǎn)化,保留對(duì)鉤子函數(shù)的實(shí)現(xiàn),而將管理部分與訪問(wèn)控制通信模塊對(duì)接,由XenAPI 直接調(diào)用,避免了很多配置不當(dāng)帶來(lái)的錯(cuò)誤。對(duì)其進(jìn)行精簡(jiǎn)作為訪問(wèn)控制執(zhí)行模塊。
本文隔離控制流程的實(shí)現(xiàn)依賴于OPENSTACK提供的Filters 過(guò)濾器機(jī)制[12]。OPENSTACK 在創(chuàng)建不同虛擬機(jī)的過(guò)程中會(huì)根據(jù)虛擬機(jī)不同的資源等要求從若干計(jì)算節(jié)點(diǎn)中篩選出符合要求、可以建立該虛擬機(jī)的計(jì)算節(jié)點(diǎn)。而Filters 機(jī)制顧名思義是通過(guò)過(guò)濾的方式將不符合要求的計(jì)算節(jié)點(diǎn)從計(jì)算節(jié)點(diǎn)列表中過(guò)濾出去。Filters 機(jī)制提供了一種統(tǒng)一的框架,可以編寫自己的Filter 并對(duì)虛擬機(jī)創(chuàng)建流程進(jìn)行修改。具體實(shí)現(xiàn)流程如下:
需要對(duì)OPENSTACK 創(chuàng)建虛擬機(jī)的流程進(jìn)行修改,在創(chuàng)建虛擬機(jī)時(shí)要能夠調(diào)用安全管理模塊,根據(jù)要建立的目標(biāo)虛擬機(jī)的用戶信息獲取對(duì)應(yīng)的安全標(biāo)簽,之后與系統(tǒng)分配的VM UUID 形成一個(gè)虛擬機(jī)名稱、標(biāo)簽以及UUID 三元組并記錄。
在完成一系列其他配置和操作后,創(chuàng)建虛擬機(jī)的流程會(huì)轉(zhuǎn)到scheduler 進(jìn)程來(lái)對(duì)計(jì)算節(jié)點(diǎn)列表進(jìn)行篩選,隔離控制流程主要實(shí)現(xiàn)也就在這一部分。scheduler 進(jìn)程的調(diào)用配置好的過(guò)濾器Filters 對(duì)計(jì)算節(jié)點(diǎn)處理,通過(guò)所有Filters 則被認(rèn)為可以啟動(dòng)目標(biāo)虛擬機(jī)。因此,實(shí)現(xiàn)了一個(gè)Filter 進(jìn)行隔離控制,保證不符合安全要求,即存在于目標(biāo)虛擬機(jī)安全標(biāo)簽沖突的虛擬機(jī)的計(jì)算節(jié)點(diǎn)無(wú)法通過(guò)篩選。實(shí)現(xiàn)的filter 的主要工作流程如下:
(1) 獲取以參數(shù)形式傳入的目標(biāo)虛擬機(jī)uuid 及安全標(biāo)簽;
(2) 獲取配置好的沖突集信息;
(3) 判斷目標(biāo)虛擬機(jī)標(biāo)簽是否存在于任意沖突集中,若無(wú)返回真,說(shuō)明目標(biāo)虛擬機(jī)不與任何虛擬機(jī)沖突,若否轉(zhuǎn)到(4);
(4) 判斷運(yùn)行在當(dāng)前節(jié)點(diǎn)上的虛擬機(jī)的標(biāo)簽中是否有與目標(biāo)虛擬機(jī)標(biāo)簽沖突的,若存在,返回假,目標(biāo)虛擬機(jī)無(wú)法在本節(jié)點(diǎn)啟動(dòng);若不存在,返回真,目標(biāo)虛擬機(jī)可以在本節(jié)點(diǎn)啟動(dòng)。
為了驗(yàn)證本文中訪問(wèn)控制機(jī)制的有效性和實(shí)用性,設(shè)計(jì)了簡(jiǎn)單的實(shí)驗(yàn)來(lái)對(duì)其主要功能進(jìn)行測(cè)試。首先建立一個(gè)包含1 臺(tái)控制節(jié)點(diǎn)、3 臺(tái)計(jì)算節(jié)點(diǎn)folsom-compute,ubuntu-compute 和openstack-compute的OPENSTACK 云 計(jì) 算 環(huán) 境。其 中,openstackcompute 計(jì)算節(jié)點(diǎn)配置為CPU Intel Xeon E7320,內(nèi)存12 GB,硬盤容量400 GB;folsom-compute 計(jì)算節(jié)點(diǎn)配置為Intel Core2 6300,內(nèi)存2 GB,硬盤容量120 GB;ubuntu-compute 計(jì)算節(jié)點(diǎn)為Core2 6300,內(nèi)存4 GB,硬盤容量120 GB。
首先,在未應(yīng)用本文安全機(jī)制的情況下,在該云環(huán)境中建立4 臺(tái)虛擬機(jī)。由于openstack-compute 計(jì)算節(jié)點(diǎn)資源遠(yuǎn)多于folsom-compute 及ubuntu-compute節(jié)點(diǎn),控制節(jié)點(diǎn)會(huì)自動(dòng)將4 臺(tái)虛擬機(jī)均下發(fā)到openstack-compute 節(jié)點(diǎn)。并且由于沒(méi)有訪問(wèn)控制機(jī)制,虛擬機(jī)間可以相互訪問(wèn)虛擬磁盤等資源。例如將Test_vm2 的磁盤掛載給Test_vm1,而Test_vm1 可以正常訪問(wèn),這可以模擬當(dāng)計(jì)算節(jié)點(diǎn)特權(quán)被竊取時(shí)的攻擊。實(shí)驗(yàn)結(jié)果得出:虛擬機(jī)Test_vm1,Test_vm2,Test_vm3,Test_vm4,資源要求為512 GB Ram,內(nèi)存10 GB,所在計(jì)算節(jié)點(diǎn)為openstack-compute,資源訪問(wèn)無(wú)限制。
之后,在該云環(huán)境中啟用了本文實(shí)現(xiàn)的安全機(jī)制進(jìn)行對(duì)比實(shí)驗(yàn)。通過(guò)安全機(jī)制提供的接口設(shè)定3 個(gè)安全標(biāo)簽corpA.d1,corpA.d2 和corpA.d3 及1 個(gè)包含這3 個(gè)標(biāo)簽的沖突集conf1,并將包含這些信息的安全策略文件部署在云環(huán)境中。隨后,通過(guò)云控制節(jié)點(diǎn)建立4 臺(tái)資源要求與上一組完全相同的虛擬機(jī),其中虛擬機(jī)Test_vm5 標(biāo)簽為corpA.d1,Test_vm6 標(biāo)簽為corpA.d2,虛擬機(jī)Test_vm7,Test_vm8 標(biāo)簽為corpA.d3。實(shí)驗(yàn)結(jié)果如表1 所示,其中,資源要求為512 GB Ram,內(nèi)存10 GB。
表1 本文安全機(jī)制的應(yīng)用情況
從實(shí)驗(yàn)結(jié)果可以看出,當(dāng)在openstack-compute計(jì)算節(jié)點(diǎn)建立安全標(biāo)簽為corpA.d1 的虛擬機(jī)Test_vm5 后,在控制節(jié)點(diǎn)實(shí)現(xiàn)的隔離控制流程會(huì)發(fā)揮作用,根據(jù)中國(guó)墻策略會(huì)將下一個(gè)建立的虛擬機(jī)Test_vm6 發(fā)送到無(wú)沖突虛擬機(jī)且資源更多的ubuntucompute 計(jì)算節(jié)點(diǎn)。同理,隨后建立的Test_vm7,Test_vm8 也會(huì)由于隔離機(jī)制的作用,被分配到folsom-compute 節(jié)點(diǎn)。
本文針對(duì)云計(jì)算虛擬化技術(shù)存在的安全問(wèn)題進(jìn)行研究,結(jié)合云計(jì)算資源共享及開放性的特點(diǎn),實(shí)現(xiàn)了云計(jì)算環(huán)境下的強(qiáng)制訪問(wèn)控制和隔離機(jī)制2 種安全機(jī)制來(lái)保證客戶虛擬機(jī)系統(tǒng)的安全。建立了集中管理、分布式實(shí)施的云計(jì)算訪問(wèn)控制機(jī)制,以及基于云計(jì)算資源控制的隔離機(jī)制,并編程實(shí)現(xiàn)了云計(jì)算上述及所依賴的功能。本文實(shí)現(xiàn)的安全機(jī)制從2 個(gè)方面對(duì)云計(jì)算虛擬機(jī)安全進(jìn)行了加強(qiáng),實(shí)驗(yàn)結(jié)果表明對(duì)提升云計(jì)算虛擬化安全性、保證客戶虛擬機(jī)安全有積極的作用。
然而,本文實(shí)現(xiàn)的安全機(jī)制只是軟件的安全機(jī)制。在當(dāng)前網(wǎng)絡(luò)和云計(jì)算安全形勢(shì)嚴(yán)峻的情況下,軟件安全機(jī)制需要與硬件機(jī)制相結(jié)合,如TPM/TCM 等才能更好地保證自身的安全。這也是本文安全機(jī)制有待提高和改進(jìn)的地方。
[1]馮登國(guó),張 敏,張 妍,等.云計(jì)算安全研究[J].軟件學(xué)報(bào),2011,22(1):71-83.
[2]Ristenpart T,Tromer E,Shacham H,et al.Hey,You,Get Off of My Cloud:Exploring Information Leakage in Third-party Compute Clouds[C]//Proceedings of the 16th ACM Conference on Computer and Communications Security.[ S.l.]:ACM Press,2009:199-212.
[3]吳敬征,丁麗萍,王永吉.云計(jì)算環(huán)境下隱蔽信道關(guān)鍵問(wèn)題研究[J].通信學(xué)報(bào),2011,32(9):184-203.
[4]Jones S T,Arpaci-Dusseau A C,Arpaci-Dusseau R H.Antfarm:Tracking Processes in a Virtual Machine Environment [C]//Proceedings of USENIX Annual Technical Conference.Berkeley,USA:[s.n.],2006:1-14.
[5]Sailer R,Jaeger T,Valdez E,et al.Building a MAC Based Security Architecture for the Xen Opensource Hypervisor [ C]//Proceedings of the 21st Annual Computer Security Applications Conference.[S.l.]:IEEE Press,2005:285-294.
[6]Payne B D,Carbone M,Lee W.Secure and Flexible Monitoring of Virtual Machines[C]//Proceedings of the 23rd Annual Computer Security Applications Conference.Piscataway,USA:IEEE Press,2007:386-397.
[7]Jiang Xuxian,Wang Xinyuan,Xu Dongyan.Stealthy Malware Detection Through VMM-based“out-of-thebox”Semantic View Reconstruction[C]//Proceedings of the 14th ACM Conference on Computer and Communications Security.New York,USA:ACM Press,2007:128-138.
[8]Badger L,Sterne D F,Sherman D L,et al.A Domain and Type Enforcement UNIX Prototype[J].USENIX Computing Systems,1996,9(1):47-83.
[9]石文昌.操作系統(tǒng)信任基的設(shè)計(jì)研究[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版,2010,35(5):505-508.
[10]Openstack API Complete Reference[EB/OL].(2014-01-30).http://api.openstack.org/api-ref-guides/bk-apiref.pdf.
[11]Xen Management API v1.0.6 [EB/OL].(2008-12-07).http://downloads.xen.org/Wiki/XenAPI/xenapi-1.0.6.pdf.
[12]OpenStack Compute Administration Guide[EB/OL].(2013-04-13).http://docs.openstack.org/grizzly/openstack-compute/admin/content/index.html.