亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

適用于存儲云內(nèi)的數(shù)據(jù)隔離方法

文檔序號:68171閱讀:629來源:國知局
專利名稱:適用于存儲云內(nèi)的數(shù)據(jù)隔離方法
技術(shù)領(lǐng)域
本發(fā)明提出了一種為存儲云上的數(shù)據(jù)提供隔離服務(wù)的方法,并在以HDFS(HadOC)P Distributed File System)為基礎(chǔ)架構(gòu)的云存儲環(huán)境下實(shí)現(xiàn)了數(shù)據(jù)隔離的安全機(jī)制。本發(fā)明的技術(shù)領(lǐng)域
涉及強(qiáng)制訪問控制,分布式存儲。
背景技術(shù)
云計(jì)算作為一種新興的技術(shù)和商業(yè)應(yīng)用模式,近年來無論在業(yè)界還是學(xué)術(shù)界都獲得了廣泛的關(guān)注和巨大的推動(dòng)。云計(jì)算為企業(yè)用戶展現(xiàn)了美好的愿景。一方面,企業(yè)可以將其IT基礎(chǔ)架構(gòu)的管理和維護(hù)交由專業(yè)的云服務(wù)提供商負(fù)責(zé),從而更加專注于公司本身的業(yè)務(wù);另一方面,也是更為重要一點(diǎn)在于云計(jì)算提供的服務(wù)是自適應(yīng)性的,具備靈活的可伸縮性。企業(yè)可以根據(jù)自身業(yè)務(wù)需求量大小租賃相應(yīng)負(fù)載的云服務(wù),不會因?yàn)楣緲I(yè)務(wù)需求量不足造成現(xiàn)有IT資源的浪費(fèi),也不會因?yàn)楣疽?guī)模擴(kuò)大導(dǎo)致舊有IT架構(gòu)無法負(fù)載更大的業(yè)務(wù)量需求而需要花費(fèi)昂貴的代價(jià)重新架構(gòu)其IT基礎(chǔ)設(shè)施。
云計(jì)算的模式獲得了巨大的成功,但研究人員對于其的關(guān)注往往多集中于如何提高云平臺的可用性、可擴(kuò)展性、效率性能以及容錯(cuò)性等,卻忽視了云平臺的安全性。事實(shí)上, 實(shí)現(xiàn)安全可靠的云平臺是保證企業(yè)用戶從傳統(tǒng)模式過渡到“云模式”一個(gè)關(guān)鍵要素,這是由云本身的特點(diǎn)決定的。在“云時(shí)代”,公司的應(yīng)用運(yùn)行在遠(yuǎn)端的云平臺上,數(shù)據(jù)也存儲在云上,云底層的IT基礎(chǔ)設(shè)施由云服務(wù)提供商統(tǒng)一管理。對于應(yīng)用了云計(jì)算的企業(yè)用戶而言, 其安全界限遠(yuǎn)遠(yuǎn)超出了公司的防火墻以外,企業(yè)本身能夠控制的范圍是非常有限的。公司的應(yīng)用及數(shù)據(jù)均涉及到公司的商業(yè)機(jī)密,一旦泄露損失難以估量,甚至可能對整個(gè)公司造成毀滅性的打擊。保證云平臺的安全性對于云計(jì)算的進(jìn)一步推廣至關(guān)重要。如果無法為云平臺提供可靠的安全保障,企業(yè)用戶將很難放心的享用云帶來的巨大效益。
云存儲在云計(jì)算體系中位于IAAS anfrastructure as a krvice) —層,主要用作云平臺的存儲基礎(chǔ)設(shè)施。云存儲的數(shù)據(jù)安全是云安全重要的一環(huán)。云存儲出現(xiàn)以前,企業(yè)的數(shù)據(jù)都存儲在公司內(nèi)部的數(shù)據(jù)中心?!霸茣r(shí)代”的到來使得企業(yè)將其私有數(shù)據(jù)由內(nèi)部數(shù)據(jù)中心遷移到云服務(wù)提供商統(tǒng)一管理的公共平臺以降低公司的運(yùn)作成本。然而對于企業(yè)用戶而言,云存儲卻是一把雙刃劍。云存儲給企業(yè)帶來了收益同時(shí)也帶來了安全隱患。云存儲作為一種多租戶的數(shù)據(jù)存儲平臺,存放著來自許多企業(yè)的內(nèi)部私有數(shù)據(jù)。企業(yè)用戶通過訪問這個(gè)共享的公共平臺獲取屬于自己公司的數(shù)據(jù)。由于云存儲平臺共享的特點(diǎn),企業(yè)絕不希望自己的數(shù)據(jù)信息被同一平臺上的其它租戶竊取或者篡改。因此企業(yè)間的數(shù)據(jù)隔離是云存儲亟待解決的一個(gè)重要問題。企業(yè)用戶依據(jù)內(nèi)部的安全需求需要對來自公司不同部門或者地域的數(shù)據(jù)進(jìn)行隔離。云存儲作為公共的存儲平臺,應(yīng)該提供一種靈活多變的安全策略,它能夠方便被使用云存儲的企業(yè)用戶定制以滿足各個(gè)企業(yè)不同的安全需求。這也對云存儲企業(yè)內(nèi)的數(shù)據(jù)隔離提出了要求。
以下是目前可查到的與云存儲或分布式存儲數(shù)據(jù)隔離或者訪問控制相關(guān)的專利情況。[0006] 公開號為102014133A,發(fā)明名稱“在云存儲環(huán)境下一種安全存儲系統(tǒng)的實(shí)現(xiàn)方法” 的專利提供了在云存儲環(huán)境下一種安全存儲系統(tǒng)的實(shí)現(xiàn)方法,其特征在于在服務(wù)器中根據(jù)用戶需求建立信任域,在其中利用公鑰基礎(chǔ)設(shè)施PKI進(jìn)行身份認(rèn)證,利用用戶空間的文件系統(tǒng)FUSE,實(shí)現(xiàn)了存儲系統(tǒng)與底層系統(tǒng)無關(guān),利用哈希算法SHAl算法以塊為單位對文件計(jì)算哈希值,再利用密鑰和對稱加密算法AES算法對以塊為單位對文件塊加密,再將文件密文上傳到云存儲區(qū)中的文件服務(wù)器,保證了文件的機(jī)密性和完整性,文件所有者通過在訪問控制列表中指定具有對該文件進(jìn)行訪問的用戶及其權(quán)限,在發(fā)生權(quán)限撤銷操作時(shí),將對文件進(jìn)行重新加密的操作推遲,只有當(dāng)用戶對文件內(nèi)容進(jìn)行修改時(shí),由該用戶重新加密修改內(nèi)容所在的文件塊,系統(tǒng)實(shí)行了文件塊密鑰、安全元數(shù)據(jù)文件密鑰和信任域服務(wù)器密鑰三層密鑰管理,既保證了權(quán)限撤銷時(shí)文件的安全性,又不增加系統(tǒng)的管理負(fù)擔(dān)。
此專利的側(cè)重點(diǎn)在于保護(hù)云存儲上數(shù)據(jù)的機(jī)密性和完整性,實(shí)現(xiàn)機(jī)制是主要是通過加密算法保護(hù)數(shù)據(jù)機(jī)密性,通過哈希值來保證數(shù)據(jù)完整性,其中也粗略的提到了簡單的數(shù)據(jù)訪問控制機(jī)制,數(shù)據(jù)保護(hù)的粒度較粗。不同的是,本發(fā)明的訪問控制安全策略是有針對性的,根據(jù)云存儲這種多租戶的特殊環(huán)境制定了一系列相關(guān)的安全策略,通過強(qiáng)制訪問控制機(jī)制,極大的保證了企業(yè)間數(shù)據(jù)的強(qiáng)隔離性,企業(yè)內(nèi)部數(shù)據(jù)的適度隔離,并進(jìn)而考慮企業(yè)數(shù)據(jù)共享的情況。可以說兩者得安全目標(biāo)是截然不同的。
公開號為102006300A,發(fā)明名稱“一種云存儲數(shù)據(jù)加密方法、裝置及系統(tǒng)”的專利涉及一種云存儲數(shù)據(jù)加密方法、裝置及系統(tǒng),所述方法包括根據(jù)預(yù)置時(shí)間內(nèi)預(yù)期存儲數(shù)據(jù)量X,本地存儲空間占用比例R及數(shù)據(jù)安全級別Z計(jì)算出應(yīng)生成隨機(jī)種子的大小H ;根據(jù)每次明文數(shù)據(jù)量Y計(jì)算出對隨機(jī)種子采集的次數(shù)u ;按次數(shù)u對生成的H大小隨機(jī)種子多次采集數(shù)據(jù)生成明文加密位標(biāo)識數(shù)據(jù)串;利用該數(shù)據(jù)串選擇二分之一以上明文數(shù)據(jù)加密形成密文。此發(fā)明還提供了一種云存儲數(shù)據(jù)加密裝置及系統(tǒng)。此發(fā)明在不犧牲數(shù)據(jù)安全性前提下,減少了待存儲數(shù)據(jù)的加密數(shù)量,大大提升了云存儲數(shù)據(jù)的存儲速度。
此專利屬于云存儲安全領(lǐng)域,但其關(guān)注點(diǎn)仍在云端數(shù)據(jù)的私密性。通過提出云存儲的數(shù)據(jù)加密方法和裝置,在保證系統(tǒng)性能的大前提下提升數(shù)據(jù)的安全性。它同本發(fā)明的保障云存儲多租戶環(huán)境下數(shù)據(jù)隔離的安全目標(biāo)是截然不同的。
公開號為101316273,發(fā)明名稱” 一種分布式安全存儲系統(tǒng)”的專利目的在于克服現(xiàn)有基于證書的安全存儲系統(tǒng)中安全管理器負(fù)載重,用戶權(quán)限管理復(fù)雜的問題。此發(fā)明包括連入網(wǎng)絡(luò)的應(yīng)用客戶端、存儲設(shè)備、安全與策略管理器和元數(shù)據(jù)服務(wù)器;安全與策略管理器存儲并管理全系統(tǒng)的訪問控制項(xiàng)、訪問控制策略和規(guī)則,依據(jù)全系統(tǒng)訪問控制項(xiàng)、訪問控制策略和規(guī)則對存儲設(shè)備進(jìn)行訪問策略控制和權(quán)限控制,包括改變訪問控制項(xiàng)的優(yōu)先級和繼承規(guī)則、添加和刪除訪問控制項(xiàng)。
此專利提出了一種主/從式的安全存儲架構(gòu),通過成員或者角色的訪問控制項(xiàng)來控制主體對數(shù)據(jù)資源的訪問。同本發(fā)明類似,其實(shí)現(xiàn)針對的對象亦是主/從式的存儲架構(gòu)。 不同的是此專利側(cè)重于安全存儲架構(gòu)的設(shè)計(jì),僅通過較為簡單的自主訪問控制列表來保障分布式存儲的數(shù)據(jù)安全。本發(fā)明在此基礎(chǔ)上更進(jìn)了一步,主要面向云存儲多租戶的復(fù)雜環(huán)境,通過制定了一套靈活通用的強(qiáng)制訪問控制安全策略來實(shí)現(xiàn)預(yù)定的數(shù)據(jù)隔離安全目標(biāo), 具備環(huán)境直接針對性和更多的安全保障性。
公開號為101605137,發(fā)明名稱“安全分布式文件系統(tǒng)”的專利提出了一種安全分布式文件系統(tǒng)設(shè)計(jì),包括 認(rèn)證服務(wù)器、元數(shù)據(jù)服務(wù)器、對象存儲設(shè)備和客戶端,認(rèn)證服務(wù)器用于驗(yàn)證用戶身份,并向通過驗(yàn)證的對應(yīng)用戶提供用以請求訪問文件的目錄票據(jù)和第一臨時(shí)會話密鑰;元數(shù)據(jù)服務(wù)器根據(jù)接收的目錄票據(jù)和利用所述第一臨時(shí)會話密鑰加密的訪問請求,向?qū)?yīng)用戶提供用以請求訪問文件的文件票據(jù)、頭文件和第二臨時(shí)會話密鑰;對象存儲設(shè)備根據(jù)接收的文件票據(jù)和利用第二臨時(shí)會話密鑰加密的訪問請求,向?qū)?yīng)用戶發(fā)送密文文件,客戶端利用第一和第二臨時(shí)會話密鑰加密對應(yīng)的訪問請求以及通過頭文件來解密密文文件供對應(yīng)用戶讀寫。本發(fā)明可以對用戶的文件訪問提供安全有效的保障。
此專利側(cè)重整套安全存儲架構(gòu)的設(shè)計(jì),其核心思想使用的是票據(jù),通過認(rèn)證服務(wù)器認(rèn)證頒發(fā)認(rèn)證票據(jù),通過元數(shù)據(jù)服務(wù)器決策頒發(fā)文件訪問票據(jù),最后使用文件訪問票據(jù)訪問存儲設(shè)備上的數(shù)據(jù)。然而此專利完全沒有關(guān)注與訪問控制相關(guān)決策的策略,即元數(shù)據(jù)服務(wù)器如何做出訪問控制決策。

發(fā)明內(nèi)容
本發(fā)明針對云存儲這樣一個(gè)多租戶的存儲環(huán)境,就其數(shù)據(jù)隔離問題,提出了相應(yīng)的安全解決方案。云存儲數(shù)據(jù)隔離的安全目標(biāo)簡單來說是為了保證存儲在云間的數(shù)據(jù)只能被授權(quán)的企業(yè)用戶訪問,而無法被惡意的用戶訪問或者篡改。
本發(fā)明提出了一套云存儲系統(tǒng)安全訪問控制服務(wù),通過基于安全標(biāo)簽的強(qiáng)制訪問控制策略為企業(yè)用戶提供了數(shù)據(jù)隔離服務(wù)。本文針對云存儲的特殊環(huán)境,以RBAC(Role based Access Control)為基礎(chǔ),結(jié)合組織標(biāo)簽和多種安全屬性的邏輯組合,提出了一種靈活的訪問控制策略,一方面能夠保證云端不同企業(yè)間數(shù)據(jù)的強(qiáng)隔離性,使得企業(yè)用戶無法越權(quán)去訪問其它企業(yè)用戶的數(shù)據(jù);另一方面該策略能夠保證云存儲企業(yè)內(nèi)部數(shù)據(jù)的適度隔離,企業(yè)用戶可以根據(jù)公司自身的安全需求靈活定制企業(yè)內(nèi)的訪問控制策略,隔離來自不同部門和地域的數(shù)據(jù);最后該策略通過虛擬組織的概念在企業(yè)間數(shù)據(jù)強(qiáng)隔離的情況下實(shí)現(xiàn)了可能的數(shù)據(jù)共享,并通過中國墻策略保障同一沖突集中的企業(yè)是不能共享數(shù)據(jù)的。本文提出的策略遵循通用性原則,適用于公有云,私有云以及混合云。
本發(fā)明的技術(shù)方案為
一種適用于存儲云內(nèi)的數(shù)據(jù)隔離方法,其步驟為
1)根據(jù)租戶的安全需求,在存儲云系統(tǒng)主節(jié)點(diǎn)中建立該租戶安全策略配置,其包括主體層次化的角色模型和客體層次化的Tag模型,角色模型中的角色權(quán)限包括讀權(quán)限、 寫權(quán)限、執(zhí)行權(quán)限;
2)在存儲云系統(tǒng)主節(jié)點(diǎn)中創(chuàng)建屬于該租戶的主體用戶,并為主體用戶打上該租戶角色模型中的角色標(biāo)簽;
3)在存儲云系統(tǒng)主節(jié)點(diǎn)中將某租戶的主體用戶創(chuàng)建的客體資源上,打上該租戶 Tag模型中的Tag標(biāo)簽;
4)根據(jù)訪問客體資源的角色權(quán)限,設(shè)置角色主體對訪問資源客體的安全訪問策略并將其存儲到存儲云系統(tǒng)的主節(jié)點(diǎn)中;所述安全訪問策略為
a)對于主體對客體的讀訪問,要求主客體所屬租戶一致,并且存在賦予主體的角色k,使得角色k的讀權(quán)限表達(dá)式在客體標(biāo)簽為真的情況下計(jì)算結(jié)果也為真;
b)對于主體對客體的寫訪問,要求主客體所屬租戶一致,并且存在賦予主體的角色k,使得角色k的寫權(quán)限表達(dá)式在客體標(biāo)簽為真的情況下計(jì)算結(jié)果也為真;
c)對于主 體對客體的執(zhí)行訪問,要求主客體所屬租戶一致,并且存在賦予主體的角色k,使得角色k的執(zhí)行權(quán)限表達(dá)式在客體標(biāo)簽為真的情況下計(jì)算結(jié)果也為真;
5)主節(jié)點(diǎn)根據(jù)所述安全訪問策略,判斷角色主體對訪問資源客體的訪問是否通過,如果通過則允許訪問,否則拒絕訪問。
進(jìn)一步的,所述主體角色模型為一具有角色繼承關(guān)系的層次化標(biāo)簽森林,每一標(biāo)簽具有一角色權(quán)限。
進(jìn)一步的,所述客體層次化的Tag模型為一具有繼承關(guān)系的層次化標(biāo)簽森林。
進(jìn)一步的,所述主節(jié)點(diǎn)采用XML文件存儲所述安全策略配置;采用字符串形式表達(dá)所述角色權(quán)限表達(dá)式。
進(jìn)一步的,所述主節(jié)點(diǎn)中設(shè)置一哈希表結(jié)構(gòu)的安全配置池,其中,鍵為租戶名稱, 值包括哈希表結(jié)構(gòu)的角色配置池、標(biāo)簽配置池;所述角色配置池的鍵為角色名稱,值為角色對象;所述標(biāo)簽配置池的鍵為標(biāo)簽名稱,值為標(biāo)簽對象;角色對象通過父指針指向其在所述角色模型中的父節(jié)點(diǎn);標(biāo)簽對象通過父指針指向其在所述Tag模型中的父節(jié)點(diǎn);主節(jié)點(diǎn)根據(jù)輸入的租戶信息、以及主體角色名或客體標(biāo)簽名,利用所述安全配置池查找角色對象或標(biāo)簽對象。
進(jìn)一步的,所述主節(jié)點(diǎn)判斷角色主體對訪問資源客體的訪問是否通過的方法為 主節(jié)點(diǎn)將字符串形式表示的角色權(quán)限表達(dá)式轉(zhuǎn)化成后序表達(dá)式樹,然后根據(jù)給定表達(dá)式變量值,利用權(quán)限表達(dá)式樹計(jì)算出決策結(jié)果。
進(jìn)一步的,所述主節(jié)點(diǎn)采用鏡像文件和操作訪問日志持久化所述安全策略配置。
進(jìn)一步的,角色主體對訪問資源客體進(jìn)行訪問的方法為
1)角色主體向主節(jié)點(diǎn)發(fā)送要訪問的文件名,訪問的文件偏移量以及要訪問客體資源的數(shù)據(jù)長度;
2)主節(jié)點(diǎn)為該角色主體生成訪問票據(jù)并用集群內(nèi)共享的密鑰對票據(jù)進(jìn)行加密,然后將該角色主體要訪問的數(shù)據(jù)塊的標(biāo)識及其所在數(shù)據(jù)節(jié)點(diǎn)的位置,以及加密后的訪問票據(jù)發(fā)送給該角色主體;
3)該角色主體對于每一個(gè)數(shù)據(jù)塊,選擇具有該數(shù)據(jù)塊且距離該角色主體最近的數(shù)據(jù)節(jié)點(diǎn),發(fā)送該數(shù)據(jù)塊標(biāo)識和訪問票據(jù),請求訪問該數(shù)據(jù)塊;
4)數(shù)據(jù)節(jié)點(diǎn)使用集群內(nèi)共享的密鑰解密訪問票據(jù),判定該角色主體是否有權(quán)限訪問相應(yīng)的數(shù)據(jù)塊,如果允許訪問,則向該角色主體回送數(shù)據(jù)塊的數(shù)據(jù),否則拒絕訪問。
進(jìn)一步的,所述訪問票據(jù)包括角色主體的標(biāo)識符、角色主體要訪問數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識以及訪問的具體操作。
進(jìn)一步的,對于寫訪問操作首先,角色主體遠(yuǎn)程調(diào)用主節(jié)點(diǎn)的create方法,開始新文件的創(chuàng)建,主節(jié)點(diǎn)采用租約方法為新創(chuàng)建的文件增加排它鎖;然后角色主體遠(yuǎn)程調(diào)用主節(jié)點(diǎn)的addBlock方法,主節(jié)點(diǎn)在接收到addBlock請求后會返回給角色主體一個(gè) LocatedBlock對象,其包括新建數(shù)據(jù)塊的標(biāo)識以及能夠?qū)懭霐?shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn);最后,角色主體遠(yuǎn)程調(diào)用主節(jié)點(diǎn)的complete方法,完成新文件的創(chuàng)建。
云存儲作為一個(gè)多租戶共享的存儲基礎(chǔ)架構(gòu),存在著自身安全的復(fù)雜性和特殊性。由云服務(wù)提供商所管理的公有云存儲上存放著來自不同企業(yè)組織的私有數(shù)據(jù),而由企業(yè)自身負(fù)責(zé)管理維護(hù)的私有云存儲上也存放著來自企業(yè)不同部門的私有數(shù)據(jù),這些不同的企業(yè)組織之間,以及企業(yè)內(nèi)部的不同部門之間就構(gòu)成了云存儲的多租戶。無論是來自不同企業(yè)之間的數(shù)據(jù),還是來自公司內(nèi)部不同部門的數(shù)據(jù)在公共的存儲環(huán)境上都需要被安全的隔離,以保證來自不同租戶數(shù)據(jù)的私密性。因此,不論是公有云或者是私有云,亦或者是兩者構(gòu)成的混合云,都需要有一定的安全的和排他的虛擬存儲環(huán)境。這樣才能夠保證存放在云上的數(shù)據(jù)的安全性,才能夠促進(jìn)云的進(jìn)一步推廣和應(yīng)用,本策略正是基于此而提出的。
安全策略設(shè)計(jì)的目標(biāo)如下
1.企業(yè)之間數(shù)據(jù)的強(qiáng)隔離性。對于公有云存儲而 言,云服務(wù)提供商必須要嚴(yán)格保障來自不同公司的數(shù)據(jù)被安全的隔離。公有云上存儲著來自許多不同企業(yè)的數(shù)據(jù),同時(shí)使用同一云服務(wù)提供商服務(wù)的某些企業(yè)之間甚至是同一塊市場的激烈競爭者。一個(gè)企業(yè)內(nèi)部的私密數(shù)據(jù)對其而言是重要的生命線,一旦泄露后果不堪設(shè)想,因此必須嚴(yán)格的保障企業(yè)和企業(yè)間數(shù)據(jù)的強(qiáng)隔離性。
2.靈活的企業(yè)內(nèi)部數(shù)據(jù)隔離。無論對于存儲在公有云上來自同一企業(yè)不同部門的數(shù)據(jù),還是存儲在企業(yè)內(nèi)部私有云上的不同部門的數(shù)據(jù),都需要進(jìn)行一定程度的安全隔離。 企業(yè)的每一個(gè)部門有自身的職責(zé)劃分,它們分管企業(yè)某一塊任務(wù)拼圖的運(yùn)作,比如生產(chǎn)部負(fù)責(zé)產(chǎn)品的制造,人事部負(fù)責(zé)人才的招聘和管理,以及財(cái)務(wù)部負(fù)責(zé)公司的收入和支出管理。 根據(jù)系統(tǒng)安全的最基本原則”最小特權(quán)原則”,安全的系統(tǒng)一方面應(yīng)該給予主體必不可少的權(quán)限,保證所有的主體都能夠在賦予的權(quán)限之下完成所需要的任務(wù)和操作,另一方面也只給予主體必不可少的權(quán)限,這樣就能夠限制每個(gè)主體所能進(jìn)行的操作,確保蓄意或者不小心越權(quán)造成的錯(cuò)誤和事故導(dǎo)致的損失最小。因此不同部門間的數(shù)據(jù)也是需要進(jìn)行一定程度的安全隔離以保證最小特權(quán)原則。因?yàn)楣緝?nèi)部部門存在著一定的協(xié)作關(guān)系,部分?jǐn)?shù)據(jù)的共享在所難免,它們之間數(shù)據(jù)隔離應(yīng)當(dāng)具備適當(dāng)?shù)撵`活性,不應(yīng)當(dāng)使用企業(yè)之間數(shù)據(jù)的強(qiáng)隔離特性。
3.企業(yè)之間數(shù)據(jù)共享的情況。當(dāng)企業(yè)之間有協(xié)作關(guān)系時(shí),也會存在著一定數(shù)據(jù)共享的情況。如果雙方企業(yè)都使用云作為存儲平臺,那么公有云存儲可以成為公司間數(shù)據(jù)共享的很好媒介平臺。企業(yè)的應(yīng)用可以在不用改變數(shù)據(jù)訪問的接口的情況下直接去訪問存儲在云上的另一個(gè)企業(yè)的數(shù)據(jù)。然而企業(yè)間數(shù)據(jù)的共享需求和企業(yè)間數(shù)據(jù)的隔離需求存在著很大程度的矛盾和沖突。需要有一種機(jī)制能夠在保障企業(yè)間數(shù)據(jù)強(qiáng)隔離的情況下,完成企業(yè)數(shù)據(jù)的共享。另外一些企業(yè)是同一塊市場的激烈競爭者,如中國移動(dòng)和中國聯(lián)通,中國石油和中國石化。這些公司由于雙方利益存在很大的沖突,它們可能不希望與競爭對手共享數(shù)據(jù),應(yīng)當(dāng)有相關(guān)的機(jī)制防止誤操作或惡意操作導(dǎo)致它們之間數(shù)據(jù)的共享。
策略設(shè)計(jì)原則
本發(fā)明提出的安全策略基于如下的設(shè)計(jì)原則
1.通用性。無論是多個(gè)企業(yè)共享的公有云,還是企業(yè)內(nèi)部使用的私有云,或者是公有云和私有云構(gòu)成的混合云,它們都存在著多租戶數(shù)據(jù)隔離的安全需求,因此安全策略應(yīng)該是通用的,能夠適用于各種不同的云環(huán)境。
2.靈活性。各個(gè)企業(yè)存在著自身不同的安全需求,因此存在多租戶的云存儲上的安全策略應(yīng)當(dāng)是靈活的,能夠適用于各個(gè)公司不同的情況。企業(yè)用戶可以根據(jù)自身的安全需求靈活的定制安全策略,實(shí)現(xiàn)其安全目標(biāo)。[0048]3.層次性。此安全策略是主要針對企業(yè)用戶設(shè)計(jì)的。大部分企業(yè)的劃分具有一定的層次性,安全策略中主體和資源客體的屬性應(yīng)該能夠體現(xiàn)出企業(yè)的這種層次的特性。
具體策略描述
本發(fā)明所設(shè)計(jì)的安全策略是基于RBAC模型的,它實(shí)現(xiàn)了文中描述的安全目標(biāo),提供了云存儲的數(shù)據(jù)隔離服務(wù)。策略的核心是基于主客體安全標(biāo)簽的強(qiáng)制訪問控制。本節(jié)分為三小節(jié),分別描述主體的安全標(biāo)簽設(shè)計(jì),客體的安全標(biāo)簽設(shè)計(jì)以及基于主客體安全標(biāo)簽的訪問控制規(guī)則。文中所指的組織,企業(yè),公司,租戶均可認(rèn)為是同一概念,只是在不同的應(yīng)用場景中使用。
1>主體安全標(biāo)簽
層次化的角色模型
RBAC模型預(yù)先定義了一組具備相應(yīng)權(quán)限的角色(role),在遵循最小特權(quán)原則的基礎(chǔ)上為相關(guān)用戶賦予相應(yīng)的角色。給用戶賦予角色的過程實(shí)際上也是為用戶賦予一定權(quán)限的過程。擴(kuò)展的RBAC模型更具備靈活性,角色和角色之間可以存在繼承的關(guān)系。角色繼承的意義主要在于不用重復(fù)定義一些已經(jīng)定義過的角色的權(quán)限,而是可以通過繼承的方式自動(dòng)承接所有祖先節(jié)點(diǎn)的角色權(quán)限,在此基礎(chǔ)上進(jìn)行角色權(quán)限的特定擴(kuò)展。圖1顯示了三組定義好的角色繼承的層次樹結(jié)構(gòu)??梢苑Q作角色的森林。
主體安全標(biāo)簽定義
由于每個(gè)公司有不同的安全需求,因此其也會有不同的角色定義的需求。因此這里允許每個(gè)公司擁有自己不同的角色定義的森林。為了區(qū)分不同公司的角色定義,需要在資源訪問的主體安全標(biāo)簽內(nèi)加上特定公司的標(biāo)簽。一方面它可以區(qū)分不同公司的角色森林,另一方面它也可以實(shí)現(xiàn)公司間數(shù)據(jù)的隔離,關(guān)于這一點(diǎn)將在后面說明。
云存儲中資源訪問的主體標(biāo)簽如下
〈org” role” role2,role3,. . .,rolen> 或〈org,role list>
圖2的示例進(jìn)一步說明了主體標(biāo)簽的角色定義。
2>客體安全標(biāo)簽
層次化的標(biāo)簽?zāi)P?br>使用標(biāo)簽(Tags)來對資源訪問的客體進(jìn)行標(biāo)識。如果采用Web上常用的平面標(biāo)簽?zāi)P?,確實(shí)它非常的靈活,但卻存在兩方面的問題。首先由于它的平面結(jié)構(gòu),它無法表達(dá)公司或者組織內(nèi)部的層次化機(jī)構(gòu),這點(diǎn)對于公司而言是很不合理的;其次由于在標(biāo)簽定義上沒有控制,很容易造成標(biāo)簽定義爆炸,會定義大量語義相同然而名字不同的標(biāo)簽,給整個(gè)系統(tǒng)的維護(hù)和運(yùn)作帶來困難。因此我們決定在此基礎(chǔ)上對其進(jìn)行改進(jìn),將平面的標(biāo)簽?zāi)P瓦M(jìn)行擴(kuò)展成為層次化的對象標(biāo)簽?zāi)P汀?br>層次化的對象標(biāo)簽?zāi)P蛻?yīng)用場景如下首先由公司內(nèi)部的高層管理人員根據(jù)公司需求,按照不同的準(zhǔn)則(如地域,部門等)對公司進(jìn)行具體劃分,這樣就能構(gòu)成由很多樹構(gòu)成的森林,樹上的每一個(gè)節(jié)點(diǎn)即代表了這個(gè)公司內(nèi)部的一個(gè)可控的標(biāo)簽。通過這種方式,大大限制了系統(tǒng)中存在的標(biāo)簽個(gè)數(shù),并且很好的表達(dá)出了公司內(nèi)部的層次化的結(jié)構(gòu)。在層次化的標(biāo)簽?zāi)P椭校庸?jié)點(diǎn)相當(dāng)于自動(dòng)繼承了其祖先節(jié)點(diǎn)的標(biāo)簽,因此也就擁有多個(gè)標(biāo)簽。
圖3說明了這種層次化的標(biāo)簽?zāi)P?,可以稱作標(biāo)簽的森林。
客體安全標(biāo)簽定義[0065]同主體的安全標(biāo)簽類似,每個(gè)公司也會針對于自身的安全需求來創(chuàng)建自己專屬的不同的標(biāo)簽森林。在客體的標(biāo)簽上需要對不同公司的標(biāo)簽進(jìn)行區(qū)分,當(dāng)然這也是保證公司之間數(shù)據(jù)隔離的需要。
云存儲中資源訪問的客體標(biāo)簽如下
〈org” tag” tag2, tag3, . . . , tagn> 或 <org, tag list)
圖4進(jìn)一步說明了客體標(biāo)簽的定義。
3>訪問控制規(guī)則
角色的權(quán)限定義
由于系統(tǒng)的強(qiáng)制訪問控制是基于RBAC的,RBAC中的角色脫離了權(quán)限的定義是無意義的,本小節(jié)主要對角色權(quán)限進(jìn)行了定義。根據(jù)客戶在云存儲的訪問需求,這里為每個(gè) role分別制定相應(yīng)的讀(R),寫(W)以及執(zhí)行⑴權(quán)限,即為role (permr, permw, permx)。
權(quán)限定義針對云存儲上的文件和目錄的概念是不一樣的,如下所示
1>針對普通文件的權(quán)限定義
·讀權(quán)限(R)對此文件擁有讀權(quán)限
·寫權(quán)限(W)對此文件擁有寫權(quán)限
·執(zhí)行權(quán)限(X)針對于云存儲的特性,執(zhí)行權(quán)限不適用于普通文件。
2>針對目錄/文件夾的權(quán)限定義
·讀權(quán)限(R)可以查看此文件夾下的文件和子文件夾列表(類似于允許執(zhí)行Is 操作)
·寫權(quán)限(W)可以對此文件夾下創(chuàng)建文件,刪除文件,修改文件名
·執(zhí)行權(quán)限(X)可以進(jìn)入此文件夾(類似于允許執(zhí)行Cd操作)
對于讀,寫,執(zhí)行權(quán)限的具體定義是一致的,都是使用客體的Tag標(biāo)簽加上于 (&&),或(| |),非(!)三種邏輯運(yùn)算符組合構(gòu)成的權(quán)限表達(dá)式(expr)。具體定義可以用下面的表達(dá)式描述所示.邏輯運(yùn)算符的優(yōu)先級為非(!)>與(&&)=或(I I),從左到右計(jì)算,可以使用括號來改變權(quán)限表達(dá)式的運(yùn)算次序。
1. entity: = {all available tags}.
2. predicate: = {&&,| , ! }
3. expr := entity | (expr) | / expr | expr && expr | expr | /expr
/'. expr ->
ii. expr- > entity
iii. expr- > (expr)
iv. expr- > ! expr
v. expr- > exprMexpr
vi. expr- > expr//expr
4. perm: = expr
5. role :<r:permr, w:permw, x:permx>
另外,根據(jù)之前的層次性的模型,角色還是自動(dòng)繼承其祖先節(jié)點(diǎn)的權(quán)限,即讀權(quán)限還會擴(kuò)展繼承所有祖先的讀權(quán)限,寫權(quán)限還會擴(kuò)展繼承所有祖先的寫權(quán)限,執(zhí)行權(quán)限還會擴(kuò)展繼承所有祖先的執(zhí)行權(quán)限。
訪問規(guī)則定義
訪問規(guī)則是整個(gè)策略的核心,無論是主體標(biāo)簽還是客體標(biāo)簽的定義都是服務(wù)于最終的訪問規(guī)則的,訪問規(guī)則才是策略的重點(diǎn)所在。這里針對于讀,寫,執(zhí)行權(quán)限定義了三套訪問規(guī)則。
1.預(yù)備定義
Tag繼承樹定義
i> 定義 explict_tags(o)為客體標(biāo)簽 <org,tag1; tag2,,· · .,tagn> 中明確定義的 tag集合。
ii> 定義 implicit_tags (ο)為 explict_tags (ο)中所有 tag 的祖先 tag 的集合。
iii> 定義 all_tags(o)為 explict_tags (ο)禾口 implicit_tags (ο)的并集。
Role繼承樹定義
i> 定義 explict_roles(s)為主體標(biāo)簽 <org, role” role2, · · ·,rolen> 中明確定義的role集合。
ii> j^x implicit一roles (s)為 explict_tags (s) ^IjfW role 白勺role 白勺_
口 O
iii> 定義 all_roles(s) % explict_roles (s)禾口 implicit_roles (s)的并集。
2.訪問規(guī)則定義
1)讀訪問規(guī)則
假定有主體S和客體0,主體S能讀客體0當(dāng)且僅當(dāng)以下條件滿足
a) org (S) = org(0),
b) 3k e α// —m^(S),使得在all_tags (ο)中的tag變量值均為true的情況下, Permr (k)的邏輯表達(dá)式計(jì)算結(jié)果也為true (客體的所有Tag標(biāo)簽決定了當(dāng)前權(quán)限表達(dá)式中Tag變量的輸入值,如有客體有這個(gè)標(biāo)簽,那么權(quán)限表達(dá)式中的Tag變量為true,否則為 false。這里就是說用客體所有的tag代入權(quán)限表達(dá)式的情況下,能夠使得權(quán)限表達(dá)式(這里即permr(k))計(jì)算結(jié)果為true ;即存在賦予主體S的角色R,使得permr (R)在客體Tag 變量輸入的條件下邏輯表達(dá)式計(jì)算結(jié)果為真);
即要求主客體所屬組織一致,并且存在賦予主體的角色k使得此角色的讀權(quán)限表達(dá)式(pernv(k))在客體Tag標(biāo)簽為真的情況下計(jì)算結(jié)果也為真。
2)寫訪問規(guī)則
假定有主體S和客體0,主體S能寫客體0當(dāng)且僅當(dāng)以下條件滿足
a) org (S) = org(0)
b)使得在all_tagS(o)中的tag變量值均為true的情況下, Permw (k)的邏輯表達(dá)式計(jì)算結(jié)果也為true (即存在賦予主體S的角色R,使得permw (R)在客體Tag變量輸入的條件下邏輯表達(dá)式計(jì)算結(jié)果為真)
即要求主客體所屬組織一致,并且存在賦予主體的角色k使得此角色的寫權(quán)限表達(dá)式(pernv(k))在客體Tag標(biāo)簽為真的情況下計(jì)算結(jié)果也為真。
3)執(zhí)行訪問規(guī)則[0117]假定有主體S和客體0,主 體S能執(zhí)行客體0當(dāng)且僅當(dāng)以下條件滿足
a) org (S) = org(0)
b)m^(S),使得在all_tagS(0)中的tag變量值均為true的情況下, Permx (k)的邏輯表達(dá)式計(jì)算結(jié)果也為true (即存在賦予主體S的角色R,使得permx (R)在客體Tag變量輸入的條件下邏輯表達(dá)式計(jì)算結(jié)果為真)
即要求主客體所屬組織一致,并且存在賦予主體的角色k使得此角色的執(zhí)行權(quán)限表達(dá)式(permx(k))在客體Tag標(biāo)簽為真的情況下計(jì)算結(jié)果也為真。
4>虛擬組織和中國墻
企業(yè)之間有時(shí)因?yàn)橄嗷f(xié)作關(guān)系存在著數(shù)據(jù)的共享,然而企業(yè)間數(shù)據(jù)的強(qiáng)隔離和企業(yè)數(shù)據(jù)的共享是相悖的。為了滿足企業(yè)之間數(shù)據(jù)共享的特殊需求,這里引入虛擬組織的概念。虛擬組織指的是希望共享數(shù)據(jù)的幾個(gè)企業(yè)共同建立的虛擬的組織,在現(xiàn)實(shí)中是不存在的。虛擬組織也可以有自己的用戶和數(shù)據(jù),通過為存在協(xié)作關(guān)系的企業(yè)用戶之間創(chuàng)建虛擬組織的用戶,并給這些企業(yè)某些私有數(shù)據(jù)打上虛擬組織的標(biāo)簽,那么根據(jù)之前定義訪問控制規(guī)則便可以實(shí)現(xiàn)企業(yè)間數(shù)據(jù)的共享。此時(shí),主體和共享的客體的企業(yè)屬性都是此虛擬組織,它們是匹配的,因此允許主體訪問客體資源。
某些企業(yè)用戶之間共享同一市場,之間存在著激烈的競爭關(guān)系,如中國移動(dòng)和中國聯(lián)通,中國石油和中國石化。這些公司由于雙方利益存在很大的沖突,它們可能不希望和競爭對手共享數(shù)據(jù),應(yīng)當(dāng)有相關(guān)的機(jī)制防止誤操作或惡意操作導(dǎo)致它們之間數(shù)據(jù)的共享。這里可以應(yīng)用中國墻模型(參考THE CHINESE WALL SECURITY POLICY, Dr. David F. C. Brewer and Dr. Michael J. Nash),通過制定沖突集,保證同一沖突集內(nèi)的企業(yè)無法建立虛擬組織。如將中國移動(dòng)和中國聯(lián)通放置在同一沖突集內(nèi),將中國石油和中國石化放在另一沖突集內(nèi),這樣便可以防止它們數(shù)據(jù)的共享。
與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為
本發(fā)明針對云存儲的特殊環(huán)境,以RBAC(Role based Access Control)為基礎(chǔ),結(jié)合組織標(biāo)簽和多種安全屬性的邏輯組合,提出了一種靈活的訪問控制策略,一方面能夠保證云端不同企業(yè)間數(shù)據(jù)的強(qiáng)隔離性,使得企業(yè)用戶無法越權(quán)去訪問其它企業(yè)用戶的數(shù)據(jù); 另一方面該策略能夠保證云存儲企業(yè)內(nèi)部數(shù)據(jù)的適度隔離,企業(yè)用戶可以根據(jù)公司自身的安全需求靈活定制企業(yè)內(nèi)的訪問控制策略,隔離來自不同部門和地域的數(shù)據(jù);最后該策略通過虛擬組織的概念在企業(yè)間數(shù)據(jù)強(qiáng)隔離的情況下實(shí)現(xiàn)了可能的數(shù)據(jù)共享,并通過中國墻策略保障同一沖突集中的企業(yè)是不能共享數(shù)據(jù)的。本文提出的策略遵循通用性原則,適用于公有云,私有云以及混合云。


圖1層次化的主體角色模型;
(a)角色層次樹a (b)角色層次樹b (c)角色層次樹c
圖2與圖1對應(yīng)的主體標(biāo)簽定義示例;
圖3層次化的客體Tag模型;
(a)標(biāo)簽層次樹a (b)標(biāo)簽層次樹b (c)標(biāo)簽層次樹c
圖4與圖3對應(yīng)的客體標(biāo)簽定義示例;[0132]圖5基于HDFS的安全體系結(jié)構(gòu)設(shè)計(jì);
圖6安全配置池的動(dòng)態(tài)結(jié)構(gòu);
圖7權(quán)限表達(dá)式轉(zhuǎn)化為后序表達(dá)式樹示意圖;
圖8后序表達(dá)樹計(jì)算權(quán)限表達(dá)式值示意圖;
圖9基于票據(jù)的訪問控制示意圖。
具體實(shí)施方式
本發(fā)明基于Hadoop分布式文件系統(tǒng)(HDFS)開發(fā)了數(shù)據(jù)隔離的安全機(jī)制。分布式文件系統(tǒng)廣泛用作云存儲的底層基礎(chǔ)設(shè)施,商業(yè)化的云存儲Cloudera其底層使用正是 HDFS。使用開源的HDFS開發(fā)安全機(jī)制原型有利于對整個(gè)系統(tǒng)的效果評估。
圖5描繪了基于HDFS架構(gòu)的安全體系結(jié)構(gòu)設(shè)計(jì)。
原型系統(tǒng)的核心是安全決策模塊。為了判定主體是否有權(quán)限訪問資源客體,安全決策模塊需要首先獲取主客體安全標(biāo)簽的信息及當(dāng)前系統(tǒng)的安全策略。在HDFS中,文件系統(tǒng)的元信息存儲在主節(jié)點(diǎn)Namenode —端,因此安全標(biāo)簽及安全策略這類安全元信息按照原有設(shè)計(jì)也應(yīng)當(dāng)存儲在Namenode端,并由Namenode加以管理;從安全的角度上看亦是如此。如果將敏感的安全元信息分布在集群內(nèi)多個(gè)Datanode節(jié)點(diǎn)上,那么勢必增加安全的風(fēng)險(xiǎn),因?yàn)檎麄€(gè)系統(tǒng)需要保護(hù)的安全界限明顯的增大了,保護(hù)單節(jié)點(diǎn)的Namenode會比保護(hù)多節(jié)點(diǎn)的Datanode要簡單的多;將安全元信息放在單節(jié)點(diǎn)的Namenode上也便于系統(tǒng)的管理維護(hù)。由此可見,將系統(tǒng)安全元信息放在Namenode—端是良好的設(shè)計(jì),它既遵循了原有系統(tǒng)的設(shè)計(jì)也便于管理維護(hù),并且安全可靠性更高。
Namenode端的安全決策模塊在作出訪問控制判定后,需要在整個(gè)分布式的系統(tǒng)中實(shí)施安全決策,包括數(shù)據(jù)塊讀寫請求決策的實(shí)施。安全決策的實(shí)施是通過網(wǎng)絡(luò)節(jié)點(diǎn)的交互完成的,包括DFSClient和Namenode之間元信息交互,DFSClient和Datanode的數(shù)據(jù)流交互以及在寫數(shù)據(jù)塊過程中Datanode和Datanode之間的數(shù)據(jù)流交互。
在DFSClient端提供了一些管理命令,通過這些命令接口可以查詢修改Namenode 上的安全元信息。當(dāng)然絕大數(shù)這些命令是提供給管理員的,普通用戶沒有權(quán)限使用這些命令。
下面說明各個(gè)關(guān)鍵模塊的設(shè)計(jì)與實(shí)現(xiàn)。
1>主客體安全標(biāo)簽的設(shè)計(jì)與實(shí)現(xiàn)
依照HDFS的原有設(shè)計(jì),為了保證系統(tǒng)的性能,文件系統(tǒng)的元信息都是保存在 Namenode內(nèi)存中以供運(yùn)行時(shí)快速訪問。因此對于需要經(jīng)常訪問的主客體安全標(biāo)簽這類元信息,也應(yīng)當(dāng)存放在Namenode內(nèi)存中以防止降低系統(tǒng)效率??腕w標(biāo)簽可以存放在代表文件目錄樹節(jié)點(diǎn)的類INode內(nèi),但由于不存在現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)存放主體信息,主體標(biāo)簽需新建數(shù)據(jù)結(jié)構(gòu)保存,可以通過哈希表的索引結(jié)構(gòu)存儲系統(tǒng)中所有的主體標(biāo)簽,在需要獲取相應(yīng)主體標(biāo)簽時(shí)根據(jù)主體名從哈希表中獲取。
內(nèi)存中的主客體安全標(biāo)簽信息需要實(shí)現(xiàn)持久化機(jī)制以在系統(tǒng)斷電后長期保存。 Namenode同時(shí)采用鏡像文件fsimage和操作訪問日志edits持久化內(nèi)存中系統(tǒng)的元信息。 鏡像文件fsimage記錄了整個(gè)文件系統(tǒng)的元信息,而操作日志edits則記錄運(yùn)行時(shí)對元信息的更新操作。Namenode每次啟動(dòng)時(shí)會首先載入鏡像文件fsimage以裝載系統(tǒng)的元信息,并在此基礎(chǔ)上重放操作日志edits中的每一條操作記錄將內(nèi)存中的元信息更改至最新。在系統(tǒng)運(yùn)行時(shí),如果系統(tǒng)有操作修改了 Namenode內(nèi)存中的元信息,Namenode會同時(shí)向操作日志寫入該條操作的信息,以便下次重放。系統(tǒng)會不定時(shí)的將內(nèi)存中最新的元信息重新寫入 fsimage,并清空操作日志。通過應(yīng)用操作日志的方法,Namenode可以避免每次系統(tǒng)元信息更新都需要重新寫入整個(gè)系統(tǒng)元信息鏡像以防止系統(tǒng)異常崩潰導(dǎo)致的元信息更新丟失,同時(shí)還可以減少系統(tǒng)I/O保證性能。因此通過鏡像文件fsimage和操作日志edits部分的代碼修改來實(shí)現(xiàn)主客體安全標(biāo)簽的持久化/非持久化。
2>系統(tǒng)安全策略的設(shè)計(jì)與實(shí)現(xiàn)
安全策略是另一類需要經(jīng)常訪問的信息。每個(gè)組織均可根據(jù)內(nèi)部安全需求建 立特有的主體角色模型和客體標(biāo)簽?zāi)P停娣旁谝詘ml文件表示的安全策略配置文件中。XML層次化的格式使得它能夠很好的適應(yīng)這種角色。安全策略配置文件中描述了每個(gè)組織特有的角色層次樹和Tag層次樹,并為組織內(nèi)所有角色定義了以字符串形式表達(dá)的讀,寫以及執(zhí)行所要求的權(quán)限表達(dá)式。
系統(tǒng)在初始化時(shí)載入所有企業(yè)用戶的安全策略配置以提升運(yùn)行時(shí)效率。在 Namenode內(nèi)存中為每個(gè)企業(yè)維護(hù)一個(gè)Role配置池(RolePool)和一個(gè)Tag配置池 (TagPool),其中的Role對象和Tag對象即保存了企業(yè)用戶相關(guān)的安全策略配置。在系統(tǒng)運(yùn)行時(shí)刻,如果主體需要引用Role標(biāo)簽或客體需要引用Tag標(biāo)簽,可以直接通過安全配置池快速獲取,而不用反復(fù)讀取安全配置文件進(jìn)行耗時(shí)的I/O操作。
圖6描述了安全配置池在內(nèi)存中的動(dòng)態(tài)結(jié)構(gòu)。
安全配置池通過兩級索引可以快速定位到具體的Role對象和Tag對象。 Organization Pool為每個(gè)組織維護(hù)一個(gè)配置池,使用的是哈希表的索引結(jié)構(gòu),其主鍵為組織的名字(orgName),值包含Role配置池(role pool)和Tag配置池(tag pool)。Role配置池和Tag配置池同樣使用的是哈希表結(jié)構(gòu)。Role配置池的鍵為角色的名字,值為角色對象(Role Object)。Tag配置池的鍵為Tag的名字,值為Tag對象(Tag Object)。Role對象使用parent指針指向在角色模型中的父親節(jié)點(diǎn),Role對象通過parent指針這種相互引用的關(guān)系形成了一種層次性的結(jié)構(gòu),但并不是所有的Role都有這種祖先后輩的聯(lián)系。從最上層看就形成了一片Role對象的森林。對于Tag對象也一樣,Tag對象使用parent指針相互引用最終也形成了一片Tag對象的森林。
組織內(nèi)的主體用戶可以由該組織的管理員創(chuàng)建,主體的組織標(biāo)簽取決于創(chuàng)建它的管理員所屬的組織,即某組織管理員創(chuàng)建的主體用戶都隸屬于該組織,該管理員不能創(chuàng)建其它組織的用戶;客體資源的組織標(biāo)簽由創(chuàng)建客體的主體用戶決定,即某組織的主體用戶創(chuàng)建的客體資源默認(rèn)屬于該組織所有。組織管理員可以為組織內(nèi)的主體用戶增加角色標(biāo)簽,亦可為組織內(nèi)的客體資源增加Tag標(biāo)簽,前提是該角色標(biāo)簽和Tag標(biāo)簽都在該組織的安全配置中有定義。在組織管理員為主體或客體執(zhí)行增加角色標(biāo)簽或者Tag標(biāo)簽時(shí),系統(tǒng)可以根據(jù)管理員用戶所屬的組織信息以及管理員提供的主體角色名或客體Tag名快速通過兩次哈希表的查找操作迅速定位到相應(yīng)的Role對象或者Tag對象,并且這些Role對象和 Tag對象已經(jīng)通過parent指針形成了樹形的層次性結(jié)構(gòu)。這樣可以避免系統(tǒng)在運(yùn)行時(shí)反復(fù)的讀寫安全策略配置文件,減少I/O操作,極大提高系統(tǒng)的性能。
3>安全決策模塊的設(shè)計(jì)與實(shí)現(xiàn)[0153]安全決策模塊的作用在于判定給定主體是否有權(quán)限訪問給定的客體。由于角色權(quán)限的定義是由Tag標(biāo)簽變量和邏輯運(yùn)算符所組成的邏輯表達(dá)式,如何在給定客體Tag集合的情況下高效的計(jì)算出權(quán)限邏輯表達(dá)式的值是非常關(guān)鍵。云存儲系統(tǒng)在同一時(shí)間內(nèi)需要負(fù)荷來自不同公司的成千上萬的客戶的訪問,而權(quán)限判定是客戶在訪問每一個(gè)文件的時(shí)候都必須通過的,如果權(quán)限判定不夠高效,一方面會降低客戶端的訪問速度,另一方面也由于服務(wù)器的負(fù)載增大導(dǎo)致單位時(shí)間內(nèi)可以訪問云存儲的客戶數(shù)量減少。因此訪問控制決策判定的性能是非常重要的。
為了把服務(wù) 性能的損耗降低到最小,項(xiàng)目原型在Hadoop分布式文件系統(tǒng)初始化的時(shí)候?qū)⑺薪巧宰址问奖硎镜臋?quán)限表達(dá)式轉(zhuǎn)化成后序表達(dá)式樹這種中間形式。在系統(tǒng)運(yùn)行時(shí),HDFS可以直接根據(jù)權(quán)限表達(dá)式樹很快計(jì)算出決策結(jié)果,而不用再對權(quán)限表達(dá)式做字符串分析。這樣一方面可以減少運(yùn)行時(shí)客戶訪問文件系統(tǒng)的時(shí)間,提升系統(tǒng)的性能; 另外一方面也可以避免同一角色在訪問不同文件時(shí)反復(fù)對相同權(quán)限表達(dá)式進(jìn)行分析,避免重復(fù)工作。
權(quán)限表達(dá)式計(jì)算的算法思想如下
1>系統(tǒng)初始化時(shí)動(dòng)作
把角色權(quán)限定義的邏輯表達(dá)式轉(zhuǎn)化為以表達(dá)樹形式描述的后序表達(dá)式(Postfix representation,又稱逆波蘭序),見圖7。
2>系統(tǒng)運(yùn)行時(shí)動(dòng)作
在給定表達(dá)式變量值(即Tag標(biāo)簽值)輸入的情況下,通過內(nèi)存中的后序表達(dá)式樹快速計(jì)算
權(quán)限表達(dá)式的值,見圖8。
4>安全決策的實(shí)施
讀請求的安全控制
根據(jù)電影票售票模式,HDFS可以采用類似的安全實(shí)施方式,稱為”基于票據(jù) (Ticket)的訪問控制”。客戶端在訪問Namenode以獲取數(shù)據(jù)塊的位置信息時(shí),Namenode 會首先進(jìn)行根據(jù)主客體的安全標(biāo)簽相關(guān)安全決策判定,如果通過的話則會為客戶端生成一個(gè)包含了訪問決策的票據(jù)??蛻舳嗽谠L問Datanode上的數(shù)據(jù)時(shí)需要向Datanode出示 Namenode授予的票據(jù)才能夠正常的訪問數(shù)據(jù)。為了防止惡意的客戶端對票據(jù)進(jìn)行偽造和篡改,Namenode使用和所有Datanode共享的一組密鑰對其進(jìn)行加密,因此只有Datanode才能夠解密票據(jù)查看其中的訪問決策,從而判定當(dāng)前的客戶端是否有權(quán)利訪問相關(guān)的數(shù)據(jù)塊。
根據(jù)HDFS客戶端的訪問流程,在加上了基于Ticket的訪問控制之后框架圖如圖 9所示
加粗的部分即是修改了 HDFS網(wǎng)絡(luò)通信的部分,主要是傳遞新增加的票據(jù)信息,其它的部分均是HDFS原本存在的部分。整個(gè)流程如下所述
1. Client-> Namenode:〈filename, offset, length〉
客戶端向Namenode發(fā)送要訪問的文件名(filename),訪問的文件偏移量以及要訪問的數(shù)據(jù)的長度(length)。
2 . Namenode -> Client: multiple<block handle, block locations>+AccessTicket[0169]Namenode在判定客戶端對文件的訪問權(quán)限通過之后,生成訪問票據(jù)并用集群內(nèi)共享的密鑰對票據(jù)進(jìn)行加密。Namenode向客戶端返回其要訪問的多個(gè)數(shù)據(jù)塊的標(biāo)識(block handle)以及它們所處的Datanode的位置(block locations),最后是附加的加密后的訪問票據(jù)。
3. Client-> Datanode:〈block handle, AccessTicket>
客戶端在獲取了數(shù)據(jù)塊的具體位置以及訪問票據(jù)之后,對于每一個(gè)數(shù)據(jù)塊選擇離它最近DataNode,向其發(fā)送客戶端要訪問的數(shù)據(jù)塊標(biāo)識(block handle)和訪問票據(jù) (AccessTicket),請求訪問數(shù)據(jù)塊。由于訪問票據(jù)被加密過了,客戶端是不能隨便篡改其中的內(nèi)容的。
4. Datanode -> Client: block stream
Datanode取得AccessTicket之后,使用集群內(nèi)共享的密鑰解密AccessTicket判定當(dāng)前客戶端是否有權(quán)限訪問相應(yīng)的block。如果允許訪問,則向client回送數(shù)據(jù)塊的數(shù)據(jù),否則拒絕客戶端的訪問。
AccessTicket包含了安全決策的信息,是由Namenode生成,之后通過Client轉(zhuǎn)發(fā)給Datanode,其定義如下
AccessTicket = E{user-id, <file block IDs>, op}secret
訪問票據(jù)包括訪問資源主體的標(biāo)識符(user-id),主體要的所有的block id file block IDs ,以及訪問的具體操作(op)。為了防止客戶端篡改Ticket,Ticket 使用HDFS集群內(nèi)共享的一組密鑰(secret)加密。
寫請求的安全控制
HDFS 0. 18版本只支持創(chuàng)建寫操作(create),文件一旦創(chuàng)建成功后就不能再被修改,這樣也部分簡化了寫請求安全控制的工作量。
客戶端在分布式文件系統(tǒng)上創(chuàng)建新的文件時(shí),遵循如下步驟
1.客戶端(即租戶的主體用戶,角色主體)開始新文件的創(chuàng)建
DFSClient -> Namenode: void ClientProtocol. create (...)
客戶端通過rpc遠(yuǎn)程調(diào)用Namenode實(shí)現(xiàn)的create方法,開始新文件的創(chuàng)建。 Namenode采用了一種稱為租約(Lease)的方法,為新創(chuàng)建的文件增加排它鎖。除了啟動(dòng)文件創(chuàng)建的用戶可以訪問此文件外,其他用戶是不能訪問文件的。此時(shí)尚未完成創(chuàng)建的文件在 Namenode 內(nèi)存中以 INodeFileUnderConstruction 對象表示。
2.客戶端寫入文件的數(shù)據(jù)塊
對于每一個(gè)數(shù)據(jù)塊,執(zhí)行如下操作
i> DFSClient -> Namenode: LocatedBlock ClientProtocol. addBlock(...)
客戶端rpc遠(yuǎn)程調(diào)用Namenode實(shí)現(xiàn)的addBlock方法,為文件新增數(shù)據(jù)塊。 Namenode在接收到addBlock請求后會返回給客戶端一個(gè)LocatedBlock對象。此對象中包含了新建數(shù)據(jù)塊的標(biāo)識,并說明了應(yīng)該往哪幾個(gè)Datanode中寫入數(shù)據(jù)塊。
ii> DFSClient-> Datanode: block stream
客戶端和LocatedBlock對象中包含的Datanode之間建立起pipeline連接,通過網(wǎng)絡(luò)I/O流往Datanode中寫入數(shù)據(jù)塊的數(shù)據(jù)。
3.客戶端完成文件的創(chuàng)建[0190]DFSClient -> Namenode: void ClientProtocol. complete (...)
客戶端rpc遠(yuǎn)程調(diào)用Namenode實(shí)現(xiàn)的complete方法,完成新文件的創(chuàng)建。 Namenode將INodeFileUnderConstruction對象轉(zhuǎn)化為正常的INodeFile對象,并解除文件上的排他鎖。
根據(jù)以上的數(shù)據(jù)寫訪問過程,HDFS的寫訪問控制不需要向讀訪問控制那樣使用基于票據(jù)的方式。由于在HDFS的Namenode端實(shí)現(xiàn)了基于Lease的排他鎖,其它的用戶是不能夠訪問尚未創(chuàng)建完成的文件的。而在文件創(chuàng)建完成之后就不能修改,這樣大大簡化了文件寫請求的安全控制。只需要在DFSClient向Namenode發(fā)起create遠(yuǎn)程調(diào)用開始文件創(chuàng)建的時(shí)候?qū)ζ溥M(jìn)行訪問控制即可。
5>用戶命令的設(shè)計(jì)
為了方便各個(gè)組織管理員的操作,在系統(tǒng)的客戶端實(shí)現(xiàn)了相應(yīng)的管理員命令??梢允褂眠@些命令對系統(tǒng)用戶,用戶角色以及客體的Tag標(biāo)簽進(jìn)行管理。所有的這些命令都實(shí)現(xiàn)在Hadoop原有的FSShell中,命令說明如下
權(quán)利要求
1.一種適用于存儲云內(nèi)的數(shù)據(jù)隔離方法,其步驟為1)根據(jù)租戶的安全需求,在存儲云系統(tǒng)主節(jié)點(diǎn)中建立該租戶安全策略配置,其包括主體層次化的角色模型和客體層次化的Tag模型,角色模型中的角色權(quán)限包括讀權(quán)限、寫權(quán)限、執(zhí)行權(quán)限;2)在存儲云系統(tǒng)主節(jié)點(diǎn)中創(chuàng)建屬于該租戶的主體用戶,并為主體用戶打上該租戶角色模型中的角色標(biāo)簽;3)在存儲云系統(tǒng)主節(jié)點(diǎn)中將某租戶的主體用戶創(chuàng)建的客體資源上,打上該租戶Tag模型中的Tag標(biāo)簽;4)根據(jù)訪問客體資源的角色權(quán)限,設(shè)置角色主體對訪問資源客體的安全訪問策略并將其存儲到存儲云系統(tǒng)的主節(jié)點(diǎn)中;所述安全訪問策略為a)對于主體對客體的讀訪問,要求主客體所屬租戶一致,并且存在賦予主體的角色k, 使得角色k的讀權(quán)限表達(dá)式在客體標(biāo)簽為真的情況下計(jì)算結(jié)果也為真;b)對于主體對客體的寫訪問,要求主客體所屬租戶一致,并且存在賦予主體的角色k, 使得角色k的寫權(quán)限表達(dá)式在客體標(biāo)簽為真的情況下計(jì)算結(jié)果也為真;c)對于主體對客體的執(zhí)行訪問,要求主客體所屬租戶一致,并且存在賦予主體的角色 k,使得角色k的執(zhí)行權(quán)限表達(dá)式在客體標(biāo)簽為真的情況下計(jì)算結(jié)果也為真;5)主節(jié)點(diǎn)根據(jù)所述安全訪問策略,判斷角色主體對訪問資源客體的訪問是否通過,如果通過則允許訪問,否則拒絕訪問。
2.如權(quán)利要求
1所述的方法,其特征在于所述主體角色模型為一具有角色繼承關(guān)系的層次化標(biāo)簽森林,每一標(biāo)簽具有一角色權(quán)限。
3.如權(quán)利要求
2所述的方法,其特征在于所述客體層次化的Tag模型為一具有繼承關(guān)系的層次化標(biāo)簽森林。
4.如權(quán)利要求
3所述的方法,其特征在于所述主節(jié)點(diǎn)采用XML文件存儲所述安全策略配置;采用字符串形式表達(dá)所述角色權(quán)限表達(dá)式。
5.如權(quán)利要求
4所述的方法,其特征在于所述主節(jié)點(diǎn)中設(shè)置一哈希表結(jié)構(gòu)的安全配置池,其中,鍵為租戶名稱,值包括哈希表結(jié)構(gòu)的角色配置池、標(biāo)簽配置池;所述角色配置池的鍵為角色名稱,值為角色對象;所述標(biāo)簽配置池的鍵為標(biāo)簽名稱,值為標(biāo)簽對象;角色對象通過父指針指向其在所述角色模型中的父節(jié)點(diǎn);標(biāo)簽對象通過父指針指向其在所述Tag模型中的父節(jié)點(diǎn);主節(jié)點(diǎn)根據(jù)輸入的租戶信息、以及主體角色名或客體標(biāo)簽名,利用所述安全配置池查找角色對象或標(biāo)簽對象。
6.如權(quán)利要求
4或5所述的方法,其特征在于所述主節(jié)點(diǎn)判斷角色主體對訪問資源客體的訪問是否通過的方法為主節(jié)點(diǎn)將字符串形式表示的角色權(quán)限表達(dá)式轉(zhuǎn)化成后序表達(dá)式樹,然后根據(jù)給定表達(dá)式變量值,利用權(quán)限表達(dá)式樹計(jì)算出決策結(jié)果。
7.如權(quán)利要求
6所述的方法,其特征在于所述主節(jié)點(diǎn)采用鏡像文件和操作訪問日志持久化所述安全策略配置。
8.如權(quán)利要求
1所述的方法,其特征在于角色主體對訪問資源客體進(jìn)行訪問的方法為1)角色主體向主節(jié)點(diǎn)發(fā)送要訪問的文件名,訪問的文件偏移量以及要訪問客體資源的數(shù)據(jù)長度;2)主節(jié)點(diǎn)為該角色主體生成訪問票據(jù)并用集群內(nèi)共享的密鑰對票據(jù)進(jìn)行加密,然后將該角色主體要訪問的數(shù)據(jù)塊的標(biāo)識及其所在數(shù)據(jù)節(jié)點(diǎn)的位置,以及加密后的訪問票據(jù)發(fā)送給該角色主體;3)該角色主體對于每一個(gè)數(shù)據(jù)塊,選擇具有該數(shù)據(jù)塊且距離該角色主體最近的數(shù)據(jù)節(jié)點(diǎn),發(fā)送該數(shù)據(jù)塊標(biāo)識和訪問票據(jù),請求訪問該數(shù)據(jù)塊;4)數(shù)據(jù)節(jié)點(diǎn)使用集群內(nèi)共享的密鑰解密訪問票據(jù),判定該角色主體是否有權(quán)限訪問相應(yīng)的數(shù)據(jù)塊,如果允許訪問,則向該角色主體回送數(shù)據(jù)塊的數(shù)據(jù),否則拒絕訪問。
9.如權(quán)利要求
8所述的方法,其特征在于所述訪問票據(jù)包括角色主體的標(biāo)識符、角色主體要訪問數(shù)據(jù)塊的數(shù)據(jù)塊標(biāo)識以及訪問的具體操作。
10.如權(quán)利要求
9所述的方法,其特征在于對于寫訪問操作首先,角色主體遠(yuǎn)程調(diào)用主節(jié)點(diǎn)的create方法,開始新文件的創(chuàng)建,主節(jié)點(diǎn)采用租約方法為新創(chuàng)建的文件增加排它鎖;然后角色主體遠(yuǎn)程調(diào)用主節(jié)點(diǎn)的addBlock方法,主節(jié)點(diǎn)在接收到addBlock請求后會返回給角色主體一個(gè)LocatedBlock對象,其包括新建數(shù)據(jù)塊的標(biāo)識以及能夠?qū)懭霐?shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn);最后,角色主體遠(yuǎn)程調(diào)用主節(jié)點(diǎn)的complete方法,完成新文件的創(chuàng)建。
專利摘要
本發(fā)明涉及一種適用于存儲云內(nèi)的數(shù)據(jù)隔離方法,屬于分布式存儲領(lǐng)域。本方法為1)根據(jù)組織的安全需求,在存儲云系統(tǒng)主節(jié)點(diǎn)中建立該租戶安全策略配置;2)創(chuàng)建屬于該組織的主體用戶,并為主體打上該組織角色模型中的角色標(biāo)簽;3)組織管理員為某組織用戶創(chuàng)建的客體資源客體打上該組織Tag模型中的Tag標(biāo)簽;4)根據(jù)訪問資源的角色權(quán)限,設(shè)置角色主體對訪問資源客體的安全訪問策略并將其存儲到存儲云系統(tǒng)的主節(jié)點(diǎn)中;5)主節(jié)點(diǎn)根據(jù)所述安全訪問策略,判斷角色主體對訪問資源客體的訪問是否通過,如果通過則進(jìn)行訪問,否則拒絕訪問。本方法保證云存儲企業(yè)內(nèi)部數(shù)據(jù)的適度隔離,策略遵循通用性原則,適用于公有云,私有云以及混合云。
文檔編號H04L29/08GKCN102307185SQ201110175541
公開日2012年1月4日 申請日期2011年6月27日
發(fā)明者吳尉瀧, 張力哲, 楊雅輝, 沈晴霓, 王丹丹, 禹熹, 龍敏 申請人:北京大學(xué)導(dǎo)出引文BiBTeX, EndNote, RefMan
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
  • <tt id="4mxlg"><nobr id="4mxlg"><delect id="4mxlg"></delect></nobr></tt>
    <tt id="4mxlg"></tt>