一種基于角色和用戶信任值的hdfs訪問控制方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于角色和用戶信任值的HDFS訪問控制方法,屬于計算機云存 儲訪問控制領(lǐng)域。
【背景技術(shù)】
[0002] 隨著云存儲技術(shù)的快速發(fā)展,越來越多的用戶和企業(yè)使用云存儲來保存數(shù)據(jù)或備 份數(shù)據(jù),以增強數(shù)據(jù)的可移動性,然而由此帶來的安全性問題卻未得到有效解決。云存儲的 核心實際上是一個分布式文件系統(tǒng),所以云存儲的數(shù)據(jù)安全性問題實際上就是分布式文件 系統(tǒng)的數(shù)據(jù)安全性問題。
[0003] Hadoop最初的設(shè)計是假定HDFS運行在安全的封閉環(huán)境中,集群內(nèi)的所有節(jié)點都 是可靠的、值得信賴的,并提供給一組相互合作的用戶使用,所以HDFS在設(shè)計之初主要考 慮的是大規(guī)模數(shù)據(jù)存儲的性能問題,并沒有太多地關(guān)注分布式計算環(huán)境中的安全問題。
[0004] 隨著云存儲的發(fā)展和廣泛應(yīng)用,Hadoop分布式文件系統(tǒng)HDFS的安全受到了極大 的威脅。HDFS在用戶與服務(wù)之間并沒有提供足夠的安全認證,默認情況下,HDFS通過正 在運行進程的用戶名和用戶組來唯一確定客戶端的標(biāo)識,但由于客戶端是遠程的,用戶可 以簡單地在遠程系統(tǒng)上以自己的名義創(chuàng)建一個賬戶,導(dǎo)致用戶可以偽裝成任何身份,從而 繞過HDFS的權(quán)限驗證,隨意訪問HDFS中的數(shù)據(jù)。此外,由于DataNode節(jié)點對客戶端的 訪問不強制實施任何訪問控制措施,這可能導(dǎo)致一個未經(jīng)授權(quán)的客戶端只要知道數(shù)據(jù)塊的 BlockID就可以直接讀取數(shù)據(jù)塊,繞過與NameNode節(jié)點的通信驗證,同時也可使得任何 人都可以向DataNode節(jié)點寫入任意的數(shù)據(jù)塊,或者冒充成合法的DataNode節(jié)點來接收 NameNode節(jié)點的任務(wù)和數(shù)據(jù)。雖然HDFS本身支持權(quán)限控制,但提供的僅是簡單自主訪問 控制,使用9-bit位來表示,支持較弱,存在較大的安全隱患。
【發(fā)明內(nèi)容】
[0005] 為了克服HDFS現(xiàn)有訪問控制機制的不足,本發(fā)明提出了一種基于角色和用戶信 任值的HDFS訪問控制方法。本發(fā)明的目的在于實現(xiàn)一種實時動態(tài)、粒度更細、更加靈活的 訪問控制機制,能夠更加安全、合理地為用戶分配合適的權(quán)限。
[0006] 本發(fā)明為解決其技術(shù)問題采用如下技術(shù)方案:
[0007] 一種基于角色和用戶信任值的HDFS訪問控制方法,包括如下步驟:
[0008] 步驟一、用戶訪問HDFS之前,首先向角色管理服務(wù)器申請用戶角色,角色管理服 務(wù)器為用戶分配角色,并將角色證書和共享密鑰頒發(fā)給用戶。
[0009] 步驟二、用戶持角色證書和共享密鑰訪問可信賴第三方認證系統(tǒng)Kerberos,申請 身份認證,若用戶身份合法,則授予用戶訪問HDFS的服務(wù)票據(jù)Ticket。
[0010] 步驟三、用戶持Ticket向NameNode節(jié)點請求服務(wù),通過查詢存儲在行為數(shù)據(jù)庫 中的用戶行為記錄,并利用信任值更新算法計算得到用戶當(dāng)前信任值,若用戶當(dāng)前信任值 大于等于系統(tǒng)所設(shè)定的信任值閾值TrustthreshaLd,則NameNode節(jié)點為用戶頒發(fā)塊訪問授權(quán) 令牌BlockAccessToken,用戶持BlockAccessToken連接NameNode節(jié)點告知的所有DataNode節(jié)點,獲取所需服務(wù)。
[0011] 所述步驟一中,角色管理服務(wù)器是實現(xiàn)角色分配管理的核心,作為可信機構(gòu)參與 訪問控制過程,其主要由角色管理模塊、密鑰管理模塊、證書管理模塊、用戶接口模塊、網(wǎng)絡(luò) 通信模塊5個模塊組成。當(dāng)用戶向角色管理服務(wù)器提出訪問請求(包括用戶名、密碼及所 申請的角色),角色管理服務(wù)器根據(jù)用戶身份,查詢用戶和角色數(shù)據(jù)庫,為用戶分配相應(yīng)的 角色,并同密鑰管理模塊生成的角色密鑰一起生成角色證書,發(fā)送給用戶。
[0012] 所述步驟二中,Kerberos作為可信賴第三方認證系統(tǒng)實現(xiàn)對用戶的身份認證,用 戶在對應(yīng)用服務(wù)器進行訪問之前,必須先從Kerberos服務(wù)器獲取該應(yīng)用服務(wù)器的訪問許 可證Ticket。Kerberos服務(wù)器由2部分組成:認證服務(wù)器(AuthenticationServer,AS) 和票據(jù)授予服務(wù)器(TicketGrantingServer,TGS),通過認證服務(wù)器判斷用戶在不在密鑰 數(shù)據(jù)庫中,如果在則發(fā)布一個票據(jù)授權(quán)票據(jù)(TicketGrantingTicket,TGT),并將TGT用 會話密鑰K1加密后發(fā)送給用戶;如果用戶不在密鑰數(shù)據(jù)庫中,則停止服務(wù)。
[0013] 用戶持密鑰K1解密信息,并將自己的唯一標(biāo)識用K1加密后和TGT-起發(fā)送給 TGS,TGS在驗證TGT的有效性后,為其生成一個服務(wù)票據(jù)Ticket,Ticket包含會話密鑰K3、 用戶名、IP、地址、服務(wù)名、有效期、時間戳,且Ticket用密鑰K2進行加密,K3用K1進行加 密后一起發(fā)送給用戶,由于用戶不知道密鑰K2,所以無法篡改Ticket中的信息;用戶持密 鑰K1解密信息得到密鑰K3,從而獲得與HDFS交互的密鑰。
[0014] 所述步驟三中,行為數(shù)據(jù)庫和信任值數(shù)據(jù)庫均設(shè)置在NameNode節(jié)點上,當(dāng)用戶持 Ticket訪問NameNode節(jié)點時,通過查詢行為數(shù)據(jù)庫中的用戶行為記錄,并利用信任值更 新算法計算得到用戶信任值,信任值更新算法如公式(1)所示:
[0015]
⑴
[0016] 其中cf?表示用戶最新信任值,initTrust表示用戶初始信任值或歷史信任值,Not、 N^Ndb分別表示普通行為、風(fēng)險行為、危險行為這三類用戶行為各自的記錄總數(shù),a、0、Y 為系統(tǒng)賦予每種行為類別的信任值評估權(quán)重,且滿足a+0+y= 1的關(guān)系。
[0017] 當(dāng)用戶滿足用戶身份合法,服務(wù)票據(jù)合法且信任值大于等于信任值閾值條件時, 允許其訪問HDFS中的資源,這一訪問控制規(guī)則的約束表達式如下:
[0018]
(2)
[0019] 當(dāng)用戶身份非法或服務(wù)票據(jù)非法或信任值小于信任值閾值時,系統(tǒng)拒絕用戶訪問 HDFS中的資源,這一訪問控制規(guī)則的約束表達式如下:
[0020]
(3)
[0021] 其中,user為用戶信息,tick為用戶訪問Name Node節(jié)點的服務(wù)票據(jù),cf為用戶 最新信任值,Trustthresh()ldS信任值閾值,ACCEPT為允許本次訪問操作,DENY為拒絕本次訪 問操作。
[0022] 當(dāng)用戶滿足CP規(guī)則時,NameNode節(jié)點為用戶頒發(fā)BlockAccessToken,用戶 持BlockAccessToken訪問DataNode節(jié)點,獲取所需服務(wù);當(dāng)用戶滿足CR規(guī)則時,Name Node節(jié)點向用戶發(fā)送拒絕提供服務(wù)的提示信息。
[0023] 本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下有益效果:
[0024] (1)本發(fā)明結(jié)合基于角色的訪問控制策略RBAC實現(xiàn)了用戶與權(quán)限的隔離,減少了 HDFS授權(quán)管理的復(fù)雜性和管理開銷,提高了授權(quán)管理的靈活性。
[0025] (2)本發(fā)明利用可信賴第三方認證系統(tǒng)Kerberos實現(xiàn)了對用戶的安全認證,解決 了惡意用戶偽裝成合法用戶獲取HDFS的文件權(quán)限,以及惡意用戶在得知BlockID后繞過 NameNode節(jié)點直接訪問DataNode節(jié)點的缺陷。
[0026] (3)本發(fā)明引入用戶信任值的概念,通過為每個用戶設(shè)定一個信任值,并根據(jù)用戶 行為實時更新其信任值,實現(xiàn)了一種細粒度的、可靠的、靈活的訪問控制機制,滿足了對用 戶訪問的動態(tài)控制需求,解決了合法用戶后期行為可信性問題。
【附圖說明】
[0027] 圖1是本發(fā)明的模型結(jié)構(gòu)示意圖。
[0028] 圖2是本發(fā)明的訪問控制方法流程示意圖。
[0029] 圖3是基于角色的HDFS訪問控制流程示意圖。
[0030] 圖4是基于用戶彳目任值的HDFS訪問控制流程不意圖。
[0031] 圖5是簡化的基于用戶信任值的HDFS訪問控制核心流程示意圖。
【具體實施方式】
[0032] 以下結(jié)合附圖和實施例對本發(fā)明的技術(shù)方案做進一步詳細說明:
[0033] 實施例一
[0034] 為了解決Hadoop分布式文件系統(tǒng)HDFS的訪問控制問題,本發(fā)明提供了一種基于 角色和用戶信任值的HDFS訪問控制方法,具體流程如圖2所示,該方法包括:
[0035] 當(dāng)用戶發(fā)出操作請求時,角色管理服務(wù)器首先驗證操作請求的完整性,然后檢查 用戶操作的權(quán)限,檢查通過后,角色管理服務(wù)器根據(jù)用戶身份查詢用戶和角色數(shù)據(jù)庫,為用 戶分配相應(yīng)的角色,并將角色證書和共享密鑰一起發(fā)送給用戶。
[0036] 用戶將自己的明文用戶信息發(fā)送給Kerberos的密鑰分發(fā)管理器(Key DistributionCenter,KDC),KDC服務(wù)器通過認證服務(wù)器(AS)判斷用戶是否在密鑰數(shù)據(jù) 庫中,如果在則產(chǎn)生一個票據(jù)授權(quán)票據(jù)(TGT),并用會話密鑰K1加密后返回給用戶,用戶 持密鑰K1解密信息,并將自己的唯一標(biāo)識用K1加密后和TGT-起發(fā)送給票據(jù)授予服務(wù)器 (TGS),TGS在驗證TGT的有效性后,為其生成一個服務(wù)票據(jù)Ticket,Ticket包含會話密鑰 K3、用戶名、IP、地址、服務(wù)名、有效期、時間戳,且Ticket用密鑰K2進行加密,K3用K1進行 加密后一起發(fā)送給用戶,由于用戶不知道密鑰K2,所以無法篡改Ticket中的信息,用戶持 密鑰K1解密信息得到密鑰K3,從而獲得與HDFS交互的密鑰。
[0037] 用戶持密鑰K3加密用戶名、IP,并與K2加密的Ticket-同發(fā)送給NameNode節(jié) 點,申請NameNode節(jié)點上的身份認證,若用戶身份合法,則NameNode節(jié)點頒發(fā)授權(quán)令牌 DelegationToken給用戶,用戶持DelegationToken向NameNode節(jié)點申請HDFS服務(wù);NameNode節(jié)點通過查詢用戶行為數(shù)據(jù)庫,并利用信任值更新算法計算得到用戶當(dāng)前的信 任值,若用戶當(dāng)前信任值大于等于系統(tǒng)所設(shè)定的信任值閾值,則NameNode節(jié)點為用戶生成 塊訪問授權(quán)令牌BlockAccessToken,用戶持BlockAccessToken訪問NameNode節(jié)點 告知的所有DataNode節(jié)點請求所需服務(wù),若用戶當(dāng)前信任值小于系統(tǒng)所設(shè)定的信任值閾 值,貝NameNode節(jié)點向用戶發(fā)送拒絕提供服務(wù)的提示信息;DataNode節(jié)點在最近的下一 次心跳中,將記錄在行為緩沖區(qū)中的用戶操作行為記錄反饋給NameNode節(jié)點,NameNode 節(jié)點將反饋得到的用戶操作行為記錄保存到行為數(shù)據(jù)庫中,以便用戶下次訪問HDFS時計 算用戶信任