本發(fā)明涉及計算機分布式存儲領(lǐng)域,具體涉及一種對不同分布式存儲系統(tǒng)提供統(tǒng)一的,透明的多租戶管理的方法。
背景技術(shù):
多租戶作為云計算的重要特征,主要提供資源隔離、數(shù)據(jù)隔離以及服務(wù)質(zhì)量隔離等功能,從而確保上層的虛擬機、容器等各種應(yīng)用可以按需地、安全地使用云計算系統(tǒng)。因此,多租戶管理在云計算系統(tǒng)中扮演了十分重要的角色。當前的存儲多租戶存在的問題主要存在幾種:第一,分布式存儲系統(tǒng)中,大部分只提供了簡單的租戶管理,而在實際應(yīng)用中,租戶的結(jié)構(gòu)往往更加復(fù)雜,意味著存儲系統(tǒng)原生的租戶管理根本無法滿足實際應(yīng)用;第二,在云計算系統(tǒng)中,可能會使用不同的分布式存儲系統(tǒng)以滿足不同的場景,每個存儲系統(tǒng)需要各自做多租戶管理,存儲資源的管理變得很不方便,開發(fā)運維的成本也因此增加;第三,傳統(tǒng)的多租戶技術(shù)是基于數(shù)據(jù)庫實現(xiàn)的,所以,當租戶量較大、結(jié)構(gòu)復(fù)雜時,為了降低對多租戶管理效率的影響,就需要做分庫分表的工作,從而帶來了不小的開銷。因此,亟需一種解決以上問題的多租戶的管理方法。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明提供一種解決或部分解決上述問題的對象存儲系統(tǒng)多租戶的管理方法。
為達到上述技術(shù)方案的效果,本發(fā)明的技術(shù)方案為:一種對象存儲系統(tǒng)多租戶的管理方法,包含:首先進行初始化步驟,再進行具體的步驟;
一、所述初始化步驟如下:
1)初始化多租戶層,多租戶層包含公有存儲空間和若干用戶,用戶可以使用公有存儲空間進行存儲,用戶使用用戶角色來表示,租戶等于用戶的集合,用戶角色分為組織管理者、租戶管理者與存儲用戶三種類型;組織管理者、租戶管理者皆為特殊的存儲用戶,為存儲用戶的管理者,組織管理者是一個全局的管理角色,租戶管理者是被組織管理者賦予租戶管理權(quán)限的存儲用戶,租戶管理者擁有存儲用戶的功能,擁有對租戶的公有存儲空間的管理權(quán)限,存儲用戶是存儲服務(wù)的使用者,可以在分配的存儲資源中使用存儲系統(tǒng),存儲系統(tǒng)為分布式存儲系統(tǒng);
2)建立租戶結(jié)構(gòu),租戶結(jié)構(gòu)為表示用戶的結(jié)構(gòu)關(guān)系的樹形結(jié)構(gòu),稱為組織結(jié)構(gòu)樹,由一個根節(jié)點、多個非葉節(jié)點以及葉節(jié)點組成,根節(jié)點組成組織結(jié)構(gòu)樹的根,為組織結(jié)構(gòu)樹的最高層,非葉節(jié)點組成組織結(jié)構(gòu)樹的多個中間層,葉節(jié)點組成組織結(jié)構(gòu)樹的最底層;根節(jié)點表示組織管理者,非葉節(jié)點表示租戶管理者,葉子節(jié)點表示存儲用戶;
二、具體實施步驟為:
1)創(chuàng)建組織管理者,同時創(chuàng)建組織管理者的主要參數(shù),其中包括租戶結(jié)構(gòu)的賬號與密碼、租戶結(jié)構(gòu)的總存儲空間大小、租戶的公共空間的默認大小與其的最大值與最小值、存儲用戶的存儲空間默認大小與其的最大值與最小值,組織管理者的主要參數(shù)為全局參數(shù),組織管理者擁有最高管理權(quán)限,最高管理權(quán)限包括:創(chuàng)建、修改、查詢租戶結(jié)構(gòu)內(nèi)的租戶與存儲用戶,創(chuàng)建、修改、查詢租戶與存儲用戶之間的從屬關(guān)系,修改、查詢?nèi)謪?shù);從屬關(guān)系直接反映在組織結(jié)構(gòu)樹中;
2)使用第1)步創(chuàng)建的組織管理者登陸,組織管理者初始化租戶結(jié)構(gòu)的存儲池,并發(fā)送初始化租戶結(jié)構(gòu)的存儲池請求到網(wǎng)關(guān)模塊,其中,存儲池用于存儲租戶結(jié)構(gòu),網(wǎng)關(guān)模塊用于統(tǒng)一多租戶層,組織管理者使用xml文件描述租戶結(jié)構(gòu)的內(nèi)部結(jié)構(gòu),網(wǎng)關(guān)模塊收到初始化租戶結(jié)構(gòu)的存儲池請求后,解析xml文件;
3)網(wǎng)關(guān)模塊將初始化租戶結(jié)構(gòu)的存儲池請求轉(zhuǎn)化為多個子操作請求,再將子操作請求分發(fā)到其他模塊中執(zhí)行,子操作請求主要包括兩種類型的請求:第一種類型的請求,將組織結(jié)構(gòu)樹上的節(jié)點轉(zhuǎn)化為創(chuàng)建租戶的操作或創(chuàng)建存儲用戶的操作,把創(chuàng)建租戶的操作或創(chuàng)建存儲用戶的操作發(fā)送到組織管理模塊,創(chuàng)建的參數(shù)包括存儲用戶的id以及其對應(yīng)的存儲配額;第二種類型的請求,為了實現(xiàn)租戶的數(shù)據(jù)隔離,需要為組織結(jié)構(gòu)樹里的每條路徑創(chuàng)建權(quán)限認證碼,為每次操作會生成一個操作碼,操作包含讀操作、寫操作,通過租戶在組織結(jié)構(gòu)樹中的路徑的權(quán)限認證碼和操作碼的匹配,進行了租戶的數(shù)據(jù)隔離;
網(wǎng)關(guān)模塊會生成租戶的權(quán)限認證信息請求發(fā)送到權(quán)限認證模塊,其中,權(quán)限認證信息請求中主要請求參數(shù)包括存儲用戶的id以及其在組織結(jié)構(gòu)樹中的路徑;
4)組織管理模塊采用基于哈希的管理方法進行多租戶管理,主要步驟為:首先,組織管理模塊接收到了網(wǎng)關(guān)模塊發(fā)來的創(chuàng)建租戶的操作或創(chuàng)建存儲用戶的操作,創(chuàng)建租戶的操作等于多次創(chuàng)建存儲用戶的操作,使用文件路徑的形式表示存儲用戶在組織結(jié)構(gòu)樹中的路徑,表示為‘/租戶結(jié)構(gòu)org1/一級租戶tenant1/二級租戶tenant2/存儲用戶storage_uid’,其含義為存儲用戶storage_uid歸屬于租戶結(jié)構(gòu)org1,組織結(jié)構(gòu)為并且同時歸屬于一級租戶tenant1和二級租戶tenant2之下,一級租戶tenant1為存儲用戶所在組織結(jié)構(gòu)樹的最高層的組織管理者,二級租戶tenant2為存儲用戶所在組織結(jié)構(gòu)樹的中間層的租戶管理者;
然后,組織管理模塊會創(chuàng)建并維護一張存儲用戶信息表,存儲用戶信息表包括存儲用戶的id、存儲用戶的密鑰以及存儲用戶的存儲配額、存儲用戶的權(quán)限,其中存儲用戶的id使用存儲用戶在組織結(jié)構(gòu)樹中的路徑表示,存儲用戶的權(quán)限包含存儲用戶可以進行存儲操作的存儲空間;
最后,組織管理模塊將經(jīng)過初始化的租戶結(jié)構(gòu)的存儲池寫入存儲用戶信息表;
5)權(quán)限認證模塊進行初始化存儲用戶的權(quán)限,具體步驟如下:
5.a)權(quán)限認證模塊接收到網(wǎng)關(guān)模塊發(fā)來的權(quán)限認證信息請求后,提取其中包含的存儲用戶的位置,即其在組織結(jié)構(gòu)樹中的路徑,同時為存儲用戶生成密鑰對;
5.b)根據(jù)存儲用戶在組織結(jié)構(gòu)樹中的路徑和密鑰對生成存儲用戶的權(quán)限認證碼,具體方法為:對存儲用戶從組織結(jié)構(gòu)樹的根開始的每一級子路徑,若子路徑不是全路徑,即子路徑為存儲用戶所在組織結(jié)構(gòu)樹的上層的租戶,為子路徑賦予讀權(quán)限;若子路徑已是全路徑,即子路徑是存儲用戶的私有空間,私有空間表示為不允許其他租戶使用子路徑,為子路徑賦予讀寫權(quán)限,讀權(quán)限、讀寫權(quán)限都為子路徑被賦予的權(quán)限;
5.c)權(quán)限認證碼生成過程為,將密鑰對以及子路徑被賦予的權(quán)限拼接成一個預(yù)處理字符串,然后計算預(yù)處理字符串的哈希值,具體過程為:首先,創(chuàng)建權(quán)限認證碼生成函數(shù),用于生成權(quán)限認證碼,權(quán)限認證碼生成函數(shù)遍歷組織結(jié)構(gòu)樹中的路徑中所有從第一級路徑開始的所有子路徑,根據(jù)5.b)步驟,如果子路徑不是全路徑,賦予其讀權(quán)限,權(quán)限認證碼為存儲用戶的密鑰對+‘@’+子路徑+‘r’,其中r表示讀權(quán)限,如果子路徑是全路徑,賦予其讀寫權(quán)限,權(quán)限認證碼為存儲用戶的密鑰對+‘@’+子路徑+‘rw’,其中‘rw’表示讀寫權(quán)限,在遍歷完所有子路徑后,將各級子路徑生成的權(quán)限認證碼都寫入存儲用戶的權(quán)限認證表中,權(quán)限認證表為每一個存儲用戶都擁有的、用于存放存儲用戶的權(quán)限認證碼;
6)完成第5)步、第6)步后,將通知網(wǎng)關(guān)管理模塊,網(wǎng)關(guān)管理模塊是針對網(wǎng)關(guān)模塊的上層管理,并且會請求存儲驅(qū)動模塊,以為租戶、存儲用戶在底層分布式存儲系統(tǒng)中進行初始化,存儲驅(qū)動模塊會根據(jù)不同的底層分布式存儲系統(tǒng)來調(diào)用不同的驅(qū)動,通過對應(yīng)的驅(qū)動在不同的底層分布式存儲系統(tǒng)中執(zhí)行相關(guān)操作,相關(guān)操作包括創(chuàng)建底層分布式存儲系統(tǒng)中的用戶、設(shè)置被分配的存儲配額與創(chuàng)建的參數(shù);
7)完成在底層分布式存儲系統(tǒng)中的初始化后,存儲用戶可以通過統(tǒng)一的多租戶層來使用存儲服務(wù),存儲用戶訪問底層分布式存儲系統(tǒng)需要提供必要參數(shù),即通過網(wǎng)關(guān)模塊向底層分布式存儲系統(tǒng)發(fā)送訪問請求,訪問請求中包含必要參數(shù),必要參數(shù)包括存儲用戶的id與存儲用戶的密鑰、訪問對象路徑,其中訪問對象路徑與存儲用戶在組織結(jié)構(gòu)樹上的路徑等價;多租戶層中的網(wǎng)關(guān)模塊支持兼容標準的s3接口,存儲用戶可以調(diào)用s3接口,將存儲用戶的id與密鑰作為s3接口的id與密鑰參數(shù)值,將訪問對象路徑作為s3接口中的key參數(shù)封裝請求,將key參數(shù)封裝請求發(fā)送到網(wǎng)關(guān)模塊的地址;
8)網(wǎng)關(guān)模塊接收到訪問請求后,提取訪問請求中的存儲用戶的id與存儲用戶的密鑰、訪問對象路徑,并生成訪問模式一起作為存儲請求認證發(fā)送到權(quán)限認證模塊進行權(quán)限認證,訪問模式包含讀操作、寫操作、修改操作;
9)權(quán)限認證模塊進行操作權(quán)限認證,其具體步驟改進如下:
9.1)權(quán)限認證模塊接收網(wǎng)關(guān)模塊發(fā)出的存儲請求認證,根據(jù)具體的存儲請求認證生成一個認證操作碼,具體生成過程為:首先根據(jù)訪問對象路徑來存儲用戶密鑰,組成一個操作字符串,操作字符串為存儲用戶的密鑰對+‘@’+訪問對象路徑+<op>,<op>為具體操作,包含訪問模式中的讀操作、寫操作,‘r’為寫操作,‘w’為讀操作;
9.2)根據(jù)9.1)步生成的操作字符串,使用哈希函數(shù)計算本次存儲請求認證的哈希值,即操作字符串的哈希值作為認證操作碼,匹配存儲用戶的權(quán)限認證表,如果權(quán)限認證表中存在權(quán)限認證碼與認證操作碼匹配,則存儲請求認證合法,否則,存儲請求認證非法,將認證是否合法作為權(quán)限認證結(jié)果發(fā)送給網(wǎng)關(guān)模塊;
10)網(wǎng)關(guān)模塊收到權(quán)限認證模塊發(fā)送的權(quán)限認證結(jié)果后,若存儲請求認證非法,則通知存儲用戶訪問失敗同時返回權(quán)限認證碼與操作碼不匹配的描述,若存儲請求認證合法,網(wǎng)關(guān)模塊將操作字符串的具體操作轉(zhuǎn)發(fā)至存儲系統(tǒng)驅(qū)動模塊來執(zhí)行;
11)存儲系統(tǒng)驅(qū)動模塊根據(jù)訪問請求中的必要參數(shù)、操作字符串的具體操作調(diào)用相應(yīng)的底層分布式存儲系統(tǒng)的接口來執(zhí)行操作字符串的具體操作,最后將其的結(jié)果返回給存儲用戶。
本發(fā)明的有益成果為:本發(fā)明提供的對象存儲系統(tǒng)多租戶的管理方法,針對當今多租戶在分布式存儲系統(tǒng)中存在的問題提出了一種統(tǒng)一的,高效的,可定制的解決方法。該方法主要包括一個統(tǒng)一的對象存儲多租戶管理接口,一個高效的多租戶管理技術(shù)以及一個可擴展的異構(gòu)存儲系統(tǒng)驅(qū)動技術(shù),通過這三個主要的技術(shù)分別解決當前存儲系統(tǒng)多租戶功能不足,管理效率不高以及移植性擴展性差的問題。
附圖說明
圖1為本發(fā)明的對象存儲多租戶管理層的結(jié)構(gòu)圖;
圖2為本發(fā)明的讀寫操作的步驟的示意圖。
具體實施方式
為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合實施例以及附圖,對本發(fā)明進行詳細的說明。應(yīng)當說明的是,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明,能實現(xiàn)同樣功能的產(chǎn)品屬于等同替換和改進,均包含在本發(fā)明的保護范圍之內(nèi)。具體方法如下:
實施例1:云計算作為計算機領(lǐng)域一大發(fā)展趨勢,慢慢被從理論研究推向了產(chǎn)品落地。云計算的核心思想被總結(jié)為基礎(chǔ)架構(gòu)即服務(wù)(iaas)、平臺即服務(wù)(paas)、服務(wù)即服務(wù)(saas)三個層次。伴隨著云計算的核心思想,相應(yīng)的技術(shù)如軟件定義網(wǎng)絡(luò)(sdn)、軟件定義存儲(sds)等也應(yīng)運而生。云計算的特性在為用戶帶來好處的同時,也對計算機體系架構(gòu)提出了新的挑戰(zhàn),計算機體系架構(gòu)中包含了計算,存儲,網(wǎng)絡(luò)。在新的需求下,許多產(chǎn)品與系統(tǒng)涌現(xiàn)出來。典型的產(chǎn)品與系統(tǒng)存在許多種,有用于虛擬機的管理的架構(gòu)openstack、容器運行平臺docker、容器編排工具kubernetes等。而在其中,虛擬機虛擬化與容器虛擬化是云計算時代中最核心的技術(shù)。
虛擬機虛擬化與容器虛擬化中,實現(xiàn)虛擬機級別虛擬化的主要技術(shù)有kvm,qemu等,其原理是對硬件資源進行隔離,而實現(xiàn)容器化的主要技術(shù)有l(wèi)xc以及在lxc基礎(chǔ)上實現(xiàn)的docker。而容器是一種輕量級的虛擬化,相對于kvm等虛擬化方案,具有更強的移植性以及更小的開銷。上面兩種虛擬化方式都有著不同的應(yīng)用場景,其中,虛擬機虛擬化主要用于云桌面等領(lǐng)域,而容器虛擬化主要用于服務(wù)部署等領(lǐng)域。這兩種類型的虛擬化都為云計算的基礎(chǔ)。
多租戶作為云計算的重要特征,主要提供資源隔離、數(shù)據(jù)隔離以及服務(wù)質(zhì)量隔離等功能,從而確保上層的虛擬機、容器等各種應(yīng)用可以按需地、安全地使用云計算系統(tǒng)。因此,多租戶管理在云計算系統(tǒng)中扮演了十分重要的角色。在存儲系統(tǒng)中,多租戶管理涉及的方面包括租戶存儲位置管理、租戶存儲配額管理、租戶權(quán)限管理、租戶的創(chuàng)建刪除修改等操作。首先,對于云計算用戶而言,多租戶管理保證存儲用戶可以正常地、安全地使用其租戶內(nèi)的存儲資源,同時租戶管理的效率也影響著整個存儲系統(tǒng)的效率。在這一點上,租戶管理主要提供的功能包括存儲訪問操作的權(quán)限認證,用戶所屬租戶空間的管理等。其次,對于云計算系統(tǒng)管理者而言,多租戶管理讓管理員可以獲得和管理整個存儲系統(tǒng)的租戶信息,在這點上,租戶管理主要提供的功能包括租戶的創(chuàng)建修改刪除,租戶存儲配額的設(shè)置修改,租戶權(quán)限的設(shè)置修改等。
分布式存儲系統(tǒng)作為云計算系統(tǒng)的一個重要組成部分,因此,對底層分布式存儲系統(tǒng)的管理也影響著整個云計算系統(tǒng)的表現(xiàn)。由于不同的業(yè)務(wù)需求,業(yè)界有許多分布式存儲系統(tǒng)都被用于云計算平臺中。從不同存儲類型上,可以分為文件存儲、對象存儲、塊存儲三種。其中,文件存儲主要提供的是一個具有統(tǒng)一名空間的分布式存儲系統(tǒng),主要用于云計算中需要共享文件的場景,典型的文件系統(tǒng)有hdfs,glusterfs,cephfs等。而對象存儲提供一種key-value類型的存儲,主要用于非結(jié)構(gòu)化數(shù)據(jù)存儲,如虛擬機鏡像、容器鏡像等,典型的對象存儲系統(tǒng)有cephobjectstorage,swift,dynamo等。塊存儲直接將存儲資源以塊設(shè)備的方式提供給用戶,其后,用戶自主地管理塊設(shè)備的地址空間,主要用于虛擬機、容器的數(shù)據(jù)卷掛載,典型的塊存儲系統(tǒng)有cephblockstorage,sheepdog等。
當前的存儲多租戶存在的問題主要有幾種,其一,分布式存儲系統(tǒng)大部分只提供簡單的租戶管理,而在實際應(yīng)用中,租戶的結(jié)構(gòu)往往比較復(fù)雜,意味著存儲系統(tǒng)原生的租戶管理無法滿足實際應(yīng)用。其二,在云計算系統(tǒng)中可能會使用不同的分布式存儲系統(tǒng)用于不同的場景,例如使用ceph做塊存儲的同時,又使用swift作為對象存儲,這樣,每個存儲系統(tǒng)需要各自做多租戶管理,這樣即不方便存儲資源的管理,又增大了開發(fā)運維的成本。其三,傳統(tǒng)的多租戶技術(shù)是基于數(shù)據(jù)庫實現(xiàn)的,所以,當租戶量較大,結(jié)構(gòu)復(fù)雜時,為了降低對多租戶管理效率的影響需要做分庫分表的工作,從而帶來了不小的開銷。
本發(fā)明針對多租戶在分布式存儲系統(tǒng)上的現(xiàn)狀,使用一個統(tǒng)一的多租戶管理層來解決上述的三個問題。針對分布式存儲中原生租戶管理功能簡單的問題,統(tǒng)一多租戶層提供多種角色以及完整的功能以滿足多租戶管理需求;針對多個存儲系統(tǒng)中統(tǒng)一多租戶管理的問題,本發(fā)明向下提供可定制的存儲驅(qū)動模塊以便接入到不同的存儲系統(tǒng),同時服務(wù)端可以根據(jù)實際情況定制合適的存儲系統(tǒng)驅(qū)動以滿足不同的需求;向上提供統(tǒng)一的訪問接口,是得存儲用戶可以方便地使用統(tǒng)一多租戶管理以及后端存儲。同時,本發(fā)明使用一種新的請求解析方法,令存儲用戶只需依據(jù)規(guī)則修改其請求參數(shù),便可使用主流的接口規(guī)范,如s3接口使用了統(tǒng)一多租戶管理模塊;針對傳統(tǒng)基于數(shù)據(jù)庫的多租戶管理效率不高的問題,本發(fā)明使用一種基于哈希技術(shù)的管理方式提高多租戶的管理效率,即使在租戶規(guī)模增大或租戶結(jié)構(gòu)復(fù)雜的情況下,也幾乎不會影響多租戶的管理效率。
實施例2:本實施例對本發(fā)明涉及的一些名詞進行簡要的解釋。為了方便統(tǒng)一多租戶層的管理,其中,租戶層包含多種租戶,實質(zhì)上是用戶的集合,擁有一定的公有存儲空間和若干用戶。將用戶使用用戶角色來表示。本發(fā)明把用戶角色分為組織管理者、租戶管理者與存儲用戶三種類型。前兩種類型本質(zhì)上都是存儲用戶,即一個租戶中的某個或多個存儲用戶可以被授權(quán)為租戶管理者,而組織管理者則是一個全局的管理角色。租戶管理者是被組織管理者賦予租戶管理權(quán)限的存儲用戶,除了擁有普通的存儲用戶的功能外,還對租戶的公有空間擁有管理權(quán)限。存儲用戶是真正存儲服務(wù)的使用者,可以在分配的存儲資源中使用存儲系統(tǒng)。
需要組織用戶對該組織所屬的所有存儲資源包括各租戶存儲資源、各存儲用戶存儲資源、以及該組織內(nèi)的租戶結(jié)構(gòu)、租戶管理者、存儲用戶進行管理。租戶結(jié)構(gòu)可以認為是一種樹形結(jié)構(gòu),稱為組織結(jié)構(gòu)樹,其中,使用非葉節(jié)點表示租戶,葉子節(jié)點表示存儲用戶。如圖1,使用對象存儲多租戶管理層包含網(wǎng)關(guān)模塊、組織管理模塊、權(quán)限認證模塊、存儲驅(qū)動模塊,存儲用戶使用對象存儲多租戶管理層將需要的內(nèi)容存入對象存儲系統(tǒng)。如圖2,為讀寫操作的具體步驟,如果需要進行讀寫操作,先解析讀寫請求,在解析讀寫請求的過程中獲取操作類型以及操作路徑,并生成本次操作的操作碼,通過對比系統(tǒng)中的權(quán)限認證碼,最后得出允許或拒絕本次讀寫操作。
一種對象存儲系統(tǒng)多租戶的管理方法的具體實施步驟為:
1)創(chuàng)建組織管理者,創(chuàng)建所需的主要參數(shù)包括組織賬號與密碼、組織總存儲空間大小、租戶公共空間默認大小與其的最大最小值、存儲用戶空間默認大小與最大最小值等全局配置。組織管理者擁有最高管理權(quán)限,其主要功能包括創(chuàng)建修改查詢組織內(nèi)租戶與存儲用戶以及它們之間的從屬關(guān)系,即組織結(jié)構(gòu)樹;修改查詢?nèi)峙渲玫取?/p>
2)使用存在的組織管理者登陸,組織管理者根據(jù)其組織所需的租戶結(jié)構(gòu)初始化租戶結(jié)構(gòu)的存儲池。組織管理者使用xml文件描述組織的內(nèi)部結(jié)構(gòu),統(tǒng)一多租戶層的網(wǎng)關(guān)模塊收到初始化租戶結(jié)構(gòu)的存儲池請求后,解析該組織結(jié)構(gòu)的xml文件。
3)網(wǎng)關(guān)模塊將初始化租戶結(jié)構(gòu)的存儲池請求轉(zhuǎn)化為多個子操作請求,再將子操作請求分發(fā)到合適的模塊中執(zhí)行,子操作請求主要包括兩種類型的請求:第一,將組織結(jié)構(gòu)樹上的節(jié)點轉(zhuǎn)化為創(chuàng)建租戶操作或存儲用戶操作,把創(chuàng)建租戶操作或存儲用戶操作的請求發(fā)送到組織管理模塊,創(chuàng)建的參數(shù)包括租戶或存儲用戶的id以及其對應(yīng)的存儲配額等;第二,為了實現(xiàn)租戶的數(shù)據(jù)隔離,需要為組織結(jié)構(gòu)樹里的每條路徑創(chuàng)建權(quán)限認證碼,而每次讀寫等存儲操作會生成一個操作碼,通過訪問位置的權(quán)限認證碼和操作碼的匹配進行了存儲空間隔離。網(wǎng)關(guān)模塊會將生成租戶的權(quán)限認證信息請求發(fā)送到權(quán)限認證模塊,其中,主要請求參數(shù)包括存儲用戶id以及該用戶在組織結(jié)構(gòu)樹中的路徑等。
4)組織管理模塊接收到了網(wǎng)關(guān)模塊發(fā)來的租戶創(chuàng)建請求,首先,驗證請求的合法性,驗的證內(nèi)容包括租戶id的合法性、存儲配額設(shè)置的合法性,其中包含的內(nèi)容為不可超過組織管理者設(shè)置的最大值,同時所有租戶的空間之和不能超過組織總的存儲空間,如果存在不合法操作,立即中斷組織初始化過程。組織管理模塊每完成一個存儲用戶的初始化,請求權(quán)限認證模塊初始化該存儲用戶的訪問權(quán)限信息。
5)權(quán)限認證模塊接收到網(wǎng)關(guān)模塊發(fā)來的租戶的權(quán)限認證信息請求后,對于每個存儲用戶,根據(jù)其在組織結(jié)構(gòu)樹中的路徑,對每一級子路徑都創(chuàng)建一個權(quán)限認證碼,其中默認存儲用戶對其路徑上的租戶空間有訪問權(quán)限。
6)在一個租戶、存儲用戶成功完成組織管理模塊和權(quán)限認證模塊的初始化后,將通知網(wǎng)關(guān)管理模塊,網(wǎng)關(guān)管理模塊會請求存儲驅(qū)動模塊,為租戶、存儲用戶在底層分布式存儲系統(tǒng)中進行初始化,存儲驅(qū)動模塊會根據(jù)不同的存儲系統(tǒng)來調(diào)用不同的驅(qū)動,通過對應(yīng)的驅(qū)動在不同的存儲系統(tǒng)中執(zhí)行相關(guān)操作,相關(guān)操作包括創(chuàng)建存儲系統(tǒng)中的用戶、設(shè)置配額與相關(guān)參數(shù)等。
7)完成底層分布式存儲系統(tǒng)中初始化后,存儲用戶可以通過統(tǒng)一租戶管理層來使用存儲服務(wù)。存儲用戶訪問存儲系統(tǒng)需要提供必要參數(shù),即通過網(wǎng)關(guān)模塊向存儲系統(tǒng)發(fā)送訪問請求,訪問請求中包含必要參數(shù),必要參數(shù)包括存儲用戶id與密鑰、訪問對象路徑,其中訪問對象路徑以類似文件路徑來描述。多租戶統(tǒng)一管理層的網(wǎng)關(guān)模塊支持兼容標準的s3接口,存儲用戶可以調(diào)用s3接口,將用戶id與密鑰作為s3接口的id與密鑰參數(shù)值,將訪問對象路徑作為s3接口中的key參數(shù)封裝請求,將key參數(shù)封裝請求發(fā)送到網(wǎng)關(guān)模塊的地址。
8)網(wǎng)關(guān)模塊接收到存儲用戶的訪問請求后,提取訪問請求中的用戶id與密鑰、訪問對象路徑、訪問模式作為存儲請求認證發(fā)送到權(quán)限認證模塊進行權(quán)限認證,訪問模式包含讀、寫、修改等。
9)權(quán)限認證模塊接收到存儲請求認證后,首先根據(jù)用戶id與密鑰判斷存儲用戶的合法性,成功后根據(jù)訪問對象路徑和訪問模式生產(chǎn)本次訪問的操作碼,與該存儲用戶擁有的權(quán)限認證碼進行匹配,若存在操作碼與某個權(quán)限認證碼相等,該訪問請求合法,反之訪問請求非法,將此次權(quán)限認證結(jié)果通知網(wǎng)關(guān)模塊。
10)網(wǎng)關(guān)模塊收到權(quán)限認證模塊發(fā)送的權(quán)限認證結(jié)果后,若請求非法,則通知存儲用戶訪問失敗同時返回失敗原因的描述,若請求合法,網(wǎng)關(guān)模塊將訪問請求的操作轉(zhuǎn)發(fā)至存儲系統(tǒng)驅(qū)動模塊來執(zhí)行相應(yīng)的操作。
11)存儲系統(tǒng)驅(qū)動模塊根據(jù)訪問請求中的存儲系統(tǒng)類型、訪問的類型,對象路徑調(diào)用相應(yīng)存儲系統(tǒng)的接口來執(zhí)行訪問操作,最后將訪問操作的結(jié)果返回給存儲用戶。
本發(fā)明上述技術(shù)方案的改進如下:
步驟4)中在傳統(tǒng)的多租戶管理中,組織管理模塊基于數(shù)據(jù)庫技術(shù),本發(fā)明采用基于哈希的管理方法進行多租戶管理。基于哈希的多租戶管理方法主要步驟為:
4.1)首先把存儲用戶使用類似于文件路徑的形式表示其在組織中的位置,如路徑‘/org1/tenant1/tenant2/storage_uid’表示storage_uid存儲用戶歸屬于組織org1,并且同時位于一級租戶tenant1和二級租戶tenant2下。
4.2)然后,組織管理模塊會創(chuàng)建并維護一張存儲用戶信息表,主其中要的表項包括存儲用戶id、用戶的密鑰信息以及該用戶的配額、權(quán)限等基本信息,其中存儲用戶id使用存儲用戶的路徑表示。
4.3)最后,組織管理模塊將存儲中的各個初始信息寫入存儲用戶信息表。
步驟5)中權(quán)限認證模塊初始化存儲用戶權(quán)限信息具體步驟改進如下:
5.1)權(quán)限認證模塊接收到網(wǎng)關(guān)模塊發(fā)來的初始化存儲用戶請求后,提取初始化存儲用戶請求中的存儲用戶位置,即為組織結(jié)構(gòu)樹中的絕對路徑,同時為該存儲用戶生成密鑰對。
5.2)根據(jù)存儲用戶在組織結(jié)構(gòu)樹中的路徑和其密鑰信息生成該存儲用戶的權(quán)限認證碼,具體方法是對用戶從組織結(jié)構(gòu)樹的根位置開始的每一級子路徑,若該路徑不是全路徑,即該子路徑為存儲用戶的上層租戶,為該子路徑賦予讀權(quán)限;若子路徑已是全路徑,即該子路徑是存儲用戶的私有空間,為其賦予讀寫權(quán)限。
5.3)權(quán)限認證碼生成過程為將存儲用戶的密鑰對、子路徑賦予權(quán)限拼接成一個預(yù)處理字符串,然后計算預(yù)處理字符串的哈希值。例如,用戶的絕對路徑為/org1/t1/t2/t3/user1,權(quán)限認證碼生成函數(shù)會遍歷絕對路徑的所有從第一級路徑開始的所有子路徑,如遍歷到/org1/t1時,該絕對路徑不是全路徑,應(yīng)賦予讀權(quán)限,權(quán)限認證碼為authnum=hash(“<access_key>+<secret_key>+‘@’+‘/org1/t1’+’r’”),遍歷到/org1/t1/t2/t3/user1時,路徑為全路徑,權(quán)限認證碼為authnum=hash(“<access_key>+<secret_key>+‘@’+‘/org1/t1/t2/t3/user1’+’rw’”)。在遍歷完所有子路徑后,將各級路徑生成的權(quán)限認證碼都寫入該用戶的權(quán)限認證表中。
步驟9)中權(quán)限認證模塊進行操作權(quán)限認證的具體步驟改進如下:
9.1)權(quán)限認證模塊接收網(wǎng)關(guān)模塊發(fā)出的操作請求,根據(jù)具體的操作請求生成一個操作碼,具體生成過程為:首先根據(jù)訪問路徑來存儲用戶密鑰,訪問類型則組成一個操作字符串,操作字符串如下:op_str=<access_key>+<secret_key>+‘@’+<path>+<op>,其中access_key和secret_key是存儲用戶的密鑰對,path是訪問的位置,用對象在存儲系統(tǒng)中的絕對路徑表示;op是請求的類型,’r’為寫操作,’w’為讀操作。
9.2)根據(jù)上一步生成的操作字符串,使用哈希函數(shù)計算操作的哈希值,作為本次操作請求的操作碼。匹配存儲用戶所屬組織的權(quán)限認證表,如果權(quán)限認證表中有權(quán)限認證碼與操作碼匹配,則該請求合法,否則,該請求非法。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明實施例進行各種改動和變型而不脫離本發(fā)明實施例的精神和范圍。這樣,倘若本發(fā)明實施例的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。