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