亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種數(shù)據(jù)庫權(quán)限實現(xiàn)方法和系統(tǒng)與流程

文檔序號:11216792閱讀:625來源:國知局
本發(fā)明涉及數(shù)據(jù)庫訪問
技術(shù)領(lǐng)域
:,尤其涉及一種數(shù)據(jù)庫權(quán)限實現(xiàn)方法和系統(tǒng)。
背景技術(shù)
::現(xiàn)有數(shù)據(jù)庫的訪問授權(quán)要么是在數(shù)據(jù)庫的實現(xiàn)層面上來做,提供相關(guān)的結(jié)構(gòu)化查詢語言sql語句或者管理套件來進行授權(quán)操作。要么是通過添加贅余的數(shù)據(jù)列來標示數(shù)據(jù)的權(quán)限,然后在應用層通過判斷這些權(quán)限數(shù)據(jù)來實現(xiàn)對數(shù)據(jù)的授權(quán)訪問。上述方法最大的問題在于無法實現(xiàn)在所有不同類型的數(shù)據(jù)庫上統(tǒng)一授權(quán),并且需要存儲大量的贅余權(quán)限數(shù)據(jù)來描述數(shù)據(jù)權(quán)限。技術(shù)實現(xiàn)要素:為了解決上述問題,本發(fā)明提出了一種數(shù)據(jù)庫權(quán)限實現(xiàn)方法和系統(tǒng),能夠在sql以及元數(shù)據(jù)層面上實現(xiàn)跨數(shù)據(jù)庫的統(tǒng)一授權(quán)。為了達到上述目的,本發(fā)明提出了一種數(shù)據(jù)庫權(quán)限實現(xiàn)方法,該方法包括:對輸入的結(jié)構(gòu)化查詢語言sql查詢語句進行解析,生成語法樹。通過語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息。對查詢信息的可操作權(quán)限進行驗證,根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作。優(yōu)選地,預設的描述形式包括:五元組形式;五元組包括數(shù)據(jù)庫鏈接信息server、數(shù)據(jù)庫名稱database、表名稱table、列名稱column和權(quán)限類型privilege。其中,privilege包括:讀取select、插入insert、修改alter、刪除drop和全部all。all包括:select、insert、alter和drop。優(yōu)選地,通過語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息包括:根據(jù)語法樹的元數(shù)據(jù)獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一server。從一個或多個第一server中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)庫。從一個或多個第一數(shù)據(jù)庫中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)表。從一個或多個第一數(shù)據(jù)表中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)列。將第一server、第一數(shù)據(jù)庫、第一數(shù)據(jù)表、第一數(shù)據(jù)列和想要執(zhí)行的privilege以五元組的形式形成查詢信息。優(yōu)選地,對查詢信息的可操作權(quán)限進行驗證包括:將五元組形式的查詢信息中所包含的第一privilege項與預存的五元組形勢的權(quán)限信息中所包含的第二privilege項相比較;并且,對于第一privilege項所包含的一個或多個操作分別判斷是否與第二privilege項中包含的一個或多個可執(zhí)行操作中的至少一個可執(zhí)行操作相同;其中,第一privilege項和第二privilege項分別至少包括以下一種:select、insert、alter、drop和all。根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作包括:當?shù)诙rivilege項為all時,執(zhí)行第一privilege項所包含的一個或多個操作。當?shù)诙rivilege項不為all,并且所述第一privilege項所包含的一個操作與第二privilege項中的一個可執(zhí)行操作相同時,執(zhí)行該可執(zhí)行操作。當?shù)诙rivilege項不為all,并且當?shù)谝籶rivilege項所包含的多個操作與第二privilege項中的多個可執(zhí)行操作分別對應相同時,分別執(zhí)行該多個可執(zhí)行操作。優(yōu)選地,該方法還包括:對數(shù)據(jù)信息執(zhí)行可執(zhí)行操作以后,如果數(shù)據(jù)信息有變更,保存變更后的數(shù)據(jù)信息并更新相應的元數(shù)據(jù);并對更新后的元數(shù)據(jù)的可操作權(quán)限進行更新。其中,對更新后的元數(shù)據(jù)的可操作權(quán)限進行更新包括:對經(jīng)過insert和/或alter操作的元數(shù)據(jù)進行數(shù)據(jù)權(quán)限的變更或刪除,以及對經(jīng)過drop操作的元數(shù)據(jù)進行數(shù)據(jù)權(quán)限的刪除。為了達到上述目的,本發(fā)明還提出了一種數(shù)據(jù)庫權(quán)限實現(xiàn)系統(tǒng),該系統(tǒng)包括:結(jié)構(gòu)化查詢語言sql解析器、元數(shù)據(jù)過濾模塊和權(quán)限監(jiān)測模塊。sql解析器,用于對輸入的sql查詢語句進行解析,生成語法樹。元數(shù)據(jù)過濾模塊,用于通過語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息。權(quán)限監(jiān)測模塊,用于對查詢信息的可操作權(quán)限進行驗證,根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作。優(yōu)選地,預設的描述形式包括:五元組形式;五元組包括數(shù)據(jù)庫鏈接信息server、數(shù)據(jù)庫名稱database、表名稱table、列名稱column和權(quán)限類型privilege。其中,privilege包括:讀取select、插入insert、修改alter、刪除drop和全部all。all包括:select、insert、alter和drop。優(yōu)選地,元數(shù)據(jù)過濾模塊通過語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息包括:根據(jù)語法樹的元數(shù)據(jù)獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一server。從一個或多個第一server中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)庫。從一個或多個第一數(shù)據(jù)庫中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)表。從一個或多個第一數(shù)據(jù)表中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)列。將第一server、第一數(shù)據(jù)庫、第一數(shù)據(jù)表、第一數(shù)據(jù)列和想要執(zhí)行的privilege以五元組的形式形成查詢信息。優(yōu)選地,權(quán)限監(jiān)測模塊對查詢信息的可操作權(quán)限進行驗證包括:將五元組形式的查詢信息中所包含的第一privilege項與預存的五元組形勢的權(quán)限信息中所包含的第二privilege項相比較;并且,對于第一privilege項所包含的一個或多個操作分別判斷是否與第二privilege項中包含的一個或多個可執(zhí)行操作中的至少一個可執(zhí)行操作相同;其中,第一privilege項和第二privilege項分別至少包括以下一種:select、insert、alter、drop和all。權(quán)限監(jiān)測模塊根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作包括:當?shù)诙rivilege項為all時,執(zhí)行第一privilege項所包含的一個或多個操作。當?shù)诙rivilege項不為all,并且當?shù)谝籶rivilege項所包含的一個操作與第二privilege項中的一個可執(zhí)行操作相同時,執(zhí)行可執(zhí)行操作。當?shù)诙rivilege項不為all,并且當?shù)谝籶rivilege項所包含的多個操作與第二privilege項中的多個可執(zhí)行操作分別對應相同時,分別執(zhí)行多個可執(zhí)行操作。優(yōu)選地,該系統(tǒng)還包括元數(shù)據(jù)變更反饋模塊。元數(shù)據(jù)變更反饋模塊,用于對數(shù)據(jù)信息執(zhí)行可執(zhí)行操作以后,如果數(shù)據(jù) 信息有變更,保存變更后的數(shù)據(jù)信息并更新相應的元數(shù)據(jù);并對更新后的元數(shù)據(jù)的可操作權(quán)限進行更新。其中,元數(shù)據(jù)變更反饋模塊對更新后的元數(shù)據(jù)的可操作權(quán)限進行更新包括:對經(jīng)過insert和/或alter操作的元數(shù)據(jù)進行數(shù)據(jù)權(quán)限的變更或刪除,以及對經(jīng)過drop操作的元數(shù)據(jù)進行數(shù)據(jù)權(quán)限的刪除。與現(xiàn)有技術(shù)相比,本發(fā)明包括:對輸入的結(jié)構(gòu)化查詢語言sql查詢語句進行解析,生成語法樹。語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息。對查詢信息的可操作權(quán)限進行驗證,根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作。通過本發(fā)明的方案,能夠在結(jié)構(gòu)化查詢語言sql以及元數(shù)據(jù)層面上實現(xiàn)跨數(shù)據(jù)庫的統(tǒng)一授權(quán)。附圖說明下面對本發(fā)明實施例中的附圖進行說明,實施例中的附圖是用于對本發(fā)明的進一步理解,與說明書一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明保護范圍的限制。圖1為本發(fā)明的數(shù)據(jù)庫權(quán)限實現(xiàn)方法流程圖;圖2為本發(fā)明實施例的dml操作處理流程圖;圖3為本發(fā)明實施例的ddl操作處理流程圖;圖4為本發(fā)明實施例的權(quán)限數(shù)據(jù)庫更新操作處理流程圖;圖5為本發(fā)明實施例的授予或撤銷操作處理流程圖;圖6為本發(fā)明的數(shù)據(jù)庫權(quán)限實現(xiàn)系統(tǒng)組成框圖;圖7為本發(fā)明的數(shù)據(jù)庫權(quán)限實現(xiàn)系統(tǒng)組成結(jié)構(gòu)示意圖。具體實施方式為了便于本領(lǐng)域技術(shù)人員的理解,下面結(jié)合附圖對本發(fā)明作進一步的描述,并不能用來限制本發(fā)明的保護范圍。數(shù)據(jù)庫訪問的認證與授權(quán)在不同類型的數(shù)據(jù)庫上,實現(xiàn)方法以及支持粒度有所不同,有些不支持,有些僅支持到表粒度,很少支持到列粒度。并且很多類型的數(shù)據(jù)庫訪問控制或授權(quán)要么作為數(shù)據(jù)庫實現(xiàn)的一部分而存在的,要么作為該類型數(shù)據(jù)庫專有的工具套件而存在。而通用的bi(businessintelligence)軟件,越來越多地被要求提供安全的訪問控制,并且需要在接入的各類型數(shù)據(jù)庫上都能夠支持統(tǒng)一的細粒度授權(quán),例如:統(tǒng)一支持到列權(quán)限。bi軟件一般主要針對標準結(jié)構(gòu)化查詢語言sql,如sql92等支持較好,對于特定數(shù)據(jù)庫的特定操作并不是bi軟件關(guān)注的。因此本方法提出一種在sql以及元數(shù)據(jù)層面上實現(xiàn)的跨數(shù)據(jù)庫實現(xiàn)的統(tǒng)一授權(quán)的數(shù)據(jù)庫權(quán)限體系結(jié)構(gòu)。為了達到上述目的,本發(fā)明具體提出了一種數(shù)據(jù)庫權(quán)限實現(xiàn)方法,如圖1所示,該方法包括:s101、對輸入的sql查詢語句進行解析,生成語法樹。s102、通過語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息。該步驟具有重要的作用,其用來消除不同數(shù)據(jù)庫實現(xiàn)中對數(shù)據(jù)庫、表、列的實現(xiàn)差異。使得不同數(shù)據(jù)庫的元數(shù)據(jù)最終都能被歸結(jié)為:數(shù)據(jù)庫、表、列這三級數(shù)據(jù)組織模型。優(yōu)選地,預設的描述形式包括:五元組形式;該五元組包括數(shù)據(jù)庫鏈接信息server、數(shù)據(jù)庫名稱database、表名稱table、列名稱column和權(quán)限類型privilege。其中,privilege包括:讀取select、插入insert、修改alter、刪除drop和全部all。all包括:select、insert、alter和drop。另外,需要說明的是,上述的查詢信息也可以是二元組、三元組和四元 組的形式。查詢二元組包括數(shù)據(jù)庫鏈接信息server和權(quán)限類型privilege,即(server,privilege)。查詢?nèi)M包括數(shù)據(jù)庫鏈接信息server、數(shù)據(jù)庫名稱database和權(quán)限類型privilege,即(server,database,privilege)。查詢四元組包括數(shù)據(jù)庫鏈接信息server、數(shù)據(jù)庫名稱database、表名稱table和權(quán)限類型privilege,即(server,database,table,privilege)。下面仍然以五元組形式為例來進行說明。優(yōu)選地,通過語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息包括:s1021、根據(jù)語法樹的元數(shù)據(jù)獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一server。s1022、從一個或多個第一server中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)庫。s1023、從一個或多個第一數(shù)據(jù)庫中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)表。s1024、從一個或多個第一數(shù)據(jù)表中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)列。s1025、將第一server、第一數(shù)據(jù)庫、第一數(shù)據(jù)表、第一數(shù)據(jù)列和想要執(zhí)行的privilege以五元組的形式形成查詢信息。在本發(fā)明實施例中,這里仍以上述的舉例為例來進行說明。例如,使用jdbc鏈接服務器example.com的3306端口上mysql服務器,并且具有對mysql中default數(shù)據(jù)庫下的名叫test表的id列具有select權(quán)限。那么可以將以上查詢信息被描述為:serverdatabasetablecolumnprivilegeexample.com∶3306defaulttestidselect則根據(jù)該查詢信息的描述,我們會根據(jù)sql查詢語句的關(guān)鍵字獲取一個語法樹,從該語法樹上首先獲得一個或多個example.com∶3306鏈接分支,在該一個或多個鏈接分支的基礎上再分別獲得符合default數(shù)據(jù)庫名稱的一個或多個數(shù)據(jù)庫分支,在該一個或多個default數(shù)據(jù)庫分支的基礎上,獲得符合test表名稱的一個或多個數(shù)據(jù)表分支,在該一個或多個數(shù)據(jù)表分支的基礎上,獲得符合id列名稱的一個或多個數(shù)據(jù)列,最后需要對獲得的一個或多個數(shù)據(jù)列進一步驗證,看哪個或哪些數(shù)據(jù)列具有select權(quán)限,這將在接下來的步驟s103中進行驗證。s103、對查詢信息的可操作權(quán)限進行驗證,根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作。在本發(fā)明實施例中,本發(fā)明中的權(quán)限體系也可以被定義成上述的五元組形式,即,被定義為四個級別(level),分別為:數(shù)據(jù)庫鏈接(server),數(shù)據(jù)庫(database),表(table),列(column)。每一種數(shù)據(jù)庫權(quán)限級別,又具有三種權(quán)限類型:讀取(select),插入(insert)和全部(all)。三者之間具有如下關(guān)系:1)“select”和“insert”之間具有相互獨立的關(guān)系;2)“all”權(quán)限包含“select”以及“insert”權(quán)限,以及該兩項權(quán)限之外的權(quán)限,例如,對元數(shù)據(jù)的修改(alter)、刪除(drop)的權(quán)限。如果是對表有all權(quán)限,那么我們同時具有對表的刪除,以及表結(jié)構(gòu)修改權(quán)限。綜上所述,一條權(quán)限可以用如下的字段來描述:serverdatabasetablecolumnprivilege各字段的具體含義如下表所示:例如,使用jdbc鏈接服務器example.com的3306端口上mysql服務器,并且具有對mysql中default數(shù)據(jù)庫下的名叫test表的id列具有select權(quán)限。那么以上權(quán)限信息被描述為:serverdatabasetablecolumnprivilegeexample.com∶3306defaulttestidselect如上述定義,任意一條權(quán)限信息都可以被定義為一個五元組(server,database,table,column,privilege),五元組中的每一個字段分別代表著:數(shù)據(jù)庫鏈接的名稱,數(shù)據(jù)庫名稱,表名稱,列名稱以及權(quán)限的取值(“select”,“insert”,或“all”)。其中server,privilege字段不能為空,其余字段可以為空。優(yōu)選地,對查詢信息的可操作權(quán)限進行驗證包括:將五元組形式的查詢信息中所包含的第一privilege項與預存的五元組形勢的權(quán)限信息中所包含的第二privilege項相比較;并且,對于第一privilege項所包含的一個或多個操作分別判斷是否與第二privilege項中包含的一個或多個可執(zhí)行操作中的至少一個可執(zhí)行操作相同;其中,第一privilege項和第二privilege項分別至少包括以下一種:select、insert、alter、drop和all。根據(jù)驗證結(jié)果對數(shù)據(jù)信息執(zhí)行相關(guān)操作包括:當?shù)诙rivilege項為all時,執(zhí)行第一privilege項所包含的一個或多個操作。當?shù)诙rivilege項不為all,并且所述第一privilege項所包含的一個操作與第二privilege項中的一個可執(zhí)行操作相同時,執(zhí)行該可執(zhí)行操作。當?shù)诙rivilege項不為all,并且當?shù)谝籶rivilege項所包含的多個操作 與第二privilege項中的多個可執(zhí)行操作分別對應相同時,分別執(zhí)行該多個可執(zhí)行操作。以上內(nèi)容都是當查詢信息和預存的權(quán)限信息都是五元組形式時的方案。需要說明的是,與上述的查詢信息相同,這里的權(quán)限信息也不限于五元組形式,同樣可以是二元組、三元組和四元組的形式。權(quán)限二元組包括:(server,privilege)、(database,privilege)、(table,privilege)和(column,privilege)。權(quán)限三元組包括:(server,database,privilege)、(database,table,privilege)和(table,column,privilege)。權(quán)限四元組包括:(server,database,table,privilege)、(database,table,column,privilege)基于上述各種權(quán)限信息的形式和查詢信息的形式,對查詢信息的可操作權(quán)限進行驗證還包括:將獲得的查詢信息與預存的權(quán)限信息相比較,當元組形式的查詢信息中除privilege項以外的項等于或包含于元組形式的權(quán)限信息中除privilege項以外的項時,權(quán)限信息中的privilege對該查詢信息仍然具有限制作用,同樣需要根據(jù)以五元組為例時所說的查詢信息的可操作權(quán)限驗證方法進行驗證。例如,一個查詢信息是四元組(server,database,table,第一privilege),而預存的權(quán)限信息為三元組(server,database,第二privilege),則這里第二privilege對于第一privilege的限制有效,需要進一步將第一privilege和第二privilege比較,確定該第一privilege是否包含于第二privilege,或者該第一privilege是否與第二privilege相同;如果該第一privilege包含于第二privilege,或者該第一privilege與第二privilege相同,則可以執(zhí)行該第一privilege,否則不可以執(zhí)行。相反地,當元組形式的查詢信息中除privilege項以外的項包含元組形式的權(quán)限信息中除privilege項以外的項時,確定該查詢信息中的privilege不可執(zhí)行。例如,一個查詢信息是三元組(server,database,第一privilege),而預存的權(quán)限信息為四元組(server,database,table,第二privilege),這時,無論第二privilege是什么,第一privilege都不可執(zhí)行。這里需要說明的是,上述的元組形式包括:二元組、三元組、四元組和五元組。下面以不等式形式表達上述方案。假設有兩條權(quán)限pi、pj,它們的五元組表示如下:pi=(li1,li2,li3,li4,pi)pj=(lj1,lj2,lj3,lj4,pj)并且定義pi與pj取值相同或者pi的取值為“all”時pi≥pj。那么pi≥pj在以下條件下成立:li1…m=lj1…m≠null其中m∈{1,2,3,4},并且pi≥pj;如果一條sql查詢語句q所要求的權(quán)限為pi,那么該用戶至少需要擁有一條pi,使得pi≥pj;否則q將不被允許執(zhí)行。在本發(fā)明實施例中,下面將分別具體敘述四種sql操作在本發(fā)明中的處理流程:1)dml(datamanipulationlanguage數(shù)據(jù)操控語言)操作:包括select、insert等以數(shù)據(jù)庫內(nèi)數(shù)據(jù)對象為目標的操作,如圖2所述,具體處理流程如下:s201、輸入sql查詢語句。s202、根據(jù)該sql查詢語句的關(guān)鍵字生成語法樹。s203、判斷是不是dml查詢。s204、如果不是dml查詢,則進入相關(guān)查詢的操作流程。s205、如果是dml查詢,則遍歷語法樹,獲取要訪問的數(shù)據(jù)庫、數(shù)據(jù)表和數(shù)據(jù)列。s206、采用jdbc(javadatabaseconnectivityjava數(shù)據(jù)庫鏈接)驗證元數(shù)據(jù)的真實性。s207、驗證結(jié)果為虛假,判定sql語法檢查錯誤,退出流程。s208、驗證結(jié)果為真實,從權(quán)限數(shù)據(jù)庫中讀取預存的操作權(quán)限信息。s209、將申請的操作與預存的操作權(quán)限信息相比較進行權(quán)限驗證。s210、如果權(quán)限驗證失敗,判定權(quán)限不夠,退出流程。s211、如果權(quán)限驗證成功,判定權(quán)限通過,執(zhí)行所申請的操作。2)ddl(datadefinitionlanguage數(shù)據(jù)定義語言)讀操作:包括展示數(shù)據(jù)庫showdatabases、描述數(shù)據(jù)表describetable等展示數(shù)據(jù)庫元數(shù)據(jù)結(jié)構(gòu)的操作;針對ddl操作,除了正常執(zhí)行具有dml操作的權(quán)限檢查流程之外,如圖3所示,還需要經(jīng)過如下流程:s301、采用jdbc獲取元數(shù)據(jù)。s302、針對每一條元數(shù)據(jù),根據(jù)預存的操作權(quán)限信息檢查該元數(shù)據(jù)是否允許被查看。s303、該元數(shù)據(jù)不允許被查看,則該元數(shù)據(jù)不加入輸出列表。s304,該元數(shù)據(jù)允許被查看,則將該元數(shù)據(jù)加入輸出列表。s305、循環(huán)上述步驟s301至s304,直至每一條元數(shù)據(jù)檢查完畢,并輸出ddl查看結(jié)果。3)ddl寫操作,在經(jīng)過與dml操作相同的權(quán)限檢查后,如果符合權(quán)限,被允許執(zhí)行,則執(zhí)行相應的寫操作。這里需要說明的是,假如執(zhí)行寫操作成功了,則相應的數(shù)據(jù)信息或元數(shù)據(jù)就已經(jīng)改變了,則還需要對權(quán)限數(shù)據(jù)庫privilegestorage進行更新,這種更新主要針對altertable(修改表的定義)以及droptable(從數(shù)據(jù)庫中刪除表)的操作。這兩類操作都會使原先存儲在privilegestorage中原表的權(quán)限描述失效,如果不進行更新,會導致嚴重安全漏洞,例如,原先具有對表t的讀權(quán)限,當表t被刪除后,這條對表t的讀權(quán)限也需要刪除;否則新建的同名表t就在無顯示配置訪問權(quán)限的情況下被賦予了上一個同名表t的權(quán)限。因此,必須對權(quán)限數(shù)據(jù)庫進行及時更新。具體地,本發(fā)明方法還包括;對數(shù)據(jù)信息執(zhí)行可執(zhí)行操作以后,如果數(shù) 據(jù)信息有變更,保存變更后的數(shù)據(jù)信息并更新相應的元數(shù)據(jù);并對更新后的元數(shù)據(jù)的可操作權(quán)限進行更新。其中,對更新后的元數(shù)據(jù)的可操作權(quán)限進行更新包括:對經(jīng)過insert和/或alter操作的元數(shù)據(jù)進行數(shù)據(jù)權(quán)限的變更或刪除,以及對經(jīng)過drop操作的元數(shù)據(jù)進行數(shù)據(jù)權(quán)限的刪除。如圖4所示,需要經(jīng)過如下流程完成更新:s401、從權(quán)限數(shù)據(jù)庫中讀取進行更改以前的數(shù)據(jù)信息或元數(shù)據(jù)的相關(guān)權(quán)限信息。s402、針對每一條權(quán)限信息針對預定的權(quán)限規(guī)則判斷該權(quán)限信息是否需要刪除或修改。這里提到的“針對每一條權(quán)限規(guī)則判斷是否需要刪除”指的是如果規(guī)則中涉及到的table的元數(shù)據(jù)被修改了,那么這條權(quán)限信息就需要被刪除。s403、需要刪除該權(quán)限信息,則從權(quán)限數(shù)據(jù)庫中刪除該條權(quán)限信息。s404、需要修改該權(quán)限信息,則根據(jù)更改后的數(shù)據(jù)信息對其權(quán)限信息進行修改。4)權(quán)限授予或撤銷操作,其流程較為簡單:第一步通過語法解析判斷是否為權(quán)限授予或刪除操作,并翻譯為對權(quán)限數(shù)據(jù)的讀寫操作;第二步,通過權(quán)限讀取或?qū)懭敕諄硗瓿蓹?quán)限的授予或刪除。如圖5所示,總的流程如下所示:s501、輸入sql查詢語句。s502、根據(jù)該sql查詢語句的關(guān)鍵字生成語法樹。s503、判斷是不是授予或刪除權(quán)限的查詢。s504、如果不是授予或刪除權(quán)限的查詢,則進入相關(guān)查詢的操作流程。s505、如果是授予或刪除權(quán)限的查詢,則判斷是查看權(quán)限還是修改權(quán)限。這里,該修改權(quán)限包括授予或刪除權(quán)限s506、如果是修改權(quán)限,則在權(quán)限數(shù)據(jù)庫中進行相應的權(quán)限修改并保 存。s507、如果是查看權(quán)限,則在權(quán)限數(shù)據(jù)庫中讀取相應的權(quán)限。至此,便完整地介紹了本發(fā)明的數(shù)據(jù)庫權(quán)限實現(xiàn)方法。本方法提出了一種在sql以及元數(shù)據(jù)層面上實現(xiàn)的跨數(shù)據(jù)庫實現(xiàn)的統(tǒng)一授權(quán)的數(shù)據(jù)庫權(quán)限體系結(jié)構(gòu)。為了達到上述目的,本發(fā)明還提出了一種數(shù)據(jù)庫權(quán)限實現(xiàn)系統(tǒng)01,如圖6、圖7所示,該系統(tǒng)包括:結(jié)構(gòu)化查詢語言sql解析器02、元數(shù)據(jù)過濾模塊03和權(quán)限監(jiān)測模塊04。sql解析器02,用于對輸入的sql查詢語句進行解析,生成語法樹。元數(shù)據(jù)過濾模塊03,用于通過語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息。權(quán)限監(jiān)測模塊04,用于對查詢信息的可操作權(quán)限進行驗證,根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作。優(yōu)選地,預設的描述形式包括:五元組形式;該五元組包括數(shù)據(jù)庫鏈接信息server、數(shù)據(jù)庫名稱database、表名稱table、列名稱column和權(quán)限類型privilege;其中,privilege包括:讀取select、插入insert、修改alter、刪除drop和全部all。all包括:select、insert、alter和drop。優(yōu)選地,元數(shù)據(jù)過濾模塊03通過語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息包括:根據(jù)語法樹的元數(shù)據(jù)獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一server。從一個或多個第一server中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)庫。從一個或多個第一數(shù)據(jù)庫中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個 或多個第一數(shù)據(jù)表。從一個或多個第一數(shù)據(jù)表中獲取與sql查詢語句的關(guān)鍵字相關(guān)的一個或多個第一數(shù)據(jù)列。將第一server、第一數(shù)據(jù)庫、第一數(shù)據(jù)表、第一數(shù)據(jù)列和想要執(zhí)行的privilege以五元組的形式形成查詢信息。優(yōu)選地,權(quán)限監(jiān)測模塊04對查詢信息的可操作權(quán)限進行驗證包括:將五元組形式的查詢信息中所包含的第一privilege項與預存的五元組形勢的權(quán)限信息中所包含的第二privilege項相比較;并且,對于第一privilege項所包含的一個或多個操作分別判斷是否與第二privilege項中包含的一個或多個可執(zhí)行操作中的至少一個可執(zhí)行操作相同;其中,第一privilege項和第二privilege項分別至少包括以下一種:select、insert、alter、drop和all。權(quán)限監(jiān)測模塊04根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作包括:當?shù)诙rivilege項為all時,執(zhí)行第一privilege項所包含的一個或多個操作。當?shù)诙rivilege項不為all,并且當?shù)谝籶rivilege項所包含的一個操作與第二privilege項中的一個可執(zhí)行操作相同時,執(zhí)行可執(zhí)行操作。當?shù)诙rivilege項不為all,并且當?shù)谝籶rivilege項所包含的多個操作與第二privilege項中的多個可執(zhí)行操作分別對應相同時,分別執(zhí)行多個可執(zhí)行操作。優(yōu)選地,該系統(tǒng)還包括元數(shù)據(jù)變更反饋模塊05。元數(shù)據(jù)變更反饋模塊05,用于對數(shù)據(jù)信息執(zhí)行可執(zhí)行操作以后,如果數(shù)據(jù)信息有變更,保存變更后的數(shù)據(jù)信息并更新相應的元數(shù)據(jù);并對更新后的元數(shù)據(jù)的可操作權(quán)限進行更新。其中,元數(shù)據(jù)變更反饋模塊05對更新后的元數(shù)據(jù)的可操作權(quán)限進行更新 包括:對經(jīng)過insert和/或alter操作的元數(shù)據(jù)進行數(shù)據(jù)權(quán)限的變更或刪除,以及對經(jīng)過drop操作的元數(shù)據(jù)進行數(shù)據(jù)權(quán)限的刪除。與現(xiàn)有技術(shù)相比,本發(fā)明包括:對輸入的結(jié)構(gòu)化查詢語言sql查詢語句進行解析,生成語法樹。語法樹的元數(shù)據(jù)獲得具有預設的描述形式的查詢信息。對查詢信息的可操作權(quán)限進行驗證,根據(jù)驗證結(jié)果對通過查詢信息查詢到的數(shù)據(jù)信息執(zhí)行相關(guān)操作。通過本發(fā)明的方案,能夠在結(jié)構(gòu)化查詢語言sql以及元數(shù)據(jù)層面上實現(xiàn)跨數(shù)據(jù)庫的統(tǒng)一授權(quán)。需要說明的是,以上所述的實施例僅是為了便于本領(lǐng)域的技術(shù)人員理解而已,并不用于限制本發(fā)明的保護范圍,在不脫離本發(fā)明的發(fā)明構(gòu)思的前提下,本領(lǐng)域技術(shù)人員對本發(fā)明所做出的任何顯而易見的替換和改進等均在本發(fā)明的保護范圍之內(nèi)。當前第1頁12當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1