本發(fā)明涉及分布式存儲,特別涉及一種基于云存儲的數(shù)據(jù)優(yōu)化調(diào)度方法。
背景技術:
在云計算服務模式下,租戶將數(shù)據(jù)和應用托管至云平臺,云服務的透明性使租戶失去對數(shù)據(jù)的控制,由于服務器可信性不易評估,因此,數(shù)據(jù)安全問題成為云平臺下租戶的首要擔憂。云計算是根據(jù)租戶的服務請求對數(shù)據(jù)進行相關操作,因此,租戶和云之間的身份認證是保證數(shù)據(jù)不被非法租戶冒名訪問的前提。租戶通過身份認證后,可以使用云提供的數(shù)據(jù)存儲和計算服務。租戶將大量數(shù)據(jù)存儲到云平臺并委托服務器對數(shù)據(jù)進行計算,本地并不存儲數(shù)據(jù)的副本,當租戶發(fā)現(xiàn)數(shù)據(jù)完整性被破壞時,只能寄希望于服務器的災備機制。對于在計算服務中的動態(tài)數(shù)據(jù),由于云計算具有多租戶的特點,租戶通過服務進程對數(shù)據(jù)訪問和計算,共享訪問的進程載體成為權限的集中點,共享漏洞威脅需采取針對租戶維度的權限隔離機制。如果發(fā)生了數(shù)據(jù)安全事件,租戶如何對服務器追蹤是一個關鍵問題,目前的機制需要云服務的細節(jié),較難實現(xiàn)。另外由于缺乏可信基礎機制,安全機制可能被攻擊、篡改,無法發(fā)揮作用。
技術實現(xiàn)要素:
為解決上述現(xiàn)有技術所存在的問題,本發(fā)明提出了一種基于云存儲的數(shù)據(jù)優(yōu)化調(diào)度方法,包括:
對云計算平臺中的部分節(jié)點進行可信重構,基于外接可信智能卡和安全hypervisor建立信任傳遞機制,保證云計算平臺上部署的其它安全模塊具有可信的執(zhí)行環(huán)境;
云平臺根據(jù)租戶的身份及其所需的服務,為租戶定制服務使用策略,一旦租戶通過身份認證,則按照預定義安全策略使用云服務;
對于計算任務,云平臺接口將租戶計算任務的描述文件提交給集群控制器,當集群控制器將虛擬機鏡像文件調(diào)度到不可信節(jié)點時,如果租戶虛擬機鏡像文件被加密,則禁止開啟租戶虛擬機;
對于數(shù)據(jù)存儲或操作任務,云平臺接口將租戶存儲任務的描述文件交給存儲控制器;存儲控制器對數(shù)據(jù)服務器發(fā)送指令,進行數(shù)據(jù)的存儲、取回或讀寫;租戶將數(shù)據(jù)存儲至云平臺之前,首先利用云存儲系統(tǒng)的分布式存儲模塊對數(shù)據(jù)進行預處理,當租戶要確認云中存儲數(shù)據(jù)的安全性時,再次調(diào)用分布式存儲模塊來驗證。
優(yōu)選地,所述方法還包括:對動態(tài)數(shù)據(jù)的計算任務,集群控制器根據(jù)各主節(jié)點的資源狀態(tài)信息將任務分散調(diào)度到空閑的主節(jié)點上,由云存儲系統(tǒng)的軟件虛擬化模塊防止動態(tài)數(shù)據(jù)的隱私性和完整性被破壞。
優(yōu)選地,所述安全云存儲系統(tǒng)包括tpm計算平臺,所述tpm計算平臺由外接可信智能卡為起點對服務器的節(jié)點建立信任鏈,構建基于虛擬化架構計算平臺,為認證、數(shù)據(jù)保護的執(zhí)行提供可信基礎。
優(yōu)選地,所述安全云存儲系統(tǒng)還包括跨域認證模塊,用于基于已有的租戶身份證書和私有云來實現(xiàn)租戶與公有云的雙向認證。
優(yōu)選地,所述安全云存儲系統(tǒng)的分布式存儲模塊,用于提供對靜態(tài)存儲數(shù)據(jù)的完整性驗證和數(shù)據(jù)恢復功能,并在數(shù)據(jù)泄露時追蹤發(fā)生泄露的服務器。
優(yōu)選地,所述安全云存儲系統(tǒng)的軟件虛擬化模塊用于通過追蹤應用程序中的隱私數(shù)據(jù)、操作系統(tǒng)中的隱私文件,實現(xiàn)對租戶動態(tài)數(shù)據(jù)的保護。
優(yōu)選地,所述安全云存儲系統(tǒng)還包括身份管理agent,用于與tpm計算平臺的節(jié)點進行交互,對可信節(jié)點的身份進行管理,并對租戶身份信息進行管理和保護。
本發(fā)明相比現(xiàn)有技術,具有以下優(yōu)點:
本發(fā)明提出了一種基于云存儲的數(shù)據(jù)優(yōu)化調(diào)度方法,為數(shù)據(jù)安全存儲機制的正確執(zhí)行提供了保障。
附圖說明
圖1是根據(jù)本發(fā)明實施例的基于云存儲的數(shù)據(jù)優(yōu)化調(diào)度方法的流程圖。
具體實施方式
下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細節(jié),并且無這些具體細節(jié)中的一些或者所有細節(jié)也可以根據(jù)權利要求書實現(xiàn)本發(fā)明。
本發(fā)明的一方面提供了一種基于云存儲的數(shù)據(jù)優(yōu)化調(diào)度方法。圖1是根據(jù)本發(fā)明實施例的基于云存儲的數(shù)據(jù)優(yōu)化調(diào)度方法流程圖。
本發(fā)明的方法通過為租戶提供全面的數(shù)據(jù)安全保護的安全云存儲系統(tǒng)來實現(xiàn),首先構建基于安全機制的tpm計算平臺,在該平臺之上對租戶對數(shù)據(jù)的訪問進行安全高效的身份認證,提供對存儲的數(shù)據(jù)的保護機制和驗證機制,并且提供多租戶之間細粒度的數(shù)據(jù)隔離和控制。為標記體系和數(shù)據(jù)流規(guī)則進行形式化建模、數(shù)據(jù)對象標記和追蹤控制的實現(xiàn)機制。在代碼層,實現(xiàn)符合安全策略的執(zhí)行點定位和監(jiān)控;在操作系統(tǒng)層,基于統(tǒng)一的安全策略模型提供對上層應用的支撐,將租戶信息作為應用上下文語義傳遞至操作系統(tǒng)層,實現(xiàn)了細粒度的數(shù)據(jù)控制和保護。
安全云存儲系統(tǒng)包括tpm計算平臺、跨域認證模塊、分布式存儲模塊、軟件虛擬化模塊以及身份管理agent。首先由外接可信智能卡為起點對服務器的節(jié)點建立信任鏈,構建基于虛擬化架構的tpm計算平臺,為認證、數(shù)據(jù)保護的執(zhí)行提供可信基礎;跨域認證模塊基于已有的租戶身份證書和私有云,實現(xiàn)租戶與公有云的雙向認證;分布式存儲模塊提供對靜態(tài)存儲數(shù)據(jù)的完整性驗證和數(shù)據(jù)恢復功能,并在數(shù)據(jù)泄露時追蹤發(fā)生泄露的服務器;軟件虛擬化模塊通過追蹤應用程序中的隱私數(shù)據(jù)、操作系統(tǒng)中的隱私文件,實現(xiàn)對租戶動態(tài)數(shù)據(jù)的保護;身份管理agent與tpm計算平臺的節(jié)點進行交互,對可信節(jié)點的身份進行管理,并對租戶身份信息進行管理和保護。
云平臺根據(jù)租戶的身份及其所需的服務,為租戶定制服務使用策略,一旦租戶通過身份認證,則按照預定義安全策略使用云服務。服務器首先對云計算平臺中的部分節(jié)點進行可信重構,基于外接可信智能卡和安全hypervisor建立信任傳遞機制,保證云計算平臺上部署的其它安全模塊具有可信的執(zhí)行環(huán)境,不會被惡意代碼破壞。以下結合租戶使用服務的流程,說明安全云存儲系統(tǒng)的工作流程:
當租戶要使用云服務時,輸入口令進行身份認證,由跨域認證模塊和身份管理agent實現(xiàn)租戶和云之間的雙向認證。
雙向身份認證通過后,租戶通過云平臺接口提交自己的任務需求,當租戶提交了任務需求后,該任務涉及到的對計算資源或存儲資源的使用需要由租戶策略服務器進行授權。如果租戶任務的所有操作均被允許,則根據(jù)服務請求的類型分別進行處理。對于計算任務,云平臺接口將對租戶計算任務的描述文件提交給集群控制器,由于租戶虛擬機鏡像文件被加密,即使集群控制器將虛擬機鏡像文件調(diào)度到不可信節(jié)點,也無法開啟租戶虛擬機。對于數(shù)據(jù)存儲或操作任務,云平臺接口將租戶存儲任務的描述文件交給存儲控制器。
對存儲或訪問靜態(tài)數(shù)據(jù)的任務,存儲控制器對數(shù)據(jù)服務器發(fā)送指令,進行數(shù)據(jù)的存儲、取回或讀寫等操作。租戶將數(shù)據(jù)存儲至云平臺之前,首先利用分布式存儲模塊對數(shù)據(jù)進行預處理。當租戶要確認云中存儲數(shù)據(jù)的安全性時,再次調(diào)用分布式存儲模塊來驗證。
對動態(tài)數(shù)據(jù)的計算任務,集群控制器將根據(jù)各主節(jié)點的資源狀態(tài)信息將任務分散調(diào)度到空閑的主節(jié)點上,并負責網(wǎng)絡的配置,計算任務下發(fā)后,數(shù)據(jù)在虛擬機中被計算,軟件虛擬化模塊防止動態(tài)數(shù)據(jù)的隱私性和完整性被云應用安全漏洞或其他惡意租戶破壞。
對于可信重構,采用智能卡設備作為可信平臺控制模塊,為可信計算功能提供了硬件基礎。多系統(tǒng)引導裝載程序在引導前,對xen的源碼和dom0的源碼進行編譯。在加載xen形式的vmm時,多系統(tǒng)引導裝載程序?qū)㈨樞驁?zhí)行如下的命令,包括設置根設備,裝載vmm系統(tǒng)內(nèi)核映像,為dom0的內(nèi)核映射裝載一個初始的ramdisk映像,并為宿主操作系統(tǒng)的安全區(qū)域設置初始參數(shù),所執(zhí)行的命令及順序與配置文件中的一致。相關的設備驅(qū)動和配置文件都存儲于所述ramdisk。為了實現(xiàn)vmm對應用軟件可執(zhí)行代碼的度量,對hypervisor進行可信重構,增加程序執(zhí)行檢測模塊。該模塊提供了一組鉤子函數(shù)接口,將度量功能實現(xiàn)為鉤子函數(shù),包括加載新程序并跳轉執(zhí)行,將要裝入的可執(zhí)行文件的路徑名轉換成該執(zhí)行文件所在的索引節(jié)點,這樣,內(nèi)核函數(shù)直接使用索引節(jié)點到磁盤存取可執(zhí)行文件。因此,程序執(zhí)行檢測模塊將函數(shù)指針指向?qū)崿F(xiàn)度量功能的鉤子函數(shù),在可執(zhí)行文件要加載前,鉤子函數(shù)被調(diào)用從而產(chǎn)生相應的度量值,度量驗證的依據(jù)是可信程序列表。驗證通過后,找到可執(zhí)行代碼文件的節(jié)點。然后裝入可執(zhí)行程序并運行。當租戶可執(zhí)行代碼被篡改時,程序執(zhí)行檢測模塊在加載時根據(jù)路徑定位代碼內(nèi)容,并計算代碼的散列值,計算所得的散列值與所述可信程序列表中的預期散列值不同,禁止對該進程的加載和運行。
跨域認證模塊包括租戶端認證模塊、身份管理認證模塊和云平臺認證模塊。租戶使用跨域認證模塊實現(xiàn)與云之間雙向認證的流程描述如下:
在注冊階段,租戶生成自己的口令,調(diào)用租戶端認證模塊生成口令驗證原語,租戶端認證模塊將租戶的身份id以及口令驗證原語傳遞至身份管理認證模塊,該模塊將租戶的身份信息與其口令驗證原語綁定,存儲在數(shù)據(jù)庫中。
在認證階段,當租戶想要訪問公有云時,首先調(diào)用租戶端認證模塊向云平臺認證模塊發(fā)送認證請求,認證請求中包含了其所屬身份管理認證模塊的身份。公有云生成自己的口令,調(diào)用云平臺認證模塊生成口令驗證原語,云平臺認證模塊將云的身份id、口令驗證原語以及前述租戶的消息傳遞至租戶所屬身份管理認證模塊,請求身份管理認證模塊實現(xiàn)其與租戶間的雙向認證。身份管理認證模塊收到云的協(xié)議消息后,對雙方進行身份認證,并回復認證消息給云平臺認證模塊,由該模塊驗證租戶身份的合法性。若云平臺認證模塊對租戶的身份驗證通過,則可獲得正確的會話密鑰,并回復認證消息給租戶端認證模塊。租戶端認證模塊驗證云身份的合法性,云身份驗證通過后,租戶接受會話密鑰。如果租戶和云之間的雙向認證通過,則雙方之間建立一個共享會話密鑰。租戶和云服務提供商之間使用該會話密鑰用于安全通信,該密鑰只用于一次安全會話,以提高安全性。如果任一實體接收到一定數(shù)量惡意交互的內(nèi)容后,將會將口令字禁用或鎖定,防止攻擊者進行試探。
分布式存儲模塊提供一般的文件存取接口和基本的容錯能力,支持對數(shù)據(jù)的遠程完整性證明并能夠確定出錯的數(shù)據(jù)區(qū)塊;將數(shù)值型數(shù)據(jù)與服務器的身份綁定在一起,一旦發(fā)生數(shù)據(jù)泄露事故,可以追蹤服務器。采用身份管理agent的認證服務器保護租戶的身份信息,并生成身份驗證碼作為租戶的存儲憑證;在數(shù)據(jù)值型數(shù)據(jù)中嵌入租戶的版權信息,在數(shù)據(jù)泄露時,通過租戶版權信息對服務器進行追蹤定位。
在分布式存儲模塊中,租戶創(chuàng)建隱私文件庫和版權數(shù)據(jù)庫,對隱私文件庫進行預處理,隱藏文件內(nèi)容并實現(xiàn)文件的拆分和冗余存儲,對版權數(shù)據(jù)庫進行水印嵌入:以實現(xiàn)對數(shù)據(jù)版權的保護?;趦煞N類型的數(shù)據(jù),將副本保護模塊部署在客戶端,完整性驗證模塊、追蹤定位模塊分別部署在客戶端和云服務器端,文件存取模塊部署在身份管理agent。副本保護模塊將租戶隱私文件進行拆分再冗余存儲,保證文件在發(fā)生一定損壞時能夠全部恢復。文件存取模塊用于保護租戶的身份信息,通過為租戶生成存儲憑證即存儲認證碼來防止外部攻擊者獲得更多的數(shù)據(jù)區(qū)塊從而重構出租戶的數(shù)據(jù)文件。租戶側的完整性驗證模塊生成對數(shù)據(jù)文件的公開驗證標識,并在挑戰(zhàn)應答協(xié)議中生成挑戰(zhàn)值并發(fā)送至文件存取模塊,收到返回的響應值后進行驗證,輸出完整性驗證結果。在數(shù)據(jù)完整性被破壞時,利用租戶為數(shù)據(jù)區(qū)塊生成的文件名來確定錯誤區(qū)塊。服務器側的完整性驗證模塊,在挑戰(zhàn)應答協(xié)議中生成對挑戰(zhàn)值的響應,并將其返回給文件存取模塊,還對確認錯誤區(qū)塊的請求作為響應。租戶側的追蹤定位模塊與云平臺追蹤定位模塊協(xié)商生成水印密鑰,用于將版權數(shù)據(jù)庫與服務器身份綁定,然后基于嵌入提取算法在租戶的版權數(shù)據(jù)庫中重復嵌入版權水印。
在數(shù)據(jù)預處理及存儲流程中,對于隱私文件庫,租戶使用分布式存儲模塊對數(shù)據(jù)文件進行多副本的預處理,并將文件存儲至云平臺,具體流程如下:
step1租戶將隱私文件分為k塊,然后調(diào)用副本保護模塊,生成要存儲的n個數(shù)據(jù)區(qū)塊以及區(qū)塊的名稱didi,副本保護模塊將生成的數(shù)據(jù)區(qū)塊名稱傳遞至身份管理agent的文件存取模塊。
step2身份管理agent的文件存取模塊根據(jù)租戶身份和數(shù)據(jù)區(qū)塊名稱信息生成該租戶的存儲認證碼midi,并建立用戶標示符uid和mid的映射表,將mid分別傳遞至租戶和分布式存儲服務器。
step3租戶將midi和數(shù)據(jù)區(qū)塊傳遞至分布式存儲服務器,分布式存儲服務器驗證midi是否是合法的,如果合法,則將數(shù)據(jù)區(qū)塊和midi寫入隱私數(shù)據(jù)庫表的相應列中。
對于版權數(shù)據(jù)庫,租戶調(diào)用分布式存儲模塊向數(shù)據(jù)庫嵌入版權信息,并與服務器身份綁定,流程如下:
step1租戶調(diào)用租戶側追蹤定位模塊與云平臺追蹤定位模塊協(xié)商生成水印密鑰(en,he),并將該密鑰與服務器的身份綁定,租戶將協(xié)商結果發(fā)送至遠程可信機構備份。
step2租戶調(diào)用租戶側追蹤定位模塊,基于原始水印和密鑰,生成n個版權水印,將版權水印作為版權信息嵌入到數(shù)據(jù)庫中,然后將版權數(shù)據(jù)庫傳遞至云平臺。
當租戶要確認存儲在云平臺的數(shù)據(jù)是否完整時,完整性驗證業(yè)務。流程如下:
step1租戶生成數(shù)據(jù)文件的公開驗證標識。
step2租戶調(diào)用客戶端完整性驗證模塊,生成一個挑戰(zhàn)值,將挑戰(zhàn)值和要驗證的文件區(qū)塊文件名didi傳遞至身份管理agent的文件存取模塊。
step3文件存取模塊查詢得到數(shù)據(jù)區(qū)塊的midi,將挑戰(zhàn)值和midi傳遞至云平臺完整性驗證模塊。
step4云平臺完整性驗證模塊訪問隱私數(shù)據(jù)庫表獲得租戶數(shù)據(jù)區(qū)塊,并根據(jù)挑戰(zhàn)值計算響應值,將響應值和midi傳遞至身份管理agent的文件存取模塊。
step5租戶端完整性驗證模塊對響應值進行驗證,如果通過,則一輪驗證過程結束;如果未通過,可進行后續(xù)出錯區(qū)塊的確認過程。
step6如果完整性驗證未通過,租戶端完整性驗證模塊再次請求返回對didi的錯誤區(qū)塊確認響應值,文件存取模塊查詢得到midi,要求服務器端完整性驗證模塊生成對midi對應數(shù)據(jù)內(nèi)容的響應值,將該響應值返回租戶端完整性驗證模塊。
step7租戶基于響應值和自己預處理階段生成didi中的參數(shù),確認出錯的數(shù)據(jù)區(qū)塊,由租戶下載未損壞的k個數(shù)據(jù)份額,調(diào)用副本保護模塊重構得到數(shù)據(jù)文件。
如果租戶發(fā)現(xiàn)文件泄露,則使用分布式存儲模塊確認該數(shù)據(jù)庫存儲在哪個服務器的基礎設施,流程如下:
租戶下載泄露的數(shù)據(jù)庫文件,調(diào)用云平臺追蹤定位模塊提取數(shù)據(jù)庫文件中的版權水印,生成(en’,he’),對原始水印密鑰(en,he)和(en’,he’)的相似度進行比較,如果相似度大于一定的閾值,則判定水印存在,確定服務器發(fā)生數(shù)據(jù)泄露。
在軟件虛擬化模塊中,數(shù)據(jù)流的源和目的實體的一方為主體線程,另外一方為是線程或數(shù)據(jù)對象,或是操作系統(tǒng)的抽象資源。
設線程p要讀一個隱私文件f(文件的創(chuàng)建者為其分配安全標記),執(zhí)行如下流程:
step1線程p對隱私數(shù)據(jù)d的讀操作請求被隱私數(shù)據(jù)監(jiān)控模塊截獲,判定上述操作是否符合數(shù)據(jù)流策略;
step2首先到指定位置的標記庫中獲取主體p(即其所在特許安全類的標記)和數(shù)據(jù)d的隱私性和完整性標記。
step3將標記發(fā)送至數(shù)據(jù)流策略判定執(zhí)行模塊并發(fā)送策略判定請求。
step4數(shù)據(jù)流策略判定模塊獲取主體線程p的能力;
step5基于數(shù)據(jù)d的標記,以及線程p的能力和標記進行數(shù)據(jù)流策略檢測;
step6判定p要讀一個隱私數(shù)據(jù)d的操作是否符合數(shù)據(jù)流規(guī)則,并返回策略判定結果。
最后,根據(jù)策略判定結果決定是否允許線程p讀隱私數(shù)據(jù)d。
軟件虛擬化模塊還用于追蹤租戶的隱私數(shù)據(jù),并根據(jù)安全策略控制數(shù)據(jù)的傳遞。一方面,軟件虛擬化模塊實現(xiàn)程序數(shù)據(jù)對象級別的細粒度標記和追蹤,進程地址空間內(nèi)不同租戶的數(shù)據(jù)也能進行有效的追蹤和隔離,即代碼層的數(shù)據(jù)流控制。開發(fā)者只需將基于標記的策略以固定的程序結構添加到已有的應用中。代碼要操作租戶的隱私數(shù)據(jù)時,基于最小特權原則被賦予特定的主體權限,進行標記追蹤及策略判定,只有符合安全策略才執(zhí)行對隱私數(shù)據(jù)進行操作。另一方面,進行虛擬機操作系統(tǒng)層面的安全增強,提供對上層應用中與數(shù)據(jù)流控制相關api的支撐,將租戶信息作為系統(tǒng)調(diào)用的參數(shù)傳遞至操作系統(tǒng)層,并對文件系統(tǒng)進行標記和保護,控制主體與系統(tǒng)資源間的數(shù)據(jù)傳遞。
在軟件虛擬化模塊中,被標記的對象包括java程序中的隱私數(shù)據(jù)對象、操作系統(tǒng)中的操作系統(tǒng)抽象資源以及主體線程。對象的隱私性和完整性標簽建立后不允許變更,如果需要變更對象的標記,只能復制產(chǎn)生一個新的對象,并依照數(shù)據(jù)流約束規(guī)則為其分配變更后的安全標記。主體的標記可以變更,下面分別描述代碼層和操作系統(tǒng)層數(shù)據(jù)流控制的工作原理。
本發(fā)明的方法基于java語言進行細粒度的標記和追蹤。在jvm中加入代碼層數(shù)據(jù)流控制機制,在進程的地址空間內(nèi)執(zhí)行安全策略,支持動態(tài)的類加載和多線程。當操作系統(tǒng)要設置相應的訪問控制機制時,只允許jvm進程可以訪問數(shù)據(jù)。
jvm內(nèi)存中的棧區(qū)存儲全部對象在內(nèi)存分配時,某些隱私對象按照租戶的策略被分配隱私性和完整性標記,棧對象的標記被定義數(shù)組類型。具有安全標記的對象存放在內(nèi)存棧中的獨立空間內(nèi),對象的頭部中有指向其隱私性和完整性標記的指針。對象的標記在過程中是不可變更的,避免因為對象標記變更造成信息的隱蔽通道。本發(fā)明引入的代碼層的數(shù)據(jù)流控制機制并不對所有的對象均進行標記,只在處理租戶隱私數(shù)據(jù)的程序處加入標記和策略描述,將新增的標記和數(shù)據(jù)流控制策略以代碼段的形式顯式添加到已有的應用中,以控制線程與棧對象間以及棧對象間的數(shù)據(jù)傳遞,統(tǒng)稱為特許安全類。
為了控制程序?qū)擞洈?shù)據(jù)的操作,在應用程序中進行相應的修改。在為對象分布棧內(nèi)存時,添加設置標記的相關操作。對標記對象有讀或?qū)懙炔僮鲿r,要判斷操作中的數(shù)據(jù)流向是否符合策略規(guī)則,只有符合安全策略的操作才被允許。
對于操作系統(tǒng)層的數(shù)據(jù)流控制,操作系統(tǒng)層對上層jvm提供與數(shù)據(jù)流控制相關的系統(tǒng)調(diào)用,將應用上下文傳遞至操作系統(tǒng)層,使操作系統(tǒng)線程能夠根據(jù)細粒度的保護策略實現(xiàn)對數(shù)據(jù)的保護,在應用層和操作系統(tǒng)層實現(xiàn)統(tǒng)一的安全策略模型。
同一個租戶對jvm中棧對象的標記和對操作系統(tǒng)資源的標記相互兼容,以使操作系統(tǒng)才能根據(jù)代碼層的標記追蹤提供支撐。操作系統(tǒng)資源抽象的標記是64位的整型值,存儲在各種資源抽象的擴展屬性域中。線程作為主體,具有對標記的添加或刪除能力。操作系統(tǒng)將線程對于標記的能力集合存儲在性能數(shù)據(jù)庫中。
軟件虛擬化模塊對管道的消息緩沖區(qū)進行了標記,并對進程間的通信進行控制。只有進程的標記與管理消息緩沖區(qū)的標記之間符合數(shù)據(jù)傳遞規(guī)則時,才允許進程讀管道中的數(shù)據(jù)或向管道中寫數(shù)據(jù)。
為了使分布式文件存儲支持安全數(shù)據(jù)流控制,在名字節(jié)點和數(shù)據(jù)節(jié)點上運行操作系統(tǒng)層。將隱私性和完整性標記寫入結構體節(jié)點數(shù)據(jù)結構,將該數(shù)據(jù)結構存儲在名字節(jié)點服務器上。然后在每個數(shù)據(jù)節(jié)點上將數(shù)據(jù)塊所屬文件的安全標記放入塊的數(shù)據(jù)結構內(nèi)。將分布式文件存儲安全標記與本地安全標記存在的映射關系也存儲在塊的數(shù)據(jù)結構中。
客戶端對文件的操作要依據(jù)預定義安全數(shù)據(jù)流控制策略。在創(chuàng)建標記文件時,對租戶客戶端來說,將數(shù)據(jù)存儲到分布式文件系統(tǒng),并提供文件的安全標記。當客戶端創(chuàng)建一個標記文件時,需要執(zhí)行以下流程:
step1客戶端賦予存儲這些文件的名字節(jié)點和數(shù)據(jù)節(jié)點某些能力集合,這些能力集合允許分布式文件存儲節(jié)點創(chuàng)建標記文件,由名字節(jié)點在文件系統(tǒng)命名空間中創(chuàng)建該文件。
step2客戶端向名字節(jié)點查詢一個空區(qū)塊,然后將數(shù)據(jù)流入該區(qū)塊所在的數(shù)據(jù)節(jié)點。
step3數(shù)據(jù)節(jié)點收到客戶端的數(shù)據(jù)后,將數(shù)據(jù)寫入本地文件系統(tǒng)并通知名字節(jié)點。
step4如果名字節(jié)點要將區(qū)塊復制到其他數(shù)據(jù)節(jié)點,則名字節(jié)點首先賦予這些節(jié)點相應的能力。
當有文件讀寫操作時,客戶端首先與名字節(jié)點交互,由名字節(jié)點進行策略檢測,如果客戶端的標記與文件名的標記之間不符合數(shù)據(jù)傳遞的策略,則拒絕操作請求;如果標記間允許數(shù)據(jù)傳遞,則名字節(jié)點向客戶端提供該文件所在數(shù)據(jù)節(jié)點的列表。數(shù)據(jù)節(jié)點在收到客戶端的讀寫操作請求時也要對客戶端的權限進行驗證。
如果文件包括多個屬性域,則為域標記與域名之間建立映射表,操作某個域的客戶端只需具有對相應域標記的操作權限即可對標記數(shù)據(jù)進行訪問和操作。一旦主體通過了云計算系統(tǒng)的身份認證,可執(zhí)行操作包括:創(chuàng)建一個標簽,同時也獲得了對該標簽的所有操作特權;賦予其他主體對于該標簽的能力;在其能力范圍內(nèi)添加或刪除對象的標簽。
為使本發(fā)明達到較高安全性,在代碼層模型中融入了最小特權,避免超級租戶的誤操作帶來的安全隱患。此外,公共服務進程以當前租戶的特權來處理其操作請求。當租戶a提出對其隱私數(shù)據(jù)的操作時,該請求經(jīng)由云計算系統(tǒng)中的安全通道被線程獲得,該線程對所有租戶均是授權的。該線程首先需要認證租戶的身份,一旦認證了租戶的身份,通過租戶上下文信息,該線程將其權限傳遞為租戶a主體的權限。一旦線程被主體授權執(zhí)行對隱私數(shù)據(jù)的操作,則它具有對a的隱私數(shù)據(jù)標簽t的雙重能力,并能夠?qū)的能力賦予其它主體。如果代碼中出現(xiàn)錯誤或者惡意攻擊令線程讀用戶b的隱私數(shù)據(jù),其隱私性標簽為s,則判斷線程的主體的能力,根據(jù)線程的主體不具備相關能力而禁止對用戶b的隱私操作。
對隱私數(shù)據(jù)的操作完全封裝在特許安全類中。特許安全類外部的線程無法獲得對共享數(shù)據(jù)對象的內(nèi)部指針,為了操作某個共享的隱私數(shù)據(jù)對象,當前線程必須通過顯式授權獲得相應的主體權限。當線程執(zhí)行完成代碼段中的操作后,必須顯式撤銷當前主體的權限,標記和能力集合恢復為空。另外,解密和加密這兩種特權操作被限定在創(chuàng)建標簽的主體其特許安全類中,以免造成對租戶數(shù)據(jù)的破壞。
主體標記變換遵循數(shù)據(jù)傳遞規(guī)則的約束。新主體運行的特許安全類要嵌套在先前主體的特許安全類之中,而且主體之間的轉換過程要遵循以下原則,即變換后的主體其標記和能力都不高于先前的主體。
如果特許安全類具有隱私性標記,則在特許安全類中被寫的變量不能再被特許安全類外部的程序讀。即該變量具有與特許安全類—致的隱私性標記,不能被不具備該隱私性標記的主體讀取。如果特許安全類具有完整性標記,則在該特許安全類外部被寫過的變量不能在該特許安全類中被讀。換句話說,在特許安全類外部被寫的變量,認為其完整性已經(jīng)被破壞,不能流入完整性高的特許安全類。
代碼層在出現(xiàn)內(nèi)存棧對象讀寫操作的地方添加檢測機制,在jvm實時運行時檢測主體對數(shù)據(jù)對象的訪問是否遵循安全數(shù)據(jù)流規(guī)則。在特許安全類內(nèi)部,檢測機制要加載被訪問對象的隱私性和完整性標記,基于當前特許安全類的標記和能力,當前主體的標記和能力來判定對主體是否有權執(zhí)行針對數(shù)據(jù)對象的訪問操作。在特許安全類外部,檢測機制要檢測被訪問的對象是否標記為空。
本地操作系統(tǒng)文件系統(tǒng)的標記與分布式文件存儲之間存在的映射關系存儲在文件區(qū)塊的結構體信息中。
除了對操作系統(tǒng)抽象進行標記之外,操作系統(tǒng)層還對上層與數(shù)據(jù)流控制相關的api提供相應的系統(tǒng)調(diào)用。將租戶權限的應用語義作為系統(tǒng)調(diào)用的參數(shù)傳遞至操作系統(tǒng)層,使線程獲得特許安全類中特定主體的權限,就能以該主體的權限執(zhí)行細粒度的數(shù)據(jù)傳遞控制。
綜上所述,本發(fā)明提出了一種基于云存儲的數(shù)據(jù)優(yōu)化調(diào)度方法,為數(shù)據(jù)安全存儲機制的正確執(zhí)行提供了保障。
顯然,本領域的技術人員應該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計算系統(tǒng)來實現(xiàn),它們可以集中在單個的計算系統(tǒng)上,或者分布在多個計算系統(tǒng)所組成的網(wǎng)絡上,可選地,它們可以用計算系統(tǒng)可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲系統(tǒng)中由計算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。
應當理解的是,本發(fā)明的上述具體實施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。此外,本發(fā)明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。