喬 然,胡 俊,榮 星
(北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,北京 100124)
作為一種全新的計(jì)算與服務(wù)模式,云計(jì)算技術(shù)在近年來得到了快速發(fā)展,并在社會生活中扮演著越來越重要的角色。然而云安全事故的頻發(fā)嚴(yán)重制約云計(jì)算產(chǎn)業(yè)的發(fā)展壯大,凸顯了云計(jì)算安全問題的重要性[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)境的動態(tài)性等特點(diǎn)以及技術(shù)漏洞所帶來的相對于物理環(huán)境的弱安全性,為虛擬化環(huán)境的安全留下了隱患。
此外,云計(jì)算的另外一個(gè)特點(diǎn)——開放性同樣為云計(jì)算安全帶來了挑戰(zhàn)。開放性主要體現(xiàn)在服務(wù)對用戶的開放性和內(nèi)部接口對外調(diào)用的開放性。開放性下身份驗(yàn)證機(jī)制相對薄弱,這就使得惡意用戶可以通過合法的途徑進(jìn)入云計(jì)算環(huán)境并進(jìn)行攻擊以竊取需要的信息,良性的云計(jì)算環(huán)境也可能被非法用戶用于不正當(dāng)用途。其中,虛擬機(jī)系統(tǒng)作為云計(jì)算的基礎(chǔ)設(shè)施又會成為這些攻擊的一個(gè)主要目標(biāo)。
鑒于以上事實(shí),如何建立有效的虛擬機(jī)安全機(jī)制就成為了云計(jì)算虛擬化安全研究的一個(gè)重要課題。然而,之前針對虛擬化安全的研究工作大多是針對單機(jī)虛擬化環(huán)境,難以適應(yīng)云計(jì)算場景的要求。本文根據(jù)云計(jì)算環(huán)境的要求,設(shè)計(jì)集中管理、分布式實(shí)施的云計(jì)算強(qiáng)制訪問控制,以及基于云計(jì)算資源控制的安全隔離機(jī)制,來保護(hù)客戶虛擬機(jī)的安全。
云計(jì)算虛擬化技術(shù)與傳統(tǒng)虛擬化最大的不同就是開放性帶來的多租戶共享計(jì)算資源,整個(gè)虛擬化平臺或客戶虛擬機(jī)受到惡意用戶從內(nèi)部攻擊的可能性就會大幅提高。目前,云計(jì)算虛擬化面臨的主要安全威脅有虛擬機(jī)逃逸及隱通道信息泄露等[2-3]。
在傳統(tǒng)虛擬化技術(shù)中,針對虛擬機(jī)逃逸大多采用監(jiān)控的方式來發(fā)現(xiàn)并阻止危險(xiǎn)的發(fā)生。監(jiān)控機(jī)制的一種思路通過虛擬機(jī)環(huán)境所提供的Hypervisor層從客戶虛擬機(jī)所處環(huán)境之外對其進(jìn)行監(jiān)控。這類機(jī)制可以有效地保護(hù)安全部件免遭篡改,同時(shí)這一方式對監(jiān)控環(huán)境的影響較小,方便透明實(shí)現(xiàn),在系統(tǒng)的兼容性上也有優(yōu)勢。但這種方式會存在語義斷層問題?;谏鲜鏊悸穼?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ī)管理控制流程銜接,會出現(xiàn)安全鏈斷裂而無法保證虛擬機(jī)整個(gè)生命周期的安全,并不能很好地在云計(jì)算場景中發(fā)揮作用。新的云計(jì)算虛擬機(jī)監(jiān)控機(jī)制應(yīng)是一種集中管理,分布式實(shí)施的監(jiān)控機(jī)制。在控制節(jié)點(diǎn)增加對計(jì)算節(jié)點(diǎn)監(jiān)控機(jī)制的管理和配置,并且介入虛擬機(jī)創(chuàng)建流程,對虛擬機(jī)整個(gè)生命周期提供保護(hù),而訪問控制的具體執(zhí)行仍在計(jì)算節(jié)點(diǎn)上。
同樣,對于隱通道導(dǎo)致的信息泄露的問題,傳統(tǒng)虛擬化環(huán)境由于虛擬機(jī)不可避免地共享同一物理平臺,此類問題難以得到很好的解決。在云計(jì)算這一定位于商用的服務(wù)模式中,通過這一方式嘗試竊取其他用戶信息的情況大多存在于利益相關(guān)或有利益沖突的用戶間。并且此類用戶大多會意識到彼此的存在,這也為解決這一問題提供了突破口??梢钥紤]利用云計(jì)算多計(jì)算節(jié)點(diǎn)架構(gòu),通過控制計(jì)算節(jié)點(diǎn)與虛擬機(jī)間的關(guān)系進(jìn)行虛擬機(jī)隔離,來阻斷信息流進(jìn)而克服隱通道問題。
本文采用了集中管理、分布式執(zhí)行的云計(jì)算訪問控制機(jī)制,與基于云計(jì)算資源控制的隔離機(jī)制相結(jié)合,來保證云計(jì)算虛擬化平臺中客戶虛擬機(jī)的安全。
系統(tǒng)主要由2 個(gè)部分功能組成:(1)集中管理、分布式實(shí)施的訪問控制功能;(2)基于云資源控制的隔離功能。2 個(gè)安全功能由統(tǒng)一的安全管理模塊進(jìn)行配置管理并提供輔助功能。整個(gè)系統(tǒng)劃分為3 個(gè)部分:安全管理,訪問控制機(jī)制及隔離機(jī)制。系統(tǒng)架構(gòu)如圖1 所示。
圖1 系統(tǒng)總體架構(gòu)設(shè)計(jì)
本文的訪問控制機(jī)制基于STE 模型,執(zhí)行在計(jì)算節(jié)點(diǎn)虛擬化層,直接監(jiān)控虛擬機(jī)對虛擬資源的訪問。但對訪問控制的管理工作存在于云管理節(jié)點(diǎn),這樣就可以有更加全面完整的視角監(jiān)控虛擬機(jī)在云中創(chuàng)建流程,從而可以在虛擬機(jī)生命周期開始就配置訪問控制機(jī)制對其進(jìn)行保護(hù)。這一機(jī)制的工作原理是:安全管理模塊會在虛擬機(jī)創(chuàng)建時(shí)調(diào)用訪問控制模塊,為目標(biāo)虛擬機(jī)及虛擬資源添加標(biāo)簽。在Hypervisor 中虛擬機(jī)對虛擬資源的訪問操作處理中已加入鉤子函數(shù),每當(dāng)虛擬機(jī)需要對虛擬資源進(jìn)行訪問時(shí),鉤子函數(shù)會截獲這一訪問請求,并判斷虛擬機(jī)是否具有訪問權(quán)限。本文中訪問控制機(jī)制的目的是發(fā)現(xiàn)惡意用戶行為,實(shí)現(xiàn)對虛擬資源的保護(hù)。本文訪問控制解決了將一般虛擬機(jī)監(jiān)控機(jī)制運(yùn)用在云環(huán)境中時(shí)監(jiān)控機(jī)制運(yùn)行在計(jì)算節(jié)點(diǎn)時(shí)與控制節(jié)點(diǎn)間的信息斷層問題。
基于云資源控制的隔離機(jī)制實(shí)現(xiàn)了中國墻模型,工作在云控制節(jié)點(diǎn)上,通過控制虛擬機(jī)啟動過程的基礎(chǔ)設(shè)施資源(即計(jì)算節(jié)點(diǎn))分配來隔離虛擬機(jī),而非對虛擬機(jī)的直接保護(hù),如圖1 虛線部分所示?;谠朴?jì)算資源控制方式的隔離機(jī)制就是在虛擬機(jī)創(chuàng)建或遷移時(shí),控制計(jì)算節(jié)點(diǎn)與虛擬機(jī)間的關(guān)系,根據(jù)用戶提供的可能會與自己存在利益關(guān)系的其他用戶信息,將特定的計(jì)算節(jié)點(diǎn)分配給虛擬機(jī),使虛擬機(jī)運(yùn)行在沒有其他利益相關(guān)用戶虛擬機(jī)的計(jì)算節(jié)點(diǎn)上,從而避免信息泄露。該機(jī)制從虛擬機(jī)創(chuàng)建通過介入虛擬機(jī)的創(chuàng)建和遷移過程,將利益相關(guān)用戶的虛擬機(jī)建立在不同的計(jì)算節(jié)點(diǎn)上進(jìn)行隔離,目的是杜絕隱通道帶來的非法信息流動。
這2 種安全機(jī)制工作在云計(jì)算不同的層次,訪問控制機(jī)制主要對客戶虛擬機(jī)資源提供運(yùn)行時(shí)的保護(hù),而隔離機(jī)制提供一種啟動前的預(yù)保護(hù)來解決隱通道問題,相互配合對客戶虛擬機(jī)進(jìn)行保護(hù)。從虛擬機(jī)創(chuàng)建流程開始,安全機(jī)制會對整個(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é)對本文中的訪問控制機(jī)制與隔離機(jī)制進(jìn)行統(tǒng)一管理及輔助功能,包括維護(hù)云平臺安全策略、用戶標(biāo)簽相關(guān)等數(shù)據(jù),管理訪問控制與隔離機(jī)制等。
3.2.1 標(biāo)簽設(shè)計(jì)及安全策略
用戶標(biāo)記及安全策略是本文安全機(jī)制工作的基礎(chǔ),文中的2 種安全機(jī)制的正常工作都依賴于安全用戶標(biāo)記,而這也正是本文將隔離機(jī)制與訪問控制機(jī)制相結(jié)合的切入點(diǎn)。本文提出了自己的安全標(biāo)記設(shè)計(jì)及生成方法,使其能夠同時(shí)滿足STE 與中國墻模型的要求。
前文提到本文中的訪問控制基于STE 模型,而隔離機(jī)制基于中國墻模型。STE 模型是TE 模型[8]的簡化模型,其思想是將系統(tǒng)中的主體被劃分成若干不同的域,定義不同的域標(biāo)簽賦予每個(gè)主體及每個(gè)客體。STE 模型訪問控制的執(zhí)行方法就是根據(jù)主體和客體的標(biāo)簽是否相同進(jìn)行訪問行為控制。而中國墻策略模型是一種經(jīng)典的隔離機(jī)制模型,用于避免利害相關(guān)的信息進(jìn)入同一個(gè)控制域中。在中國墻模型中,實(shí)現(xiàn)一個(gè)運(yùn)行態(tài)排除規(guī)則,這一規(guī)則定義一組互斥的負(fù)載類型標(biāo)簽,即一個(gè)沖突集;任意時(shí)刻,在一個(gè)Hypervisor 平臺上只允許加載沖突集一種標(biāo)簽的負(fù)載[9]。本文就是將STE 的標(biāo)簽與中國墻的標(biāo)簽進(jìn)行整合,使用同一安全標(biāo)記同時(shí)支持2 種安全機(jī)制。
在用戶標(biāo)簽的設(shè)計(jì)上,考慮到云計(jì)算不僅會存在個(gè)人用戶,還需要同時(shí)滿足組織機(jī)構(gòu)用戶的安全要求。云計(jì)算中一些組織機(jī)構(gòu)希望能夠與和自己有利益關(guān)系的其他組織的虛擬機(jī)進(jìn)行隔離,但不清楚對方組織內(nèi)部的結(jié)構(gòu),此時(shí)就需要進(jìn)行組織間的隔離。本文設(shè)計(jì)了二級用戶標(biāo)簽作為一個(gè)用戶的唯一標(biāo)志,其形式為(組織標(biāo)簽.個(gè)人標(biāo)簽)。這樣設(shè)計(jì)既可以滿足云計(jì)算從組織角度進(jìn)行隔離的要求,又能將用戶標(biāo)簽精確到每一個(gè)用戶可以為細(xì)粒度的訪問控制提供基礎(chǔ)。
標(biāo)簽的生成方法可以是直接對組織名和用戶名的直接引用也可采用對用戶名和組織名計(jì)算摘要值作為標(biāo)簽的方式,例如對用戶名和組織名稱進(jìn)行MD5 運(yùn)算作為對應(yīng)的用戶和組織標(biāo)記,這樣可以使得用戶標(biāo)簽具有唯一性。用戶標(biāo)簽在用戶向云平臺注冊時(shí)生成,從用戶虛擬機(jī)建立起就對虛擬機(jī)及屬于該虛擬機(jī)的資源進(jìn)行標(biāo)記,對客戶虛擬機(jī)整個(gè)生命周期進(jìn)行保護(hù)。
設(shè)計(jì)了用戶標(biāo)簽后,還需要對應(yīng)的安全策略來指導(dǎo)安全機(jī)制的執(zhí)行。由于統(tǒng)一了安全標(biāo)簽,同樣需要設(shè)計(jì)統(tǒng)一的云平臺安全策略。訪問控制的STE策略相對簡單,只需要告知計(jì)算節(jié)點(diǎn)所有用戶標(biāo)簽就可以執(zhí)行訪問控制。而中國墻策略定義了一組沖突集,沖突集信息是執(zhí)行隔離控制的根本依據(jù)。在本文場景下,沖突集信息應(yīng)是用戶提出需要與自己虛擬機(jī)進(jìn)行隔離的用戶名稱集合,反映自己的安全需求。每個(gè)云用戶應(yīng)提出自己的沖突集,并由安全管理節(jié)點(diǎn)將所有用戶的需求整合成統(tǒng)一安全策略并部署到云平臺中。
3.2.2 安全管理模塊設(shè)計(jì)
安全管理模塊的主要工作有4 個(gè)方面:(1)管理云用戶標(biāo)簽;(2)管理云平臺安全策略;(3)向新建虛擬機(jī)添加標(biāo)簽開始訪問控制保護(hù);(4)維護(hù)云平臺各計(jì)算節(jié)點(diǎn)虛擬機(jī)運(yùn)行情況。在設(shè)計(jì)上,向計(jì)算節(jié)點(diǎn)發(fā)出虛擬機(jī)及資源標(biāo)簽添加命令的功能被放在管理模塊,彌補(bǔ)了前文描述過的從計(jì)算節(jié)點(diǎn)進(jìn)行管理會導(dǎo)致的安全鏈斷裂問題,管理模塊有更好的視角監(jiān)控虛擬機(jī)啟動過程及用戶信息。此外,安全管理模塊還需要維護(hù)一個(gè)表來記錄當(dāng)前云計(jì)算所有計(jì)算節(jié)點(diǎn)運(yùn)行了哪些虛擬機(jī)以及這些虛擬機(jī)的標(biāo)簽,為隔離機(jī)制提供支持。該模塊需要實(shí)現(xiàn)的具體功能主要有:
(1) 向上層提供接口接收經(jīng)中間件層發(fā)來的用戶注冊信息及沖突集要求;
(2) 根據(jù)用戶的信息進(jìn)行運(yùn)算,得到兩級用戶安全標(biāo)記,并記錄;
(3) 整合所有用戶標(biāo)簽及沖突集要求,形成安全策略文檔;
(4) 將安全策略文件部署給訪問控制及隔離模塊;
(5) 向虛擬機(jī)啟動過程提供各種信息支持;
(6) 與虛擬機(jī)建立命令協(xié)調(diào),調(diào)用計(jì)算節(jié)點(diǎn)訪問控制功能添加主客體標(biāo)簽;
(7) 維護(hù)云平臺虛擬機(jī)運(yùn)行信息。
基于以上分析,本文安全管理模塊需要在虛擬機(jī)生命周期的3 個(gè)過程中介入進(jìn)行安全配置,使得訪問控制機(jī)制和隔離機(jī)制可以對云計(jì)算中的虛擬機(jī)進(jìn)行保護(hù)。得到該模塊的工作流程如圖2 所示。
圖2 安全管理模塊工作流程
訪問控制機(jī)制的具體執(zhí)行在計(jì)算節(jié)點(diǎn)上,由2 個(gè)功能模塊組成。
3.3.1 訪問控制配置模塊
訪問控制配置模塊工作在各個(gè)計(jì)算節(jié)點(diǎn)的宿主操作系統(tǒng)Dom0 中,負(fù)責(zé)與云控制節(jié)點(diǎn)安全管理模塊通信,接收命令完成對本計(jì)算節(jié)點(diǎn)的訪問控制執(zhí)行機(jī)制的配置及管理。該模塊是將在云計(jì)算環(huán)境中實(shí)現(xiàn)訪問控制的關(guān)鍵部件之一,起到了紐帶作用,訪問控制配置模塊具體需要完成的工作有:(1)接收控制節(jié)點(diǎn)安全管理模塊發(fā)送的命令及數(shù)據(jù),包括安全策略數(shù)據(jù)及更新命令、用戶虛擬機(jī)標(biāo)簽的添加等;(2)當(dāng)通信模塊接收到這些命令后,需要對這些數(shù)據(jù)進(jìn)行處理并調(diào)用接口部署到Hypervisor;(3)命令執(zhí)行完成后,通信模塊得到執(zhí)行模塊返回的結(jié)果或數(shù)據(jù),然后對結(jié)果或數(shù)據(jù)進(jìn)行包裝,發(fā)送到控制節(jié)點(diǎn)的管理模塊。工作流程如圖3 所示。
圖3 訪問控制配置模塊工作流程
3.3.2 訪問控制執(zhí)行模塊
訪問控制執(zhí)行模塊負(fù)責(zé)訪問控制機(jī)制的具體執(zhí)行。運(yùn)行在Hypervisor 層,訪問控制執(zhí)行模塊可以更好地監(jiān)控到客戶虛擬機(jī)對系統(tǒng)資源的訪問,同時(shí)也可以避免遭受破壞,因?yàn)镠ypervisor 有很高的系統(tǒng)權(quán)限。
訪問控制執(zhí)行模塊的基本工作就是,通過鉤子函數(shù)在計(jì)算節(jié)點(diǎn)上對虛擬機(jī)資源的訪問進(jìn)行強(qiáng)制訪問控制。當(dāng)計(jì)算節(jié)點(diǎn)的虛擬機(jī)需要對任意系統(tǒng)資源進(jìn)行訪問時(shí),訪問控制執(zhí)行模塊會截獲這一訪問請求,之后根據(jù)配置模塊加載的安全策略來判斷是否允許該訪問。訪問控制工作流程如圖4 所示。
圖4 訪問控制執(zhí)行模塊工作流程
本文中隔離機(jī)制的設(shè)計(jì)思路是采用對云計(jì)算資源進(jìn)行控制的方式來實(shí)現(xiàn)虛擬機(jī)的隔離,而這一過程對用戶是完全透明的。隔離機(jī)制工作在云控制節(jié)點(diǎn)上,依賴于云計(jì)算提供的多計(jì)算節(jié)點(diǎn)架構(gòu)實(shí)現(xiàn)功能。
前文已經(jīng)介紹過隔離機(jī)制基于中國墻策略模型。隔離機(jī)制通過對云計(jì)算節(jié)點(diǎn)進(jìn)行資源控制,根據(jù)用戶提供的可安全要求,將這些利益相關(guān)用戶的虛擬機(jī)運(yùn)行在不同計(jì)算節(jié)點(diǎn)上對它們進(jìn)行隔離,這樣就可以在很大程度上避免惡意用戶對同一物理平臺上其他利益相關(guān)用戶的信息進(jìn)行竊取。在一臺虛擬機(jī)創(chuàng)建或遷移時(shí),隔離機(jī)制會根據(jù)該虛擬機(jī)標(biāo)簽、沖突集信息以及云平臺虛擬機(jī)運(yùn)行狀態(tài),判斷哪些計(jì)算節(jié)點(diǎn)正在運(yùn)行與其有安全利益沖突的虛擬機(jī),使得新虛擬機(jī)不會被創(chuàng)建在這些計(jì)算節(jié)點(diǎn)上,從而避免非法的信息流動。
本文的設(shè)計(jì)中,隔離控制流程工作在控制節(jié)點(diǎn)上,在虛擬機(jī)創(chuàng)建或遷移時(shí)對其進(jìn)行調(diào)度,以確保其能工作在安全的計(jì)算節(jié)點(diǎn)上。為了保證這一功能的實(shí)現(xiàn),除了需要安全管理模塊提供的管理、策略部署和數(shù)據(jù)維護(hù)等功能的支持外,還需要對云計(jì)算平臺虛擬機(jī)的建立流程進(jìn)行改變,增加一個(gè)隔離調(diào)度控制流程。圖5 為隔離機(jī)制的工作流程。
圖5 隔離控制流程
如圖5 所示,虛線左側(cè)中為一般云計(jì)算虛擬機(jī)創(chuàng)建流程,而右邊則是本文中為了實(shí)現(xiàn)隔離機(jī)制增加的工作流程。本機(jī)制的具體工作流程描述如下:
(1) 通過API 調(diào)用發(fā)來啟動虛擬機(jī)命令及部分虛擬機(jī)基本要求,如資源要求等;
(2) 云控制節(jié)點(diǎn)收到這些數(shù)據(jù)后會執(zhí)行啟動初始化工作,分配其他基本信息,如虛擬機(jī)UUID 等;
(3) 云控制節(jié)點(diǎn)將根據(jù)用戶對資源如內(nèi)存等的要求開始對計(jì)算節(jié)點(diǎn)篩選,得到滿足用戶資源要求的計(jì)算節(jié)點(diǎn)列表;
(4) 完成以上工作后由開始隔離機(jī)制控制流程進(jìn)行處理。通過隔離機(jī)制提供的接口將虛擬機(jī)信息及(3)所選出的計(jì)算節(jié)點(diǎn)列表傳遞到該流程中;
(5) 隔離控制流程從本文的安全管理模塊中獲取虛擬機(jī)的安全標(biāo)簽等信息;
(6) 隔離控制流程根據(jù)平臺各計(jì)算節(jié)點(diǎn)虛擬機(jī)運(yùn)行狀態(tài)表,對要建立的虛擬機(jī)標(biāo)簽及安全策略進(jìn)行比對,挑選出符合安全要求的計(jì)算節(jié)點(diǎn)列表并返回;
(7) 云平臺管理程序從(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) 云平臺管理程序下發(fā)虛擬機(jī)創(chuàng)建命令及數(shù)據(jù)到目標(biāo)節(jié)點(diǎn),完成虛擬機(jī)的創(chuàng)建。
本文在基于XEN 虛擬化環(huán)境的OPENSTACK云平臺上實(shí)現(xiàn)了上述安全機(jī)制。在管理節(jié)點(diǎn)實(shí)現(xiàn)了安全管理模塊和基于云計(jì)算資源控制的隔離機(jī)制,在計(jì)算節(jié)點(diǎn)實(shí)現(xiàn)了訪問控制配置模塊和訪問控制執(zhí)行模塊。
安全管理模塊需要提供接口響應(yīng)對其的調(diào)用請求,應(yīng)作為一個(gè)守護(hù)進(jìn)程存在于控制節(jié)點(diǎn)中來監(jiān)聽來自云平臺其他組件的連接。采用socket 通信作為提供接口的方式。
連接建立后主程序會判斷發(fā)送來的操作,主要有用戶注冊生成、虛擬機(jī)建立開始和結(jié)束操作,然后調(diào)用響應(yīng)的功能函數(shù)進(jìn)行處理來完成操作。實(shí)現(xiàn)了manage_core 類來完成安全管理模塊所需要進(jìn)行的所有管理操作。
最后,安全管理模塊在與計(jì)算節(jié)點(diǎn)通信功能的設(shè)計(jì)上不會維護(hù)計(jì)算節(jié)點(diǎn)的IP 地址等信息,而是通過調(diào)用OPENSTACK 的RESTFUL[10]接口來獲取信息,將數(shù)據(jù)及命令下發(fā)。
4.2.1 訪問控制配置模塊
訪問控制配置模塊在實(shí)現(xiàn)上同樣作為一個(gè)守護(hù)進(jìn)程常駐各計(jì)算節(jié)點(diǎn)的內(nèi)存中,響應(yīng)云控制節(jié)點(diǎn)發(fā)出的命令。本模塊針對云控制節(jié)點(diǎn)的要求實(shí)現(xiàn)了對虛擬機(jī)及資源標(biāo)簽的添加、安全策略的加載及變更功能。在與云控制節(jié)點(diǎn)的通信上通過socket 機(jī)制監(jiān)聽端口,而在對下層訪問控制執(zhí)行模塊的管理上采用了調(diào)用XenAPI[11]的方式。
啟動訪問控制通信模塊程序后會監(jiān)聽socket 端口并初始化一個(gè)mac_conf 類的對象來處理各種云控制節(jié)點(diǎn)發(fā)來的命令。在mac_conf 對象初始化過程中會與XenAPI 進(jìn)行連接。
當(dāng)訪問控制通信模塊主程序接收到來自云控制節(jié)點(diǎn)的命令時(shí),會調(diào)用mac_conf 類對應(yīng)的方法進(jìn)行處理。例如,在需要對虛擬機(jī)標(biāo)簽進(jìn)行變更時(shí),首先會對屬于該虛擬機(jī)的資源標(biāo)簽進(jìn)行修改,如VIF 和vDisk 兩類,之后再完成對虛擬機(jī)標(biāo)簽的修改。此外,還實(shí)現(xiàn)一些其他的輔助操作,如掛起、恢復(fù)虛擬機(jī)等對云計(jì)算訪問控制機(jī)制提供支持。
4.2.2 訪問控制執(zhí)行模塊
本文的訪問控制執(zhí)行模塊依托于XEN 提供的XSM 架構(gòu)以及sHype 機(jī)制來實(shí)現(xiàn)。sHype 是IBM開發(fā)的一種基于XSM 架構(gòu)實(shí)現(xiàn)的安全機(jī)制,它已與XEN 代碼高度結(jié)合,為XEN 的資源訪問提供強(qiáng)制訪問控制機(jī)制,并且不會帶來過高的系統(tǒng)開銷。sHype 架構(gòu)如圖6 所示。
圖6 sHype 架構(gòu)
本文中訪問控制執(zhí)行模塊只需要運(yùn)行在底層的對鉤子函數(shù)的處理等部分,而不需要原來sHype 管理部分的功能。因此,在本文中對sHype 實(shí)現(xiàn)的功能進(jìn)行了簡化,保留對鉤子函數(shù)的實(shí)現(xiàn),而將管理部分與訪問控制通信模塊對接,由XenAPI 直接調(diào)用,避免了很多配置不當(dāng)帶來的錯(cuò)誤。對其進(jìn)行精簡作為訪問控制執(zhí)行模塊。
本文隔離控制流程的實(shí)現(xiàn)依賴于OPENSTACK提供的Filters 過濾器機(jī)制[12]。OPENSTACK 在創(chuàng)建不同虛擬機(jī)的過程中會根據(jù)虛擬機(jī)不同的資源等要求從若干計(jì)算節(jié)點(diǎn)中篩選出符合要求、可以建立該虛擬機(jī)的計(jì)算節(jié)點(diǎn)。而Filters 機(jī)制顧名思義是通過過濾的方式將不符合要求的計(jì)算節(jié)點(diǎn)從計(jì)算節(jié)點(diǎn)列表中過濾出去。Filters 機(jī)制提供了一種統(tǒng)一的框架,可以編寫自己的Filter 并對虛擬機(jī)創(chuàng)建流程進(jìn)行修改。具體實(shí)現(xiàn)流程如下:
需要對OPENSTACK 創(chuàng)建虛擬機(jī)的流程進(jìn)行修改,在創(chuàng)建虛擬機(jī)時(shí)要能夠調(diào)用安全管理模塊,根據(jù)要建立的目標(biāo)虛擬機(jī)的用戶信息獲取對應(yīng)的安全標(biāo)簽,之后與系統(tǒng)分配的VM UUID 形成一個(gè)虛擬機(jī)名稱、標(biāo)簽以及UUID 三元組并記錄。
在完成一系列其他配置和操作后,創(chuàng)建虛擬機(jī)的流程會轉(zhuǎn)到scheduler 進(jìn)程來對計(jì)算節(jié)點(diǎn)列表進(jìn)行篩選,隔離控制流程主要實(shí)現(xiàn)也就在這一部分。scheduler 進(jìn)程的調(diào)用配置好的過濾器Filters 對計(jì)算節(jié)點(diǎn)處理,通過所有Filters 則被認(rèn)為可以啟動目標(biāo)虛擬機(jī)。因此,實(shí)現(xiàn)了一個(gè)Filter 進(jìn)行隔離控制,保證不符合安全要求,即存在于目標(biāo)虛擬機(jī)安全標(biāo)簽沖突的虛擬機(jī)的計(jì)算節(jié)點(diǎn)無法通過篩選。實(shí)現(xiàn)的filter 的主要工作流程如下:
(1) 獲取以參數(shù)形式傳入的目標(biāo)虛擬機(jī)uuid 及安全標(biāo)簽;
(2) 獲取配置好的沖突集信息;
(3) 判斷目標(biāo)虛擬機(jī)標(biāo)簽是否存在于任意沖突集中,若無返回真,說明目標(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ī)無法在本節(jié)點(diǎn)啟動;若不存在,返回真,目標(biāo)虛擬機(jī)可以在本節(jié)點(diǎn)啟動。
為了驗(yàn)證本文中訪問控制機(jī)制的有效性和實(shí)用性,設(shè)計(jì)了簡單的實(shí)驗(yàn)來對其主要功能進(jìn)行測試。首先建立一個(gè)包含1 臺控制節(jié)點(diǎn)、3 臺計(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 臺虛擬機(jī)。由于openstack-compute 計(jì)算節(jié)點(diǎn)資源遠(yuǎn)多于folsom-compute 及ubuntu-compute節(jié)點(diǎn),控制節(jié)點(diǎn)會自動將4 臺虛擬機(jī)均下發(fā)到openstack-compute 節(jié)點(diǎn)。并且由于沒有訪問控制機(jī)制,虛擬機(jī)間可以相互訪問虛擬磁盤等資源。例如將Test_vm2 的磁盤掛載給Test_vm1,而Test_vm1 可以正常訪問,這可以模擬當(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,資源訪問無限制。
之后,在該云環(huán)境中啟用了本文實(shí)現(xiàn)的安全機(jī)制進(jìn)行對比實(shí)驗(yàn)。通過安全機(jī)制提供的接口設(shè)定3 個(gè)安全標(biāo)簽corpA.d1,corpA.d2 和corpA.d3 及1 個(gè)包含這3 個(gè)標(biāo)簽的沖突集conf1,并將包含這些信息的安全策略文件部署在云環(huán)境中。隨后,通過云控制節(jié)點(diǎn)建立4 臺資源要求與上一組完全相同的虛擬機(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)的隔離控制流程會發(fā)揮作用,根據(jù)中國墻策略會將下一個(gè)建立的虛擬機(jī)Test_vm6 發(fā)送到無沖突虛擬機(jī)且資源更多的ubuntucompute 計(jì)算節(jié)點(diǎn)。同理,隨后建立的Test_vm7,Test_vm8 也會由于隔離機(jī)制的作用,被分配到folsom-compute 節(jié)點(diǎn)。
本文針對云計(jì)算虛擬化技術(shù)存在的安全問題進(jìn)行研究,結(jié)合云計(jì)算資源共享及開放性的特點(diǎn),實(shí)現(xiàn)了云計(jì)算環(huán)境下的強(qiáng)制訪問控制和隔離機(jī)制2 種安全機(jī)制來保證客戶虛擬機(jī)系統(tǒng)的安全。建立了集中管理、分布式實(shí)施的云計(jì)算訪問控制機(jī)制,以及基于云計(jì)算資源控制的隔離機(jī)制,并編程實(shí)現(xiàn)了云計(jì)算上述及所依賴的功能。本文實(shí)現(xiàn)的安全機(jī)制從2 個(gè)方面對云計(jì)算虛擬機(jī)安全進(jìn)行了加強(qiáng),實(shí)驗(yàn)結(jié)果表明對提升云計(jì)算虛擬化安全性、保證客戶虛擬機(jī)安全有積極的作用。
然而,本文實(shí)現(xiàn)的安全機(jī)制只是軟件的安全機(jī)制。在當(dāng)前網(wǎng)絡(luò)和云計(jì)算安全形勢嚴(yán)峻的情況下,軟件安全機(jī)制需要與硬件機(jī)制相結(jié)合,如TPM/TCM 等才能更好地保證自身的安全。這也是本文安全機(jī)制有待提高和改進(jìn)的地方。
[1]馮登國,張 敏,張 妍,等.云計(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)鍵問題研究[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.