專利名稱:用于分布式文件系統(tǒng)的用戶與權(quán)限管理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機系統(tǒng)的安全領(lǐng)域,特別涉及分布式文件系統(tǒng)的安全領(lǐng)域。
背景技術(shù):
在分布式文件系統(tǒng)(Distributed File System)中,文件系統(tǒng)管理的物理存儲資源分布在通過計算機網(wǎng)絡(luò)連接的多個節(jié)點上。分布式文件系統(tǒng)是基于客戶/服務(wù)器模式的,包括客戶端和服務(wù)器端;在服務(wù)器端包括元數(shù)據(jù)服務(wù)器(Meta Server)和數(shù)據(jù)塊服務(wù)器(Chunk Server)。數(shù)據(jù)塊服務(wù)器用來存儲文件的實際數(shù)據(jù)。元數(shù)據(jù)服務(wù)器作為分布式文件系統(tǒng)的中心節(jié)點,存儲文件的元信息,包括文件的大小、創(chuàng)建日期和文件數(shù)據(jù)保存在數(shù)據(jù)服務(wù)器的位置等信息,同時協(xié)調(diào)各個數(shù)據(jù)塊服務(wù)器,保證數(shù)據(jù)塊服務(wù)器的負(fù)載均衡。在分布式文件系統(tǒng)中,主要通過如下的訪問權(quán)限的形式來控制并行的對文件的多用戶訪問1)只讀共享任何用戶只能訪問文件,而不能進(jìn)行修改;2)受控寫操作可有多個用戶打開一個文件,但只有一個用戶可以進(jìn)行寫修改, 而該用戶所作的修改并不一定出現(xiàn)在其它已打開此文件的用戶的屏幕上;3)并發(fā)寫操作允許多個用戶同時讀寫一個文件,要求操作系統(tǒng)作大量的監(jiān)控工作以防止文件重寫,并保證用戶能夠看到最新信息。而且考慮到安全因素,不同用戶對不同文件應(yīng)該具有不同的操作權(quán)限,因此對于分布式文件系統(tǒng),設(shè)計合理有效的用戶及權(quán)限管理方法對保證其安全性具有關(guān)鍵性作用。 但是現(xiàn)有的分布式文件系統(tǒng)用戶與權(quán)限管理方法主要分為兩種,一種依賴于傳統(tǒng)的文件系統(tǒng)的用戶與權(quán)限管理方式,在元數(shù)據(jù)服務(wù)器通過特定的字段來記錄組用戶對文件的讀寫權(quán)限,并沒有針對分布式文件系統(tǒng)本身的特點來考慮安全問題,一旦有人通過某種方式繞過元數(shù)據(jù)服務(wù)器的權(quán)限管理,直接連接到數(shù)據(jù)塊服務(wù)器對數(shù)據(jù)進(jìn)行復(fù)制或破壞,現(xiàn)有的用戶權(quán)限管理方法沒有任何措施進(jìn)行防御的。另一種方法也是現(xiàn)在應(yīng)用較為廣泛的分布式文件系統(tǒng)用戶與權(quán)限管理方法是在應(yīng)用層面對用戶權(quán)限進(jìn)行判斷,并不涉及到分布式文件系統(tǒng)本身的用戶及權(quán)限管理,雖然行之有效,但是畢竟脫離了分布式文件系統(tǒng)本身,不能從根本上解決分布式文件系統(tǒng)的安全性問題。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的缺陷,提供一種用于分布式文件系統(tǒng)的用戶與權(quán)限的管理方法,以保證分布式文件系統(tǒng)的安全性。一方面,本發(fā)明提供了一種用于分布式文件系統(tǒng)的用戶與權(quán)限管理方法,所述分布式文件系統(tǒng)包括客戶端、元數(shù)據(jù)服務(wù)器和數(shù)據(jù)塊服務(wù)器,所述方法包括步驟a)接收自客戶端的用戶訪問文件請求,由元數(shù)據(jù)服務(wù)器判斷該用戶對所請求訪問的文件是否具有相應(yīng)的操作權(quán)限;步驟b)對于有操作權(quán)限的請求,向數(shù)據(jù)塊服務(wù)器發(fā)送對該用戶的權(quán)限確認(rèn)通知,并將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;步驟c)由客戶端根據(jù)所得到的元數(shù)據(jù)信息向數(shù)據(jù)塊服務(wù)器發(fā)送操作請求;步驟d)由數(shù)據(jù)塊服務(wù)器基于所收到的權(quán)限確認(rèn)通知中的信息來對客戶端的操作請求進(jìn)行驗證,并處理來自合法用戶的被元數(shù)據(jù)服務(wù)器所允許的操作請求。上述方法中,還可包括在步驟a)之前接收用戶的登錄請求吋,由元數(shù)據(jù)服務(wù)器對用戶身份進(jìn)行驗證,以判斷用戶身份是否合法的步驟。上述方法中,在步驟b)還可包括由數(shù)據(jù)塊服務(wù)器在收到所述權(quán)限確認(rèn)通知后,向元數(shù)據(jù)服務(wù)器發(fā)送應(yīng)答。上述方法中,在步驟b)還可包括元數(shù)據(jù)服務(wù)器等待來自數(shù)據(jù)塊服務(wù)器的對權(quán)限確認(rèn)通知的應(yīng)答;如果收到了應(yīng)答,則將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;如果等待了一段時間之后,沒有收到應(yīng)答,則向包含該用戶所請求訪問的文件的其他數(shù)據(jù)塊服務(wù)器發(fā)送權(quán)限確認(rèn)通知。上述方法中,在步驟b)還可包括由數(shù)據(jù)塊服務(wù)器對來自元數(shù)據(jù)服務(wù)器的權(quán)限確認(rèn)通知進(jìn)行驗證的步驟,以確認(rèn)權(quán)限確認(rèn)通知確實是來自元數(shù)據(jù)服務(wù)器。又一方面,本發(fā)明提供了ー種分布式文件系統(tǒng),所述分布式文件系統(tǒng)包括客戶端、 元數(shù)據(jù)服務(wù)器和數(shù)據(jù)塊服務(wù)器,其中,所述元數(shù)據(jù)服務(wù)器包括用戶操作權(quán)限驗證模塊,用于在收到來自客戶端的用戶訪問請求吋,判斷該用戶對所請求訪問的文件是否具有相應(yīng)的操作權(quán)限;如果有,則向數(shù)據(jù)塊服務(wù)器發(fā)送對該用戶的權(quán)限確認(rèn)通知,并將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;所述數(shù)據(jù)塊服務(wù)器包括訪問權(quán)限驗證模塊,用于基于所收到的權(quán)限確認(rèn)通知中的信息來對客戶端的操作請求進(jìn)行驗證,并處理來自該用戶的被元數(shù)據(jù)服務(wù)器所允許的操作請求。上述系統(tǒng)中,元數(shù)據(jù)服務(wù)器還可包括用戶身份驗證模塊,用于在接收用戶的登錄請求時,對用戶身份進(jìn)行驗證,以判斷用戶身份是否合法的步驟。上述系統(tǒng)中,所述訪問權(quán)限驗證模塊還可用于在收到所述權(quán)限確認(rèn)通知后,向元數(shù)據(jù)服務(wù)器發(fā)送應(yīng)答。上述系統(tǒng)中,所述用戶操作權(quán)限驗證模塊還可用于等待來自數(shù)據(jù)塊服務(wù)器的對權(quán)限確認(rèn)通知的應(yīng)答;如果收到了應(yīng)答,則將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;如果等待了一段時間之后,沒有收到應(yīng)答,則向包含該用戶所請求訪問的文件的其他數(shù)據(jù)塊服務(wù)器發(fā)送權(quán)限確認(rèn)通知。上述系統(tǒng)中,所述訪問權(quán)限驗證模塊還可用于對來自元數(shù)據(jù)服務(wù)器的權(quán)限確認(rèn)通知進(jìn)行驗證,以確認(rèn)權(quán)限確認(rèn)通知確實是來自元數(shù)據(jù)服務(wù)器。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于通過由元數(shù)據(jù)服務(wù)器對用戶身份以及來自合法用戶的操作權(quán)限進(jìn)行驗證,如果是來自合法用戶的對所請求訪問的文件具有相應(yīng)的操作權(quán)限的請求,則向數(shù)據(jù)塊服務(wù)器發(fā)送對該用戶的權(quán)限確認(rèn)通知。由數(shù)據(jù)塊服務(wù)器基于所收到的權(quán)限確認(rèn)通知中的信息來對來自客戶端的操作請求進(jìn)行驗證,并處理來自合法用戶的且被元數(shù)據(jù)服務(wù)器所允許的操作請求。這樣,該方法能夠保證訪問分布式文件系統(tǒng)用戶的合法性以及操作的合法性,同時能夠避免某些不合法用戶越過元數(shù)據(jù)服務(wù)器的相關(guān)認(rèn)證直接盜取或破壞數(shù)據(jù)塊服務(wù)器的內(nèi)容。
以下參照附圖對本發(fā)明實施例作進(jìn)一步說明,其中圖1為分布式文件系統(tǒng)架構(gòu)圖;圖2為根據(jù)本發(fā)明實施例的用于分布式文件系統(tǒng)的用戶與權(quán)限管理方法的流程示意圖;圖3為根據(jù)本發(fā)明實施例的分布式文件系統(tǒng)的架構(gòu)的示意圖;圖4為根據(jù)本發(fā)明實施例的用戶訪問分布式文件系統(tǒng)的操作示意圖。
具體實施例方式為了使本發(fā)明的目的,技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖通過具體實施例對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明, 并不用于限定本發(fā)明。為了方便理解,在介紹本發(fā)明的實施例之前首先分布式文件系統(tǒng)的有關(guān)的內(nèi)容做簡要的介紹。圖1為分布式文件系統(tǒng)架構(gòu)圖,如圖1所示,分布式文件系統(tǒng)主要包括元數(shù)據(jù)服務(wù)器、數(shù)據(jù)塊服務(wù)器以及客戶端,它們彼此通過交換機和路由器相連接,下面分別介紹各組成部件功能。(1)元數(shù)據(jù)服務(wù)器在分布式文件系統(tǒng)中,元數(shù)據(jù)服務(wù)器(Meta Server)用于保存元數(shù)據(jù)信息。所述元數(shù)據(jù)信息主要包括用于描述文件系統(tǒng)中文件、文件夾的基本信息和數(shù)據(jù)塊的基本信息。 這些元數(shù)據(jù)信息保存在元數(shù)據(jù)服務(wù)器的內(nèi)存中,可以使用B+樹數(shù)據(jù)結(jié)構(gòu)來存儲這些數(shù)據(jù), 隨著文件數(shù)目的增多,B+樹結(jié)構(gòu)保證始終樹都是平衡的。其中關(guān)于文件或文件夾的元數(shù)據(jù)主要包含文件/文件夾類型、數(shù)據(jù)塊副本個數(shù)、創(chuàng)建時間、修改時間、用戶信息、組信息、文件的權(quán)限、文件到數(shù)據(jù)塊的映射信息等信息,關(guān)于數(shù)據(jù)塊的元數(shù)據(jù)主要包括數(shù)據(jù)塊的物理存放位置、數(shù)據(jù)塊標(biāo)識符、數(shù)據(jù)庫版本號、在文件中偏移等信息。元數(shù)據(jù)服務(wù)器是分布式文件系統(tǒng)的核心部分,一方面,它維護(hù)著整個分布式文件系統(tǒng)的元數(shù)據(jù)信息。另一方面,它維護(hù)系統(tǒng)的正常工作,例如包括文件鎖,垃圾回收機制,數(shù)據(jù)塊在數(shù)據(jù)服務(wù)器之間的復(fù)制和移動,訪問控制,數(shù)據(jù)服務(wù)器的負(fù)載均衡等。(2)數(shù)據(jù)塊服務(wù)器數(shù)據(jù)塊服務(wù)器(Chunk Server)用于存儲文件的數(shù)據(jù)內(nèi)容,將文件內(nèi)容分為固定大小的數(shù)據(jù)塊存儲在數(shù)據(jù)服務(wù)器上。另外,為了保證分布式文件系統(tǒng)的可靠性和容錯能力,可以將每個數(shù)據(jù)塊復(fù)制多份做備份,保存在不同的數(shù)據(jù)塊服務(wù)器上,整個過程都是在元數(shù)據(jù)服務(wù)器的控制下完成的。(3)客戶端分布式文件系統(tǒng)的客戶端,用于給用戶提供文件系統(tǒng)接口和應(yīng)用編程接口 (Application Programming Interface,API)的服務(wù)程序。通過客戶端給用戶提供的接口來實現(xiàn)用戶與分布式文件系統(tǒng)的交互。當(dāng)用戶要訪問存儲在分布式系統(tǒng)中的某個文件時,首先,通過客戶端與元數(shù)據(jù)服CN 102546664 A
務(wù)器進(jìn)行交互,獲得與待訪問的文件相關(guān)的元數(shù)據(jù)信息,包括文件元數(shù)據(jù)信息和數(shù)據(jù)塊元數(shù)據(jù)信息。根據(jù)所獲得的元數(shù)據(jù)信息,例如文件與數(shù)據(jù)塊的映射,以及數(shù)據(jù)塊的物理存儲位置等等,客戶端可以直接和數(shù)據(jù)塊服務(wù)器進(jìn)行交互,以對待訪問的文件進(jìn)行各種操作。實際上是通過與元數(shù)據(jù)服務(wù)器交互實現(xiàn)對文件的操作控制,通過直接和數(shù)據(jù)服務(wù)器進(jìn)行交互實現(xiàn)文件數(shù)據(jù)的存取,但是整個交互過程對用戶來說是透明的。從上述的用戶對分布式文件系統(tǒng)的訪問過程中可以看出,現(xiàn)有的分布式文件系統(tǒng)本身的安全性非常低。一種情況下,它假設(shè)凡是訪問的用戶都是合法用戶,也就是說它本身并不判斷用戶是否是合法用戶,而是依賴應(yīng)用層來判斷用戶是否合法,只要是來自經(jīng)應(yīng)用層判斷后的用戶請求都是合法的訪問請求。另ー種情況,是通過元數(shù)據(jù)服務(wù)器進(jìn)行一定程度的權(quán)限管理,也就是當(dāng)元數(shù)據(jù)服務(wù)器收到用戶的訪問請求吋,通過所記錄的訪問權(quán)限信息來判斷該用戶是否有權(quán)訪問,如果無權(quán)訪問,則不給客戶端提供相關(guān)的元數(shù)據(jù)信息。但是如果有人繞過元數(shù)據(jù)服務(wù)器,或者以某種方式得到了在元數(shù)據(jù)服務(wù)器上的相關(guān)元數(shù)據(jù)信息,就可以直接與數(shù)據(jù)塊服務(wù)器交互,對數(shù)據(jù)進(jìn)行復(fù)制或破壞。圖2給出了根據(jù)本發(fā)明一個實施例的用于分布式文件系統(tǒng)的用戶與權(quán)限管理方法流程示意圖。在該方法中,由元數(shù)據(jù)服務(wù)器對來自用戶的訪問請求(也就是用戶訪問文件請求)進(jìn)行驗證,以判斷該用戶對所請求訪問的文件是否具有相應(yīng)的操作權(quán)限;如果有, 則向數(shù)據(jù)塊服務(wù)器發(fā)送對該用戶的權(quán)限確認(rèn)通知,并將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;接著,由客戶端根據(jù)所得到的元數(shù)據(jù)信息向數(shù)據(jù)塊服務(wù)器發(fā)送操作請求;最后,由數(shù)據(jù)塊服務(wù)器基于所收到的權(quán)限確認(rèn)通知中的信息來對客戶端的操作請求進(jìn)行驗證,并處理來自該用戶的被元數(shù)據(jù)服務(wù)器所允許的操作請求。可選地,在用戶訪問分布式文件系統(tǒng)之前,可以先向元數(shù)據(jù)服務(wù)器發(fā)送登錄請求, 由元數(shù)據(jù)服務(wù)器對用戶身份進(jìn)行驗證,以判斷用戶身份是否合法;然后,再由元數(shù)據(jù)服務(wù)器對來自該用戶的訪問請求進(jìn)行驗證,以判斷該用戶對所請求訪問的文件是否具有相應(yīng)的操作權(quán)限。最后,由數(shù)據(jù)塊服務(wù)器基于所收到的權(quán)限確認(rèn)通知中的信息來對客戶端的操作請求進(jìn)行驗證,以處理來自合法用戶的被元數(shù)據(jù)服務(wù)器所允許的操作請求。這樣可以避免完全依賴應(yīng)用層來判斷用戶身份是否合法的情況,提高分布式文件系統(tǒng)的安全性。通過對上述步驟的驗證即能夠保證訪問分布式文件系統(tǒng)用戶的合法性以及操作的合法性,又能夠避免某些不合法用戶越過元數(shù)據(jù)服務(wù)器的相關(guān)認(rèn)證直接盜取或破壞數(shù)據(jù)塊服務(wù)器的內(nèi)容。更具體地,如圖2所示,該方法主要包括以下步驟步驟201)、由元數(shù)據(jù)服務(wù)器判斷用戶身份是否合法。在一個實施例中,用戶訪問分布式文件系統(tǒng)之前可以進(jìn)行登錄操作,由元數(shù)據(jù)服務(wù)器根據(jù)用戶輸入的身份驗證信息,例如用戶名和密碼,來判斷該用戶是否具備合法的身份。例如,可以在元數(shù)據(jù)服務(wù)器上建立并存儲合法用戶和組列表,用于保存分布式文件系統(tǒng)的合法用戶、用戶組及對應(yīng)的用戶密碼,其中用戶密碼可以密文的形式保存。并且可以在文件的元數(shù)據(jù)信息中増加文件的所有者、用戶組ID以及用戶權(quán)限值,其中文件的訪問權(quán)限包括只讀共享權(quán)限、受控寫操作權(quán)限和共享寫操作權(quán)限。元數(shù)據(jù)服務(wù)器從用戶的登錄請求中獲取用戶名和密碼,并在合法用戶和組列表中匹配用戶名是否存在,如果用戶名不存在,返回用戶名不存在的錯誤信息;如果存在,則進(jìn)一步將列表中用戶名對應(yīng)的密碼與所獲取的密碼進(jìn)行匹配,如果一致則通過用戶身份認(rèn)證,否則返回密碼錯誤信息。步驟20 、元數(shù)據(jù)服務(wù)器允許合法用戶登錄,并為該用戶建立會話。對于具備合法身份的用戶,元數(shù)據(jù)服務(wù)器允許其登錄,為該用戶建立會話,并標(biāo)識該會話為合法對話,以允許該用戶對文件進(jìn)行后續(xù)操作,否則返回錯誤信息給用戶。步驟203)、當(dāng)合法用戶對文件進(jìn)行訪問時,向元數(shù)據(jù)服務(wù)器發(fā)送訪問請求,由元數(shù)據(jù)服務(wù)器判斷該用戶對文件是否具有操作權(quán)限。收到用戶的訪問請求時,元數(shù)據(jù)服務(wù)器根據(jù)用戶的身份并讀取文件的元數(shù)據(jù)信息,來判斷該用戶對文件是否具有操作權(quán)限,也就是判斷該訪問請求是否合法。如果不合法,則拒絕用戶執(zhí)行該操作,返回錯誤信息;如果合法,則繼續(xù)執(zhí)行下面的步驟。對文件的訪問請求可以分為讀文件請求和寫文件請求兩種基本操作類型。其中判斷用戶對文件是否具有操作權(quán)限有以下幾種情況·文件是只讀共享文件,用戶具有讀操作權(quán)限,提出讀文件請求,則為合法;·文件是只讀共享文件,用戶具有讀操作權(quán)限,提出寫文件請求,操作不合法;·文件是受控寫操作文件,用戶具有讀操作權(quán)限,提出讀文件請求,則為合法;·文件是受控寫操作文件,用戶僅具有讀操作權(quán)限,提出寫文件請求,操作不合法;·文件是受控寫操作文件,用戶具有寫操作權(quán)限,提出寫文件請求,如果不存在具有相同寫操作權(quán)限的用戶對文件進(jìn)行寫操作,操作合法;·文件是受控寫操作文件,用戶具有寫操作權(quán)限,提出寫文件請求,如果存在具有相同寫操作權(quán)限的用戶對文件進(jìn)行寫操作,操作不合法;·文件是共享寫操作文件,用戶具有讀操作權(quán)限,提出讀文件請求,則為合法;·文件是共享寫操作文件,用戶僅具有讀操作權(quán)限,提出寫文件請求,操作不合法;·文件是共享寫操作文件,用戶具有寫操作權(quán)限,提出寫文件請求,則為合法。步驟204)、由元數(shù)據(jù)服務(wù)器向數(shù)據(jù)塊服務(wù)器發(fā)出用戶權(quán)限確認(rèn)通知,以確定該用戶對文件具有相應(yīng)操作權(quán)限,數(shù)據(jù)塊服務(wù)器收到用戶權(quán)限確認(rèn)通知后,更新其訪問權(quán)限列表。所述權(quán)限確認(rèn)通知中包括用戶信息(例如,用戶標(biāo)識)以及該用戶對文件的操作權(quán)限信息(例如,該用戶對哪個文件具有讀/寫的權(quán)限)等等。在一個實施例中,數(shù)據(jù)塊服務(wù)器在收到來自元數(shù)據(jù)服務(wù)器的權(quán)限確認(rèn)通知后,可以相應(yīng)地利用該用戶權(quán)限確認(rèn)通知中的相關(guān)信息,例如用戶信息、用戶對文件的操作權(quán)限信息來更新數(shù)據(jù)塊服務(wù)器的訪問權(quán)限列表。在該訪問權(quán)限列表中記錄用戶信息以及其能訪問的數(shù)據(jù)塊的相關(guān)信息。在又一個實施例中,數(shù)據(jù)塊服務(wù)器在收到來自元數(shù)據(jù)服務(wù)器的權(quán)限確認(rèn)通知后, 還可以向元數(shù)據(jù)服務(wù)器發(fā)送對該權(quán)限確認(rèn)通知的應(yīng)答,該應(yīng)答指示該數(shù)據(jù)塊服務(wù)器處于正常狀態(tài);當(dāng)元數(shù)據(jù)服務(wù)器收到來自數(shù)據(jù)塊服務(wù)器的應(yīng)答后,將元數(shù)據(jù)信息傳送到客戶端應(yīng)用程序。如果元數(shù)據(jù)服務(wù)器等待了一段時間后還沒有收到數(shù)據(jù)塊服務(wù)器的應(yīng)答,則根據(jù)元數(shù)據(jù)信息向其它包含該用戶要訪問的文件的數(shù)據(jù)塊服務(wù)器發(fā)送權(quán)限確認(rèn)通知。步驟20 、由元數(shù)據(jù)服務(wù)器將與待訪問文件相關(guān)的元數(shù)據(jù)信息傳送到客戶端。
步驟206)、客戶端基于所得到的元數(shù)據(jù)信息向數(shù)據(jù)塊服務(wù)器發(fā)出操作請求,數(shù)據(jù)塊服務(wù)器驗證該操作請求并處理合法用戶被允許的操作請求。數(shù)據(jù)塊服務(wù)器收到來自客戶端的操作請求時,首先查找該用戶信息是否存在于訪問權(quán)限列表中,如果不存在則拒絕該用戶的訪問請求;如果該用戶存在,則判斷該操作請求與訪問權(quán)限列表中的所允許的該用戶的操作權(quán)限是否相同,如果相同則返回所請求的數(shù)據(jù)塊內(nèi)容,否則拒絕該訪問請求。步驟207)、用戶對文件操作結(jié)束后,退出分布式文件系統(tǒng),關(guān)閉對話。其中,如上所述步驟201)和步驟20 是可選的。在其他實施例中,也可以依賴應(yīng)用層來判斷用戶身份是否合法。在上述的方法中,當(dāng)客戶端訪問數(shù)據(jù)塊服務(wù)器時,數(shù)據(jù)塊服務(wù)器根據(jù)來自元數(shù)據(jù)服務(wù)器的權(quán)限確認(rèn)信息來驗證該操作是否是來自合法用戶的被允許的操作,從而避免客戶端不經(jīng)過元數(shù)據(jù)服務(wù)器允許直接訪問數(shù)據(jù)塊服務(wù)器的情況。在又一個實施例中,還包括數(shù)據(jù)塊服務(wù)器對權(quán)限確認(rèn)通知進(jìn)行驗證的步驟,以確認(rèn)權(quán)限確認(rèn)通知確實是來自元數(shù)據(jù)服務(wù)器。例如,元數(shù)據(jù)服務(wù)器在發(fā)送權(quán)限確認(rèn)通知時,可以用自己的私鑰對其進(jìn)行加密。數(shù)據(jù)塊服務(wù)器在收到權(quán)限確認(rèn)通知后,用元數(shù)據(jù)服務(wù)器的公鑰進(jìn)行解密,如果能正確解密,說明該權(quán)限確認(rèn)通知是來自元數(shù)據(jù)服務(wù)器的。又例如,在其他實施例中,數(shù)據(jù)塊服務(wù)器的訪問權(quán)限列表可以包括文件編號、文件的所有者、用戶組ID 以及用戶權(quán)限值等字段,當(dāng)元數(shù)據(jù)服務(wù)器維護(hù)的權(quán)限列表發(fā)生更新時,會向數(shù)據(jù)塊服務(wù)器發(fā)送更新通知,數(shù)據(jù)塊服務(wù)器返回一個16位的隨機數(shù),元數(shù)據(jù)服務(wù)器將收到的隨機數(shù)作為密鑰,將文件權(quán)限控制字段進(jìn)行加密,連同文件編號、文件的所有者、用戶組ID等字段發(fā)送給數(shù)據(jù)塊服務(wù)器,數(shù)據(jù)塊服務(wù)器進(jìn)行相應(yīng)字段的更新。這樣,當(dāng)收到元數(shù)據(jù)服務(wù)器發(fā)送的權(quán)限確認(rèn)通知時,首先查找本數(shù)據(jù)塊服務(wù)器維護(hù)的訪問權(quán)限列表的相應(yīng)表項,比較該用戶的權(quán)限信息與記錄的是否相同,如果權(quán)限正確則接受元數(shù)據(jù)服務(wù)器的通知,如果不相同,則認(rèn)為是經(jīng)過非法篡改的操作,這樣做的好處在于避免非法用戶對權(quán)限確認(rèn)通知進(jìn)行篡改,對數(shù)據(jù)安全性造成威脅。圖3給出了根據(jù)本發(fā)明一個實施例分布式文件系統(tǒng)的架構(gòu)示意圖。其中,元數(shù)據(jù)服務(wù)器還包括用戶身份驗證模塊和用戶操作權(quán)限驗證模塊;數(shù)據(jù)塊服務(wù)器還包括訪問權(quán)限驗證模塊。其中,所述用戶身份驗證模塊,用于判斷用戶身份是否合法。所述用戶操作權(quán)限驗證模塊,用于判斷該用戶對所請求訪問的文件是否具有相應(yīng)的操作權(quán)限,也就是對來自合法用戶的操作權(quán)限進(jìn)行驗證;如果有,則向數(shù)據(jù)塊服務(wù)器發(fā)送對該用戶的權(quán)限確認(rèn)通知, 并將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端。所述訪問權(quán)限驗證模塊用于根據(jù)所收到的權(quán)限確認(rèn)通知中的信息來對客戶端的操作請求進(jìn)行驗證,并處理來自合法用戶的被元數(shù)據(jù)服務(wù)器所允許的操作請求。根據(jù)本發(fā)明的一個實施例,元數(shù)據(jù)服務(wù)器還包括用戶及權(quán)限管理列表模塊,用于保持并維護(hù)分布式文件系統(tǒng)合法用戶列表以及用戶對文件的操作權(quán)限列表。所述合法用戶列表用于保存分布式文件系統(tǒng)的合法用戶、用戶組及對應(yīng)的用戶密碼,其中用戶密碼以密文的形式保存。而且,該模塊在與文件相關(guān)的元數(shù)據(jù)中增加文件的所有者、用戶組ID以及用戶操作權(quán)限,所述用戶操作權(quán)限包括只讀共享權(quán)限、受控寫操作權(quán)限和共享寫操作權(quán)限。 在數(shù)據(jù)塊服務(wù)器上訪問權(quán)限驗證模塊還用于根據(jù)所收到的權(quán)限確認(rèn)通知來管理和維護(hù)訪問權(quán)限列表,所述訪問權(quán)限列表中保存用戶信息,用戶對文件的操作權(quán)限信息等。更具體地,用戶通過客戶端訪問圖3所示的分布式文件系統(tǒng)的過程如下首先客戶端向元數(shù)據(jù)服務(wù)器發(fā)送登錄請求,該登錄請求中包括用戶身份驗證信息,例如用戶名和密碼;元數(shù)據(jù)服務(wù)器上的用戶身份驗證模塊根據(jù)合法用戶列表中所保存的用戶名和密碼驗證該用戶身份是否合法。元數(shù)據(jù)服務(wù)器將驗證結(jié)果返回給用戶。對于具備合法身份的用戶, 元數(shù)據(jù)服務(wù)器允許其登錄,并標(biāo)識該會話為合法對話,允許對文件進(jìn)行后續(xù)操作,否則返回錯誤信息給用戶??蛻舳藢ξ募牟僮黝愋涂煞譃樽x操作和寫操作,對于讀操作的請求,客戶端首先發(fā)送操作權(quán)限驗證信息到元數(shù)據(jù)服務(wù)器,所述操作權(quán)限驗證信息可包括用戶標(biāo)識、要訪問的文件標(biāo)識以及要對該文件執(zhí)行的操作類型等等。然后元數(shù)據(jù)服務(wù)器判斷當(dāng)前會話的客戶端的用戶名是合法用戶,讀取其要訪問的文件的元數(shù)據(jù)信息,并使用該文件的權(quán)限設(shè)定值和文件的用戶和組信息,驗證該用戶對該文件是否有讀權(quán)限,如果允許進(jìn)行讀操作,則將該文件的數(shù)據(jù)塊元信息發(fā)送到客戶端,并發(fā)送權(quán)限確認(rèn)通知到數(shù)據(jù)塊服務(wù)器,以通告數(shù)據(jù)塊服務(wù)器該用戶對相應(yīng)文件具有操作權(quán)限;否則權(quán)限驗證失敗,返回錯誤信息給客戶端。對寫文件的請求,與上述驗證過程類似,客戶端首先發(fā)送操作權(quán)限驗證信息到元數(shù)據(jù)服務(wù)器,然后由元數(shù)據(jù)服務(wù)器判斷該用戶對要訪問的文件是否具有相應(yīng)的操作權(quán)限, 例如是否可以對所請求訪問的文件進(jìn)行寫操作,如果可以,則將與該文件相關(guān)的元數(shù)據(jù)信息(與該文件對應(yīng)的數(shù)據(jù)塊元信息)返回到客戶端,否則,返回錯誤信息給客戶端??蛻舳耸盏皆獢?shù)據(jù)信息后,向數(shù)據(jù)塊服務(wù)器發(fā)出操作請求,數(shù)據(jù)塊服務(wù)器上的訪問權(quán)限驗證模塊通過訪問權(quán)限列表中保存的信息來驗證該操作是否是來自合法用戶的被允許的操作,如果是,則對其進(jìn)行處理,否則,拒絕該操作,返回錯誤信息。另外,為了提高可靠性,元數(shù)據(jù)服務(wù)器可以在收到來自數(shù)據(jù)塊服務(wù)器的對權(quán)限確認(rèn)通知的應(yīng)答后,再將與待訪問文件相關(guān)的元數(shù)據(jù)信息返回給客戶端。數(shù)據(jù)塊服務(wù)器收到權(quán)限確認(rèn)通知后,立即向元數(shù)據(jù)服務(wù)器發(fā)送對該權(quán)限確認(rèn)通知的應(yīng)答,以表明該數(shù)據(jù)塊服務(wù)器處于正常狀態(tài)。但如果元數(shù)據(jù)服務(wù)器等待一段時間后,還是沒有收到來自數(shù)據(jù)塊服務(wù)器的應(yīng)答,則可以根據(jù)元數(shù)據(jù)信息向其它包含待訪問的文件的數(shù)據(jù)塊服務(wù)器發(fā)送權(quán)限確認(rèn)通知。為了提高安全性,數(shù)據(jù)塊服務(wù)器可以對權(quán)限確認(rèn)通知進(jìn)行驗證,以確認(rèn)權(quán)限確認(rèn)通知確實是來自元數(shù)據(jù)服務(wù)器。這樣做的好處在于避免非法用戶對權(quán)限確認(rèn)通知進(jìn)行篡改,對數(shù)據(jù)安全性造成威脅。當(dāng)然,用戶也可以通過客戶端向元數(shù)據(jù)服務(wù)器發(fā)送修改文件權(quán)限的請求,過程與寫文件的請求類似,但是不需要客戶端與數(shù)據(jù)塊服務(wù)器通信,在元數(shù)據(jù)服務(wù)器上即可以完成所有修改。圖4為給出了用戶訪問上述分布式文件系統(tǒng)的操作示意圖。例如,假設(shè)用戶組1 中用戶對文件F具有共享讀操作權(quán)限,用戶組2中用戶沒有對文件F操作的權(quán)利。用戶組1 合法用戶A登錄后向元數(shù)據(jù)服務(wù)器發(fā)送讀文件請求,經(jīng)過元數(shù)據(jù)服務(wù)器認(rèn)證后屬于合法操作,返回與文件F相關(guān)的數(shù)據(jù)塊元信息,井向數(shù)據(jù)塊服務(wù)器發(fā)送權(quán)限確認(rèn)通知??蛻舳诉B接數(shù)據(jù)塊服務(wù)器,請求讀取相應(yīng)文件信息,數(shù)據(jù)塊服務(wù)器根據(jù)訪問權(quán)限列表判斷該請求是來自合法用戶的被元數(shù)據(jù)服務(wù)器所允許的操作,并將響應(yīng)的文件信息返回給客戶端。而用戶組2中合法用戶B試圖讀取文件F,向元數(shù)據(jù)服務(wù)器發(fā)送讀文件請求后,元數(shù)據(jù)服務(wù)器根據(jù)用戶權(quán)限判定該操作為不合法操作,拒絕用戶B的讀操作行為,并返回不能進(jìn)行讀操作的 fn息ο又例如,假設(shè)用戶組1和用戶組2中用戶對文件F都具有受限寫操作權(quán)限,用戶組 1合法用戶A登錄后向元數(shù)據(jù)服務(wù)器發(fā)送對文件F的寫請求,元數(shù)據(jù)服務(wù)器查詢列表,該用戶對文件具有寫操作權(quán)限,而且此刻不存在其他用戶對該文件進(jìn)行寫操作,經(jīng)認(rèn)證屬于合法操作,則向客戶端返回與文件F相關(guān)的數(shù)據(jù)塊元信息,并向數(shù)據(jù)塊服務(wù)器發(fā)送權(quán)限確認(rèn)通知??蛻舳诉B接數(shù)據(jù)塊服務(wù)器,經(jīng)數(shù)據(jù)塊服務(wù)器驗證后,獲取相應(yīng)文件信息并將寫入的數(shù)據(jù)塊發(fā)送到數(shù)據(jù)塊服務(wù)器。在用戶A寫文件的同時,用戶組2中合法用戶B試圖對文件F 進(jìn)行寫操作,向元數(shù)據(jù)服務(wù)器發(fā)送讀文件請求后,元數(shù)據(jù)服務(wù)器驗證該用戶具有寫權(quán)限,但是此時文件F處于用戶A的寫操作中,則判定該操作為不合法操作,拒絕用戶B的寫操作行為,并返回不能進(jìn)行寫操作的信息。雖然本發(fā)明已經(jīng)通過優(yōu)選實施例進(jìn)行了描述,然而本發(fā)明并非局限于這里所描述的實施例,在不脫離本發(fā)明范圍的情況下還包括所作出的各種改變以及變化。
權(quán)利要求
1.一種用于分布式文件系統(tǒng)的用戶與權(quán)限管理方法,所述分布式文件系統(tǒng)包括客戶端、元數(shù)據(jù)服務(wù)器和數(shù)據(jù)塊服務(wù)器,所述方法包括步驟a)接收自客戶端的用戶訪問文件請求,由元數(shù)據(jù)服務(wù)器判斷該用戶對所請求訪問的文件是否具有相應(yīng)的操作權(quán)限;步驟b)對于有操作權(quán)限的請求,向數(shù)據(jù)塊服務(wù)器發(fā)送對該用戶的權(quán)限確認(rèn)通知,并將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;步驟c)由客戶端根據(jù)所得到的元數(shù)據(jù)信息向數(shù)據(jù)塊服務(wù)器發(fā)送操作請求;步驟d)由數(shù)據(jù)塊服務(wù)器基于所收到的權(quán)限確認(rèn)通知中的信息來對客戶端的操作請求進(jìn)行驗證,并處理來自合法用戶的被元數(shù)據(jù)服務(wù)器所允許的操作請求。
2.根據(jù)權(quán)利要求1所述的方法,還包括在步驟a)之前接收用戶的登錄請求吋,由元數(shù)據(jù)服務(wù)器對用戶身份進(jìn)行驗證,以判斷用戶身份是否合法的步驟。
3.根據(jù)權(quán)利要求1所述的方法,在步驟b)還包括由數(shù)據(jù)塊服務(wù)器在收到所述權(quán)限確認(rèn)通知后,向元數(shù)據(jù)服務(wù)器發(fā)送應(yīng)答。
4.根據(jù)權(quán)利要求3所述的方法,在步驟b)還包括元數(shù)據(jù)服務(wù)器等待來自數(shù)據(jù)塊服務(wù)器的對權(quán)限確認(rèn)通知的應(yīng)答;如果收到了應(yīng)答,則將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;如果等待了一段時間之后,沒有收到應(yīng)答,則向包含該用戶所請求訪問的文件的其他數(shù)據(jù)塊服務(wù)器發(fā)送權(quán)限確認(rèn)通知。
5.根據(jù)權(quán)利要求1或4所述的方法,在步驟b)還包括由數(shù)據(jù)塊服務(wù)器對來自元數(shù)據(jù)服務(wù)器的權(quán)限確認(rèn)通知進(jìn)行驗證的步驟,以確認(rèn)權(quán)限確認(rèn)通知確實是來自元數(shù)據(jù)服務(wù)器。
6.ー種分布式文件系統(tǒng),所述分布式文件系統(tǒng)包括客戶端、元數(shù)據(jù)服務(wù)器和數(shù)據(jù)塊服務(wù)器,其中,所述元數(shù)據(jù)服務(wù)器包括用戶操作權(quán)限驗證模塊,用于在收到來自客戶端的用戶訪問請求吋,判斷該用戶對所請求訪問的文件是否具有相應(yīng)的操作權(quán)限;如果有,則向數(shù)據(jù)塊服務(wù)器發(fā)送對該用戶的權(quán)限確認(rèn)通知,并將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;所述數(shù)據(jù)塊服務(wù)器包括訪問權(quán)限驗證模塊,用于基于所收到的權(quán)限確認(rèn)通知中的信息來對客戶端的操作請求進(jìn)行驗證,并處理來自該用戶的被元數(shù)據(jù)服務(wù)器所允許的操作請求。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其中,元數(shù)據(jù)服務(wù)器還包括用戶身份驗證模塊,用于在接收用戶的登錄請求時,對用戶身份進(jìn)行驗證,以判斷用戶身份是否合法的步驟。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其中,所述訪問權(quán)限驗證模塊還用于在收到所述權(quán)限確認(rèn)通知后,向元數(shù)據(jù)服務(wù)器發(fā)送應(yīng)答。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述用戶操作權(quán)限驗證模塊還用于等待來自數(shù)據(jù)塊服務(wù)器的對權(quán)限確認(rèn)通知的應(yīng)答;如果收到了應(yīng)答,則將與所請求訪問的文件相關(guān)的元數(shù)據(jù)信息返回給客戶端;如果等待了一段時間之后,沒有收到應(yīng)答,則向包含該用戶所請求訪問的文件的其他數(shù)據(jù)塊服務(wù)器發(fā)送權(quán)限確認(rèn)通知。
10.根據(jù)權(quán)利要求6或9所述的系統(tǒng),其中,所述訪問權(quán)限驗證模塊還用于對來自元數(shù)據(jù)服務(wù)器的權(quán)限確認(rèn)通知進(jìn)行驗證,以確認(rèn)權(quán)限確認(rèn)通知確實是來自元數(shù)據(jù)服務(wù)器。
全文摘要
本發(fā)明提供用于分布式文件系統(tǒng)的用戶和權(quán)限管理方法。首先由元數(shù)據(jù)服務(wù)器對用戶身份進(jìn)行驗證,以判斷用戶身份是否合法。然后,由元數(shù)據(jù)服務(wù)器對來自合法用戶的操作權(quán)限進(jìn)行驗證,以判斷該用戶對所請求訪問的文件是否具有相應(yīng)的操作權(quán)限;如果有,則向數(shù)據(jù)塊服務(wù)器發(fā)送對該用戶的權(quán)限確認(rèn)通知。由數(shù)據(jù)塊服務(wù)器基于所收到的權(quán)限確認(rèn)通知中的信息來對來自客戶端的操作請求進(jìn)行驗證,并處理來自合法用戶的且被元數(shù)據(jù)服務(wù)器所允許的操作請求。通過對上述三項內(nèi)容的驗證能夠保證訪問分布式文件系統(tǒng)用戶的合法性以及操作的合法性,同時能夠避免某些不合法用戶越過元數(shù)據(jù)服務(wù)器的相關(guān)認(rèn)證直接盜取或破壞數(shù)據(jù)塊服務(wù)器的內(nèi)容。
文檔編號H04L29/06GK102546664SQ20121004782
公開日2012年7月4日 申請日期2012年2月27日 優(yōu)先權(quán)日2012年2月27日
發(fā)明者周洲儀, 張冬, 李陽光, 林思明, 梁英, 王元卓, 程學(xué)旗 申請人:中國科學(xué)院計算技術(shù)研究所