權(quán)限控制方法及裝置的制造方法【專利摘要】本發(fā)明公開了一種權(quán)限控制方法及裝置,包括:接收針對數(shù)據(jù)庫的表創(chuàng)建請求;判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表;若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表。本發(fā)明提出的權(quán)限控制方法及裝置,能夠避免重復(fù)授權(quán)。【專利說明】權(quán)限控制方法及裝置
技術(shù)領(lǐng)域:
[0001]本發(fā)明設(shè)及數(shù)據(jù)處理
技術(shù)領(lǐng)域:
,特別是指一種權(quán)限控制方法及裝置。【
背景技術(shù):
】[0002]化doop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可W在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序,從而充分利用集群進(jìn)行高速運算和存儲。化doop實現(xiàn)了一個分布式文件系統(tǒng)巧adoopDistributedFileSystem),簡稱HDFSeHDFS有高容錯性的特點,并且設(shè)計用來部署在低廉的硬件上;而且它提供高吞吐量來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。HDFS放寬了P0SIX(Portable化eratingSystemInterface,可移植操作系統(tǒng)接口)的要求,可WW流的形式訪問文件系統(tǒng)中的數(shù)據(jù)。化doop的框架最核屯、的設(shè)計就是:HDFS和MapReduceeMapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運算。HDFS為海量的數(shù)據(jù)提供了存儲,MapReduce則為海量的數(shù)據(jù)提供了計算。[0003]hive是基于化doop的一個數(shù)據(jù)倉庫工具,可W將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供sql(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)查詢功能,可W將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運行。化doop和hive是目前業(yè)界廣泛使用的數(shù)據(jù)存儲W及查詢的分布式解決方案。為了生產(chǎn)環(huán)境安全因素的需要,需要對hive中的權(quán)限進(jìn)行控制。[0004]當(dāng)前Mve中的默認(rèn)的權(quán)限認(rèn)證,提供了對數(shù)據(jù)庫和表的授權(quán)控制,可W對用戶和角色授權(quán)。但是,運種權(quán)限控制還存在比較顯著的問題:用戶每創(chuàng)建一個表,系統(tǒng)都會自動對該新建的表進(jìn)行授權(quán),運樣將會發(fā)生表被重復(fù)授權(quán)的情況,導(dǎo)致元數(shù)據(jù)表的壓力和增加返回的數(shù)據(jù)結(jié)果?!?br/>發(fā)明內(nèi)容】[0005]有鑒于此,本發(fā)明的目的在于提出一種權(quán)限控制方法及裝置,能夠避免重復(fù)授權(quán)。[0006]基于上述目的本發(fā)明實施例提供的權(quán)限控制方法,包括:[0007]接收針對數(shù)據(jù)庫的表創(chuàng)建請求;[000引判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0009]若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表;[0010]若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表。[0011]在一些實施方式中,所述判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限的步驟包括:[0012]查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶具有的權(quán)限;[0013]判斷所述用戶具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0014]如果用戶具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0015]如果用戶具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所在組具有的權(quán)限;[0016]判斷所述用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0017]如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0018]如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所擁有的角色具有的權(quán)限;[0019]判斷所述用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0020]如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0021]如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán)。[0022]在一些實施方式中,所述判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限的步驟包括:[0023]發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求;[0024]判斷查詢結(jié)果是否為空;[0025]若查詢結(jié)果為空,則重復(fù)發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求。[0026]在一些實施方式中,所述重復(fù)發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求的步驟中的重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù);[0027]若重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù)之后,所述查詢結(jié)果仍然為空,則不再重試,并返回查詢失敗的結(jié)果。[0028]在一些實施方式中,所述接收針對數(shù)據(jù)庫的表創(chuàng)建請求的步驟之前還包括:[0029]創(chuàng)建超級管理員賬號白名單;[0030]在對所述用戶執(zhí)行授權(quán)或解除權(quán)限之前,判斷所述用戶是否存在于所述超級管理員賬號白名單中;[0031]若所述用戶存在于所述超級管理員賬號白名單中,則對所述用戶執(zhí)行授權(quán)或解除權(quán)限;[0032]若所述用戶不存在于所述超級管理員賬號白名單中,則不對所述用戶執(zhí)行授權(quán)或解除權(quán)限。[0033]本發(fā)明實施例的另一個方面,還提供了一種權(quán)限控制裝置,包括:[0034]請求接收模塊,用于接收針對數(shù)據(jù)庫的表創(chuàng)建請求;[0035]權(quán)限覆蓋判斷模塊,用于判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0036]表授權(quán)模塊,若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則用于不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則用于執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán);[0037]表創(chuàng)建模塊,用于創(chuàng)建表。[0038]在一些實施方式中,所述權(quán)限覆蓋判斷模塊,具體用于:[0039]查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶具有的權(quán)限;[0040]判斷所述用戶具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0041]如果用戶具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0042]如果用戶具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所在組具有的權(quán)限;[0043]判斷所述用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0044]如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0045]如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所擁有的角色具有的權(quán)限;[0046]判斷所述用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0047]如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0048]如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán)。[0049]在一些實施方式中,所述權(quán)限覆蓋判斷模塊,具體用于:[0050]查詢所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限;[0051]判斷查詢結(jié)果是否為空;[0052]若查詢結(jié)果為空,則重復(fù)發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求。[0053]在一些實施方式中,重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù);所述權(quán)限覆蓋判斷模塊,具體用于:[0054]若重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù)之后,所述查詢結(jié)果仍然為空,則不再重試,并返回查詢失敗的結(jié)果。[0化5]在一些實施方式中,所述的裝置,還包括:[0056]白名單創(chuàng)建模塊,用于創(chuàng)建超級管理員賬號白名單;[0057]用戶權(quán)限判斷模塊,在對所述用戶執(zhí)行授權(quán)或解除權(quán)限之前,用于判斷所述用戶是否存在于所述超級管理員賬號白名單中;[0058]用戶授權(quán)模塊,若所述用戶存在于所述超級管理員賬號白名單中,則用于對所述用戶執(zhí)行授權(quán)或解除權(quán)限;若所述用戶不存在于所述超級管理員賬號白名單中,則用于不對所述用戶執(zhí)行授權(quán)或解除權(quán)限。[0059]從上面所述可W看出,本發(fā)明實施例提供的權(quán)限控制方法,通過在創(chuàng)建表之前判斷用戶已經(jīng)具有的權(quán)限是否覆蓋了全部表創(chuàng)建權(quán)限,從而根據(jù)用戶權(quán)限的覆蓋程度對用戶進(jìn)行相應(yīng)的授權(quán),而不是如現(xiàn)有技術(shù)中那樣直接對創(chuàng)建表的用戶賦予全部的表權(quán)限,從而能夠避免對用戶進(jìn)行重復(fù)授權(quán)的問題,減小了元數(shù)據(jù)表的壓力并減少了返回的數(shù)據(jù)結(jié)果,節(jié)約了系統(tǒng)資源?!靖綀D說明】[0060]圖1為本發(fā)明提供的權(quán)限控制方法的一個實施例的流程示意圖;[0061]圖2為本發(fā)明提供的權(quán)限控制方法實施例中用戶的表創(chuàng)建權(quán)限判斷過程的具體流程示意圖;[0062]圖3為本發(fā)明提供的權(quán)限控制方法實施例中權(quán)限查詢過程的具體流程示意圖;[0063]圖4為本發(fā)明提供的權(quán)限控制方法實施例中用戶權(quán)限判斷過程的具體流程示意圖;[0064]圖5為本發(fā)明提供的權(quán)限控制方法的另一個實施例的流程示意圖;[0065]圖6為本發(fā)明提供的權(quán)限控制裝置的一個實施例的模塊結(jié)構(gòu)示意圖;[0066]圖7為本發(fā)明提供的權(quán)限控制裝置的另一個實施例的模塊結(jié)構(gòu)示意圖?!揪唧w實施方式】[0067]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,W下結(jié)合具體實施例,并參照附圖,對本發(fā)明進(jìn)一步詳細(xì)說明。[0068]需要說明的是,本發(fā)明實施例中所有使用"第一"和"第二"的表述均是為了區(qū)分兩個相同名稱非相同的實體或者非相同的參量,可見"第一""第二"僅為了表述的方便,不應(yīng)理解為對本發(fā)明實施例的限定,后續(xù)實施例對此不再一一說明。[0069]本發(fā)明實施例的第一個方面,提出了一種能夠避免重復(fù)授權(quán)的權(quán)限控制方法的一個實施例。如圖1所示,為本發(fā)明提供的權(quán)限控制方法的一個實施例的流程示意圖。[0070]所述權(quán)限控制方法,包括W下步驟:[0071]步驟101:接收針對數(shù)據(jù)庫的表創(chuàng)建請求;[0072]所述針對數(shù)據(jù)庫的表創(chuàng)建請求是指,需要在所述數(shù)據(jù)庫中創(chuàng)建一個新的表(TABLE)的請求,在接收到所述表創(chuàng)建請求,通常情況下,hive會自動根據(jù)hive.security.authorization.createtable.owner.grant參數(shù)中設(shè)置的權(quán)限對創(chuàng)建表的用戶進(jìn)行針對其創(chuàng)建的表的授權(quán)(即該用戶對自己創(chuàng)建的表具有哪些權(quán)限),如果請求在所述數(shù)據(jù)庫中創(chuàng)建表的用戶已經(jīng)具有了針對所述數(shù)據(jù)庫的跟表有關(guān)的權(quán)限,就有極大可能會導(dǎo)致重復(fù)的授權(quán);因此,運里,在接收到表創(chuàng)建請求后,并不直接根據(jù)hive.security.authorization.createtable.owner.grant參數(shù)中設(shè)置的權(quán)限對創(chuàng)建表的用戶進(jìn)行授權(quán),而是首先進(jìn)行步驟102;[0073]步驟102:判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;所述全部表創(chuàng)建權(quán)限是指用戶創(chuàng)建表時會依照hive.security.authorization.createtable.owner.grant參數(shù)而被賦予的全部針對該被創(chuàng)建的表的權(quán)限,運里,需要判斷所述用戶已經(jīng)具有的針對所述數(shù)據(jù)庫的權(quán)限,是不是能夠覆蓋hive.security.authorization.createtable.owner.邑rant參數(shù)中設(shè)置的戶Zf有權(quán)限;[0074]通常,Hive的權(quán)限參見下表1:[00巧]表1Hive權(quán)限[0076][C[0078]步驟103:若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,說明所述用戶已經(jīng)具備了創(chuàng)建表的用戶所需要具備的權(quán)限,不需要執(zhí)行額外的授權(quán),則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán),并根據(jù)所述用戶的請求創(chuàng)建一個新的表;[0079]步驟104:若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表;即,在判斷所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限時,則將所述用戶已有的權(quán)限找出與hive.security.authorization.createtable.owner.邑rant參數(shù)中設(shè)置的戶Zf有權(quán)限進(jìn)行tk較,并得到用戶不具有的權(quán)限,然后將用戶不具有的權(quán)限(即所述用戶所欠缺的表創(chuàng)建權(quán)限)授權(quán)給所述用戶,一方面保證了用戶權(quán)限的完整,另一方面又防止了重復(fù)授權(quán)。[0080]從上述實施例可W看出,本發(fā)明實施例提供的權(quán)限控制方法,通過在創(chuàng)建表之前判斷用戶已經(jīng)具有的權(quán)限是否覆蓋了全部表創(chuàng)建權(quán)限,從而根據(jù)用戶權(quán)限的覆蓋程度對用戶進(jìn)行相應(yīng)的授權(quán),而不是如現(xiàn)有技術(shù)中那樣直接對創(chuàng)建表的用戶賦予全部的表權(quán)限,從而能夠避免對用戶進(jìn)行重復(fù)授權(quán)的問題,減小了元數(shù)據(jù)表的壓力并減少了返回的數(shù)據(jù)結(jié)果,節(jié)約了系統(tǒng)資源。[0081]hive中的權(quán)限控制分為用戶(user)、角色(role)、組(group)。管理員可W對用戶、組授予/解除權(quán)限,也可W對角色進(jìn)行授予/解除權(quán)限。管理員用戶也可W把角色授權(quán)給用戶或者組,運樣用戶或者組就可W擁有該角色所擁有的權(quán)限了??蒞將數(shù)據(jù)庫的權(quán)限、表的權(quán)限、分區(qū)的權(quán)限分別授予用戶、角色、組運S個不同的對象。[0082]因此,進(jìn)一步的,在一些可選實施方式中,所述判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限的步驟102還可具體包括W下步驟:[0083]步驟201:查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶具有的權(quán)限;[0084]步驟202:判斷所述用戶具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0085]步驟203:如果用戶具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0086]步驟204:如果用戶具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所在組(GROUP)具有的權(quán)限;[0087]步驟205:判斷所述用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0088]步驟206:如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0089]步驟207:如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所擁有的角色(ROLE)具有的權(quán)限;[0090]步驟208:判斷所述用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0091]步驟209:如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0092]步驟210:如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán);[0093]可選的,在進(jìn)行每一步查詢時,可W將查詢得到的權(quán)限進(jìn)行匯總,得到用戶針對表的最大權(quán)限集合;在執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán)的步驟時,可W先比較所述最大權(quán)限集合和所述全部表創(chuàng)建權(quán)限之間的差別,從而提取出未被覆蓋到的表創(chuàng)建權(quán)限,用于給用戶進(jìn)行授權(quán)。[0094]通過上述實施例,將用戶、用戶所在組和用戶所擁有的角色的權(quán)限均進(jìn)行查詢,從而完整的查詢了所述用戶所具備的權(quán)限,最大程度地減少了重復(fù)授權(quán)的幾率。[00M]hive使用化化Nucleus(-種框架名稱,中文直譯可譯為數(shù)據(jù)核)作為持久化方案。Mve啟用權(quán)限認(rèn)證的情況下,在同一臺機(jī)器上同時運行多個Mvecli實例的時候,會有一定的幾率返回空值,會導(dǎo)致授權(quán)結(jié)果查詢錯誤。DataNucleusAccessPlatform(數(shù)據(jù)核訪問平臺)是一個兼容各種標(biāo)準(zhǔn)的化va數(shù)據(jù)持久化框架,兼容JDOl、JD02、JD02.1、JD02.2、JD02.3、肝Al、肝A2等化va標(biāo)準(zhǔn)。[0096]因此,較佳的,在一些可選實施方式中,參照附圖3,所述判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限的步驟102還可具體包括W下步驟:[0097]步驟301:發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求;[0098]步驟302:判斷查詢結(jié)果是否為空;[0099]步驟303:若查詢結(jié)果為空,說明出現(xiàn)了權(quán)限查詢錯誤,則重復(fù)發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求。[0100]通過上述實施例,增加查詢重試機(jī)制,當(dāng)獲取權(quán)限查詢結(jié)果為空的時候,進(jìn)行重試,直到獲取到權(quán)限數(shù)據(jù)或者達(dá)到預(yù)設(shè)重試次數(shù)后獲取的查詢結(jié)果均為空值時為止,從而減小了因查詢結(jié)果為空而對授權(quán)過程產(chǎn)生的影響。[0101]具體的,在一些可選實施方式中,上述實施例可W采用W下方法進(jìn)行實現(xiàn):[0102]修改MVeme化store(元數(shù)據(jù)存取)相關(guān)的代碼,對于化taNucleus的持久化類中的與權(quán)限操作相關(guān)的類,其對應(yīng)于元數(shù)據(jù)中的權(quán)限控制的表;hivemetastore是Mve工程中的一個子項目,通常譯為Mve元數(shù)據(jù)存取,運個模塊的主要作用是用來與存儲元數(shù)據(jù)信息的庫(支持mysqUoracle等關(guān)系型數(shù)據(jù)庫)進(jìn)行交互,運個模塊存儲Mve的元數(shù)據(jù)信息,包括表信息、分區(qū)信息、權(quán)限信息等等;[0103]每次查詢(如ery)操作,都會通過化化Nucleus查詢權(quán)限控制的表;[0104]對于返回的查詢結(jié)果,進(jìn)行一個權(quán)限對象的檢查;[0105]如果發(fā)現(xiàn)為空,就需要進(jìn)行重試。[0106]可選的,在一些實施方式中,所述重復(fù)發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求的步驟中的重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù);所述預(yù)設(shè)重試次數(shù)的選取標(biāo)準(zhǔn)為,當(dāng)達(dá)到所述預(yù)設(shè)重試次數(shù)時,基本上沒有出現(xiàn)查詢失敗的結(jié)果,因此,根據(jù)不同的實際情況,所述預(yù)設(shè)重試次數(shù)可W選擇不同的值;可選的,所述預(yù)設(shè)重試次數(shù)為3次,在壓力測試下的結(jié)果,10000次并發(fā)過程中,并沒有再次出現(xiàn)查詢結(jié)果錯誤的情況;[0107]運里,壓力測試指的是,在高并發(fā)等極端情況下進(jìn)行測試,看系統(tǒng)是否能夠正確執(zhí)行相應(yīng)的任務(wù),運里指的是,在單位時間內(nèi)有大量的請求同時查詢表的權(quán)限的情況下,即高并發(fā)情況下,都能返回正確的結(jié)果;[0108]參照附圖3,所述判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限的步驟303之后還可進(jìn)一步包括W下步驟:[0109]步驟304:判斷因查詢結(jié)果為空而重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)是否大于或等于預(yù)設(shè)重試次數(shù);[0110]步驟305:若重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù),所述查詢結(jié)果仍然為空,則不再重試,并返回查詢失敗的結(jié)果。[0111]根據(jù)上述實施例,能夠很好的減小因查詢結(jié)果為空而對授權(quán)過程產(chǎn)生的影響。[0112]在hive中,任何用戶都可W對數(shù)據(jù)庫、表進(jìn)行授權(quán),而不區(qū)分用戶具有的是完全管理權(quán)限的超級管理員賬號還是普通賬號,運種情況在生產(chǎn)環(huán)境中將會非常危險。[0113]因此,較佳的,在一些可選實施方式中,所述接收針對數(shù)據(jù)庫的表創(chuàng)建請求的步驟101之前還可進(jìn)一步包括W下步驟:[0114]步驟401:創(chuàng)建超級管理員賬號白名單;[0115]可選的,通過在Mve的配置文件中,新建一個參數(shù)選項,用于創(chuàng)建超級管理員賬號白名單,其中value的值設(shè)置為超級管理員的用戶列表,W逗號進(jìn)行分隔;其中,能夠作為超級管理員的用戶,可W根據(jù)實際需要進(jìn)行設(shè)定,并可隨時進(jìn)行調(diào)整;[0116]步驟402:在對所述用戶執(zhí)行授權(quán)或解除權(quán)限之前,判斷所述用戶是否存在于所述超級管理員賬號白名單中;[0117]可選的,在Mve啟動過程中,運些上述配置文件中的配置會加載到化veConf對象中,Mve每次執(zhí)行語句,會在hive語法樹中進(jìn)行一個語義分析;在語義分析結(jié)束之后,開始真正執(zhí)行語句之前,執(zhí)行一個hook化ive.semantic.analyzer.hook)對某些特定的操作進(jìn)行處理,其中,在判定需要執(zhí)行權(quán)限相關(guān)的操作的時候,從當(dāng)前session中存儲的數(shù)據(jù)中獲取用戶名,并且跟白名單中設(shè)置的超級管理員進(jìn)行比較,從而判斷所述用戶是否存在于所述超級管理員賬號白名單中;[0118]步驟403:若所述用戶存在于所述超級管理員賬號白名單中,則對所述用戶執(zhí)行授權(quán)或解除權(quán)限;[0119]步驟404:若所述用戶不存在于所述超級管理員賬號白名單中,則不對所述用戶執(zhí)行授權(quán)或解除權(quán)限。[0120]通過上述實施例,設(shè)置超級管理員賬號白名單,并在用戶執(zhí)行授權(quán)或解除權(quán)限之前判斷該用戶是否存在于所述超級管理員賬號白名單,用W判斷該用戶是否能夠執(zhí)行授權(quán)或解除權(quán)限的操作,從而能夠保證系統(tǒng)的安全性。[0121]本發(fā)明實施例的第二個方面,提出了一種能夠避免重復(fù)授權(quán)的權(quán)限控制方法的另一個實施例。如圖2所示,為本發(fā)明提供的權(quán)限控制方法的另一個實施例的流程示意圖。[0122]所述權(quán)限控制方法,包括W下步驟:[0123]步驟501:創(chuàng)建超級管理員賬號白名單;[0124]步驟502:在對所述用戶執(zhí)行授權(quán)或解除權(quán)限之前,判斷所述用戶是否存在于所述超級管理員賬號白名單中;[0125]步驟503:若所述用戶存在于所述超級管理員賬號白名單中,則對所述用戶執(zhí)行授權(quán)或解除權(quán)限;[0126]步驟504:若所述用戶不存在于所述超級管理員賬號白名單中,則不對所述用戶執(zhí)行授權(quán)或解除權(quán)限;[0127]步驟505:接收針對數(shù)據(jù)庫的表創(chuàng)建請求;[0128]步驟506:查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶具有的權(quán)限;[0129]步驟507:判斷所述用戶具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0130]步驟508:如果用戶具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表;[0131]步驟509:如果用戶具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所在組具有的權(quán)限;[0132]步驟510:判斷所述用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0133]步驟511:如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表;[0134]步驟512:如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所擁有的角色具有的權(quán)限;[0135]步驟513:判斷所述用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0136]步驟514:如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表;[0137]步驟515:如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表。[0138]從上述實施例可W看出,本發(fā)明實施例提供的權(quán)限控制方法,預(yù)先設(shè)置超級管理員賬號白名單,在用戶需要進(jìn)行權(quán)限操作前,先判斷其是否存在于所述超級管理員賬號白名單中,只有存在其中的用戶才能進(jìn)一步進(jìn)行權(quán)限操作,從而保證了系統(tǒng)的安全性;在判斷用戶具有權(quán)限后,通過在用戶創(chuàng)建表之前判斷用戶已經(jīng)具有的權(quán)限是否覆蓋了全部表創(chuàng)建權(quán)限,從而根據(jù)用戶權(quán)限的覆蓋程度對用戶進(jìn)行相應(yīng)的授權(quán),而不是如現(xiàn)有技術(shù)中那樣直接對創(chuàng)建表的用戶賦予全部的表權(quán)限,從而能夠避免對用戶進(jìn)行重復(fù)授權(quán)的問題,減小了元數(shù)據(jù)表的壓力并減少了返回的數(shù)據(jù)結(jié)果,節(jié)約了系統(tǒng)資源。[0139]本發(fā)明實施例的第=個方面,提出了一種能夠避免重復(fù)授權(quán)的權(quán)限控制裝置的實施例。如圖6所示,為本發(fā)明提供的權(quán)限控制裝置的一個實施例的模塊結(jié)構(gòu)示意圖。[0140]所述權(quán)限控制裝置,包括:[0141]請求接收模塊601,用于接收針對數(shù)據(jù)庫的表創(chuàng)建請求;[0142]所述針對數(shù)據(jù)庫的表創(chuàng)建請求是指,需要在所述數(shù)據(jù)庫中創(chuàng)建一個新的表(TABLE)的請求,在接收到所述表創(chuàng)建請求,通常情況下,hive會自動根據(jù)hive.security.authorization.createtable.owner.grant參數(shù)中設(shè)置的權(quán)限對創(chuàng)建表的用戶進(jìn)行針對其創(chuàng)建的表的授權(quán)(即該用戶對自己創(chuàng)建的表具有哪些權(quán)限),如果請求在所述數(shù)據(jù)庫中創(chuàng)建表的用戶已經(jīng)具有了針對所述數(shù)據(jù)庫的跟表有關(guān)的權(quán)限,就有極大可能會導(dǎo)致重復(fù)的授權(quán);因此,運里,在接收到表創(chuàng)建請求后,并不直接根據(jù)hive.security.authorization.createtable.owner.grant參數(shù)中設(shè)置的權(quán)限對創(chuàng)建表的用戶進(jìn)行授權(quán),而是首先通過權(quán)限覆蓋判斷模塊302進(jìn)行權(quán)限判斷;[0143]權(quán)限覆蓋判斷模塊602,用于判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;所述全部表創(chuàng)建權(quán)限是指用戶創(chuàng)建表時會依照hive.security.authorization.create1:able.owner.grant參數(shù)而被賦予的全部針對該被創(chuàng)建的表的權(quán)限,運里,需要判斷所述用戶已經(jīng)具有的針對所述數(shù)據(jù)庫的權(quán)限,是不是能旬多覆蓋hive.security.曰Uthoriz曰tion.ere曰tet曰ble.owner.邑r曰nt參數(shù)中設(shè)置的戶Zf有權(quán)限;通常,Hive的權(quán)限可參見表1;[0144]表授權(quán)模塊603,若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,說明所述用戶已經(jīng)具備了創(chuàng)建表的用戶所需要具備的權(quán)限,不需要執(zhí)行額外的授權(quán),則用于不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則用于執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán);即,在判斷所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限時,則將所述用戶已有的權(quán)限找出與hive.Se州rity.authorization.create1:able.owner.grant參數(shù)中設(shè)置的所有權(quán)限進(jìn)行比較,并得到用戶不具有的權(quán)限,然后將用戶不具有的權(quán)限(即所述用戶所欠缺的表創(chuàng)建權(quán)限)授權(quán)給所述用戶,一方面保證了用戶權(quán)限的完整,另一方面又防止了重復(fù)授權(quán);[0145]表創(chuàng)建模塊604,用于根據(jù)所述用戶的請求創(chuàng)建一個新的表(TABLE)。[0146]從上述實施例可W看出,本發(fā)明實施例提供的權(quán)限控制裝置,通過在創(chuàng)建表之前判斷用戶已經(jīng)具有的權(quán)限是否覆蓋了全部表創(chuàng)建權(quán)限,從而根據(jù)用戶權(quán)限的覆蓋程度對用戶進(jìn)行相應(yīng)的授權(quán),而不是如現(xiàn)有技術(shù)中那樣直接對創(chuàng)建表的用戶賦予全部的表權(quán)限,從而能夠避免對用戶進(jìn)行重復(fù)授權(quán)的問題,減小了元數(shù)據(jù)表的壓力并減少了返回的數(shù)據(jù)結(jié)果,節(jié)約了系統(tǒng)資源。[0147]hive中的權(quán)限控制分為用戶(user)、角色(role)、組(group)。管理員可W對用戶、組授予/解除權(quán)限,也可W對角色進(jìn)行授予/解除權(quán)限。管理員用戶也可W把角色授權(quán)給用戶或者組,運樣用戶或者組就可W擁有該角色所擁有的權(quán)限了??蒞將數(shù)據(jù)庫的權(quán)限、表的權(quán)限、分區(qū)的權(quán)限分別授予用戶、角色、組運S個不同的對象。[0148]因此,進(jìn)一步的,在一些可選實施方式中,所述權(quán)限覆蓋判斷模塊302,可具體用于:[0149]查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶具有的權(quán)限;[0150]判斷所述用戶具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0151]如果用戶具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0152]如果用戶具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所在組(GROUP)具有的權(quán)限;[0153]判斷所述用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0154]如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0155]如果用戶具有的權(quán)限W及所述用戶所在組具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所擁有的角色具有的權(quán)限;[0156]判斷所述用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色(ROLE)具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;[0157]如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);[0158]如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限W及所述用戶所擁有的角色具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán);[0159]可選的,在進(jìn)行每一步查詢時,可W將查詢得到的權(quán)限進(jìn)行匯總,得到用戶針對表的最大權(quán)限集合;在執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán)的步驟時,可W先比較所述最大權(quán)限集合和所述全部表創(chuàng)建權(quán)限之間的差別,從而提取出未被覆蓋到的表創(chuàng)建權(quán)限,用于給用戶進(jìn)行授權(quán)。[0160]通過上述實施例,將用戶、用戶所在組和用戶所擁有的角色的權(quán)限均進(jìn)行查詢,從而完整的查詢了所述用戶所具備的權(quán)限,最大程度地減少了重復(fù)授權(quán)的幾率。[0161]hive使用化化Nucleus(-種框架名稱,中文直譯可譯為數(shù)據(jù)核)作為持久化方案。Mve啟用權(quán)限認(rèn)證的情況下,在同一臺機(jī)器上同時運行多個Mvecli實例的時候,會有一定的幾率返回空值,會導(dǎo)致授權(quán)結(jié)果查詢錯誤。DataNucleusAccessPlatform(數(shù)據(jù)核訪問平臺)是一個兼容各種標(biāo)準(zhǔn)的化va數(shù)據(jù)持久化框架,兼容JDOl、JD02、JD02.1、JD02.2、JD02.3、肝Al、肝A2等化va標(biāo)準(zhǔn)。[0162]因此,較佳的,在一些可選實施方式中,所述權(quán)限覆蓋判斷模塊302,還可具體用于:[0163]發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求;[0164]判斷查詢結(jié)果是否為空;[0165]若查詢結(jié)果為空,說明出現(xiàn)了權(quán)限查詢錯誤,則重復(fù)查詢所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限。[0166]通過上述實施例,增加查詢重試機(jī)制,當(dāng)獲取權(quán)限查詢結(jié)果為空的時候,進(jìn)行重試,直到獲取到權(quán)限數(shù)據(jù)或者達(dá)到預(yù)設(shè)重試次數(shù)后獲取的查詢結(jié)果均為空值時為止,從而減小了因查詢結(jié)果為空而對授權(quán)過程產(chǎn)生的影響。[0167]具體的,在一些可選實施方式中,上述實施例可W采用W下方法進(jìn)行實現(xiàn):[0168]修改Mveme化store(元數(shù)據(jù)存取)相關(guān)的代碼,對于化taNucleus的持久化類的權(quán)限操作相關(guān)的類,對應(yīng)元數(shù)據(jù)中的權(quán)限控制的表;hivemetastore是hive工程中的一個子項目,通常譯為hive元數(shù)據(jù)存取,運個模塊的主要作用是用來與存儲元數(shù)據(jù)信息的庫(支持mysqKoracle等關(guān)系型數(shù)據(jù)庫)進(jìn)行交互,運個模塊存儲Mve的元數(shù)據(jù)信息,包括表信息、分區(qū)信息、權(quán)限信息等等;[0169]每次查詢(如ery)操作,都會通過化化Nucleus查詢權(quán)限控制的表;[0170]對于返回的查詢結(jié)果,進(jìn)行一個權(quán)限對象的檢查;[0171]如果發(fā)現(xiàn)為空,就需要進(jìn)行重試。[0172]可選的,在一些實施方式中,上述實施例中重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù);所述權(quán)限覆蓋判斷模塊302,具體用于:[0173]若重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù)之后,所述查詢結(jié)果仍然為空,則不再重試,并返回查詢失敗的結(jié)果。所述預(yù)設(shè)重試次數(shù)的選取標(biāo)準(zhǔn)為,當(dāng)達(dá)到所述預(yù)設(shè)重試次數(shù)時,基本上沒有出現(xiàn)查詢失敗的結(jié)果,因此,根據(jù)不同的實際情況,所述預(yù)設(shè)重試次數(shù)可W選擇不同的值;可選的,所述預(yù)設(shè)重試次數(shù)為3次,在壓力測試下的結(jié)果,10000次并發(fā)過程中,并沒有再次出現(xiàn)查詢結(jié)果錯誤的情況;運里,壓力測試指的是,在高并發(fā)等極端情況下進(jìn)行測試,看系統(tǒng)是否能夠正確執(zhí)行相應(yīng)的任務(wù),運里指的是,在單位時間內(nèi)有大量的請求同時查詢表的權(quán)限的情況下,即高并發(fā)情況下,都能返回正確的結(jié)果。根據(jù)上述實施例,能夠很好的減小因查詢結(jié)果為空而對授權(quán)過程產(chǎn)生的影響。[0174]在hive中,任何用戶都可W對數(shù)據(jù)庫、表進(jìn)行授權(quán),而不區(qū)分用戶具有的是完全管理權(quán)限的超級管理員賬號還是普通賬號,運種情況在生產(chǎn)環(huán)境中將會非常危險。[0175]因此,較佳的,在一些可選實施方式中,參照附圖7,所述權(quán)限控制裝置還可包括:[0176]白名單創(chuàng)建模塊701,用于創(chuàng)建超級管理員賬號白名單;[0177]可選的,通過在Mve的配置文件中,新建一個參數(shù)選項,用于創(chuàng)建超級管理員賬號白名單,其中value的值設(shè)置為超級管理員的用戶列表,W逗號進(jìn)行分隔;其中,能夠作為超級管理員的用戶,可W根據(jù)實際需要進(jìn)行設(shè)定,并可隨時進(jìn)行調(diào)整;[0178]用戶權(quán)限判斷模塊702,在對所述用戶執(zhí)行授權(quán)或解除權(quán)限之前,用于判斷所述用戶是否存在于所述超級管理員賬號白名單中;[0179]可選的,在Mve啟動過程中,運些上述配置文件中的配置會加載到化veConf對象中,Mve每次執(zhí)行語句,會在hive語法樹中進(jìn)行一個語義分析;在語義分析結(jié)束之后,開始真正執(zhí)行語句之前,執(zhí)行一個hook化ive.semantic.analyzer.hook)對某些特定的操作進(jìn)行處理,其中,在判定需要執(zhí)行權(quán)限相關(guān)的操作的時候,從當(dāng)前session中存儲的數(shù)據(jù)中獲取用戶名,并且跟白名單中設(shè)置的超級管理員進(jìn)行比較,從而判斷所述用戶是否存在于所述超級管理員賬號白名單中;[0180]用戶授權(quán)模塊703,若所述用戶存在于所述超級管理員賬號白名單中,則用于對所述用戶執(zhí)行授權(quán)或解除權(quán)限;若所述用戶不存在于所述超級管理員賬號白名單中,則用于不對所述用戶執(zhí)行授權(quán)或解除權(quán)限。[0181]通過上述實施例,設(shè)置超級管理員賬號白名單,并在用戶執(zhí)行授權(quán)或解除權(quán)限之前判斷該用戶是否存在于所述超級管理員賬號白名單,用W判斷該用戶是否能夠執(zhí)行授權(quán)或解除權(quán)限的操作,從而能夠保證系統(tǒng)的安全性。[0182]所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:W上任何實施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權(quán)利要求)被限于運些例子;在本發(fā)明的思路下,W上實施例或者不同實施例中的技術(shù)特征之間也可W進(jìn)行組合,步驟可WW任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡明它們沒有在細(xì)節(jié)中提供。[0183]另外,為簡化說明和討論,并且為了不會使本發(fā)明難W理解,在所提供的附圖中可W示出或可W不示出與集成電路(IC)忍片和其它部件的公知的電源/接地連接。此外,可WW框圖的形式示出裝置,W便避免使本發(fā)明難W理解,并且運也考慮了W下事實,即關(guān)于運些框圖裝置的實施方式的細(xì)節(jié)是高度取決于將要實施本發(fā)明的平臺的(即,運些細(xì)節(jié)應(yīng)當(dāng)完全處于本領(lǐng)域技術(shù)人員的理解范圍內(nèi))。在闡述了具體細(xì)節(jié)(例如,電路)W描述本發(fā)明的示例性實施例的情況下,對本領(lǐng)域技術(shù)人員來說顯而易見的是,可W在沒有運些具體細(xì)節(jié)的情況下或者運些具體細(xì)節(jié)有變化的情況下實施本發(fā)明。因此,運些描述應(yīng)被認(rèn)為是說明性的而不是限制性的。[0184]盡管已經(jīng)結(jié)合了本發(fā)明的具體實施例對本發(fā)明進(jìn)行了描述,但是根據(jù)前面的描述,運些實施例的很多替換、修改和變型對本領(lǐng)域普通技術(shù)人員來說將是顯而易見的。例如,其它存儲器架構(gòu)(例如,動態(tài)RAM(DRAM))可W使用所討論的實施例。[0185]本發(fā)明的實施例旨在涵蓋落入所附權(quán)利要求的寬泛范圍之內(nèi)的所有運樣的替換、修改和變型。因此,凡在本發(fā)明的精神和原則之內(nèi),所做的任何省略、修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)?!局鳈?quán)項】1.一種權(quán)限控制方法,其特征在于,包括:接收針對數(shù)據(jù)庫的表創(chuàng)建請求;判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表;若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán),并創(chuàng)建表。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限的步驟包括:查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶具有的權(quán)限;判斷所述用戶具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;如果用戶具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);如果用戶具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所在組具有的權(quán)限;判斷所述用戶具有的權(quán)限以及所述用戶所在組具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;如果用戶具有的權(quán)限以及所述用戶所在組具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);如果用戶具有的權(quán)限以及所述用戶所在組具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所擁有的角色具有的權(quán)限;判斷所述用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限以及所述用戶所擁有的角色具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限以及所述用戶所擁有的角色具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限以及所述用戶所擁有的角色具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán)。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限的步驟包括:發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求;判斷查詢結(jié)果是否為空;若查詢結(jié)果為空,則重復(fù)發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述重復(fù)發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求的步驟中的重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù);若重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù)之后,所述查詢結(jié)果仍然為空,則不再重試,并返回查詢失敗的結(jié)果。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收針對數(shù)據(jù)庫的表創(chuàng)建請求的步驟之前還包括:創(chuàng)建超級管理員賬號白名單;在對所述用戶執(zhí)行授權(quán)或解除權(quán)限之前,判斷所述用戶是否存在于所述超級管理員賬號白名單中;若所述用戶存在于所述超級管理員賬號白名單中,則對所述用戶執(zhí)行授權(quán)或解除權(quán)限;若所述用戶不存在于所述超級管理員賬號白名單中,則不對所述用戶執(zhí)行授權(quán)或解除權(quán)限。6.-種權(quán)限控制裝置,其特征在于,包括:請求接收模塊,用于接收針對數(shù)據(jù)庫的表創(chuàng)建請求;權(quán)限覆蓋判斷模塊,用于判斷發(fā)出所述表創(chuàng)建請求的用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;表授權(quán)模塊,若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則用于不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);若所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則用于執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán);表創(chuàng)建模塊,用于創(chuàng)建表。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述權(quán)限覆蓋判斷模塊,具體用于:查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶具有的權(quán)限;判斷所述用戶具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;如果用戶具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);如果用戶具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所在組具有的權(quán)限;判斷所述用戶具有的權(quán)限以及所述用戶所在組具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;如果用戶具有的權(quán)限以及所述用戶所在組具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);如果用戶具有的權(quán)限以及所述用戶所在組具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則查詢所述數(shù)據(jù)庫的表權(quán)限數(shù)據(jù)表中存在的所述用戶所擁有的角色具有的權(quán)限;判斷所述用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限以及所述用戶所擁有的角色具有的權(quán)限是否能夠覆蓋全部表創(chuàng)建權(quán)限;如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限以及所述用戶所擁有的角色具有的權(quán)限能夠覆蓋全部表創(chuàng)建權(quán)限,則不再針對所述用戶執(zhí)行表創(chuàng)建權(quán)限的授權(quán);如果用戶具有的權(quán)限、所述用戶所在組具有的權(quán)限以及所述用戶所擁有的角色具有的權(quán)限不能覆蓋全部表創(chuàng)建權(quán)限,則執(zhí)行所述用戶所欠缺的表創(chuàng)建權(quán)限的授權(quán)。8.根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,所述權(quán)限覆蓋判斷模塊,具體用于:查詢所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限;判斷查詢結(jié)果是否為空;若查詢結(jié)果為空,則重復(fù)發(fā)出所述用戶所具有的針對所述數(shù)據(jù)庫的權(quán)限查詢請求。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù);所述權(quán)限覆蓋判斷模塊,具體用于:若重復(fù)發(fā)出權(quán)限查詢請求的次數(shù)大于或等于預(yù)設(shè)重試次數(shù)之后,所述查詢結(jié)果仍然為空,則不再重試,并返回查詢失敗的結(jié)果。10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括:白名單創(chuàng)建模塊,用于創(chuàng)建超級管理員賬號白名單;用戶權(quán)限判斷模塊,在對所述用戶執(zhí)行授權(quán)或解除權(quán)限之前,用于判斷所述用戶是否存在于所述超級管理員賬號白名單中;用戶授權(quán)模塊,若所述用戶存在于所述超級管理員賬號白名單中,則用于對所述用戶執(zhí)行授權(quán)或解除權(quán)限;若所述用戶不存在于所述超級管理員賬號白名單中,則用于不對所述用戶執(zhí)行授權(quán)或解除權(quán)限?!疚臋n編號】G06F21/62GK105956154SQ201610321690【公開日】2016年9月21日【申請日】2016年5月16日【發(fā)明人】劉光華【申請人】樂視控股(北京)有限公司,樂視網(wǎng)信息技術(shù)(北京)股份有限公司