本發(fā)明實(shí)施方式涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)庫審計(jì)方法、裝置及系統(tǒng)。
背景技術(shù):
隨著物聯(lián)網(wǎng)、移動(dòng)互聯(lián)技術(shù)的成熟,相關(guān)行業(yè)每天產(chǎn)生的數(shù)據(jù)成爆炸性增長,采用關(guān)系型數(shù)據(jù)庫的公司慢慢地往hbase數(shù)據(jù)庫方向轉(zhuǎn)變。國內(nèi)政府部門、大型連鎖企業(yè)的轉(zhuǎn)變步伐更為明顯。而hbase這種非關(guān)系型數(shù)據(jù)庫,對(duì)于現(xiàn)有的信息安全審計(jì)體系,構(gòu)成了極大的挑戰(zhàn)。顧名思義,非關(guān)系型數(shù)據(jù)庫存儲(chǔ)是有別與關(guān)系型數(shù)據(jù)庫存儲(chǔ)的新一代存儲(chǔ)解決方法。傳統(tǒng)的提取sql語句的方法,在審計(jì)上已是捉襟見肘。伴隨hadoop平臺(tái)擴(kuò)張,對(duì)hbase數(shù)據(jù)庫訪問安全審計(jì)技術(shù)研究刻不容緩。
hbase可以動(dòng)態(tài)增加列,支持高并發(fā),基于列存儲(chǔ)的,每個(gè)columnfamily(列族)都由幾個(gè)文件保存,不同的columnfamily的文件是分離的。而傳統(tǒng)的關(guān)系型數(shù)據(jù)庫是基于表格結(jié)構(gòu)和行模式保存的。傳統(tǒng)數(shù)據(jù)庫審計(jì)方法無法審計(jì)全新的hbase操作行為,對(duì)返回結(jié)果內(nèi)容亦無從解析。
為了兼容人們對(duì)關(guān)系型數(shù)據(jù)庫訪問習(xí)慣,hbase的訪問支持sql(結(jié)構(gòu)化查詢語言)。sql是通過類hive工具的轉(zhuǎn)化實(shí)現(xiàn)對(duì)hbase查詢語言,由一系列關(guān)系數(shù)據(jù)庫功能來提供支持——包括交易、一致性、觸發(fā)器、存儲(chǔ)過程等。sql存取數(shù)據(jù),將其作為表的行和列來查看。由于hbase數(shù)據(jù)實(shí)際上存儲(chǔ)在columnfamily結(jié)構(gòu)中,因此與傳統(tǒng)的關(guān)系數(shù)據(jù)庫相比,使用sql的應(yīng)用程序能夠獲得更好的性能。
通過javaapi或c++api,借助jdbc(javadatabaseconnectivity,java數(shù)據(jù)庫連接)或odbc(opendatabaseconnectivity,開放數(shù)據(jù)庫互連)直接訪問hbase,使用nosql(非關(guān)系型的數(shù)據(jù)庫)語句實(shí)現(xiàn),傳統(tǒng)數(shù)據(jù)庫審計(jì)傳面臨這種第二報(bào)文,亦有心無力,不能解析這種訪問。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施方式提供一種數(shù)據(jù)庫審計(jì)方法、裝置及系統(tǒng),能夠?qū)osql的訪問進(jìn)行解析。
為解決上述技術(shù)問題,第一方面,本發(fā)明實(shí)施方式采用的一個(gè)技術(shù)方案是:提供一種數(shù)據(jù)庫審計(jì)方法,包括:
建立與服務(wù)器的連接,并向服務(wù)器發(fā)送查詢指令;
接收服務(wù)器返回的執(zhí)行結(jié)果信息,并將所述執(zhí)行結(jié)果信息保存入庫,所述執(zhí)行結(jié)果信息由服務(wù)器根據(jù)特征碼解析并執(zhí)行所述查詢指令后得到。
區(qū)別于現(xiàn)有技術(shù),本實(shí)施例提供的方法先是通過對(duì)第二報(bào)文進(jìn)行特征碼的識(shí)別,區(qū)分不同的指令,然后采用各自的翻譯單元進(jìn)行語句解析,將解析出來的有效操作語句緩存處理后,繼續(xù)對(duì)組好包的回復(fù)進(jìn)行協(xié)議分析。
附圖說明
圖1是本發(fā)明實(shí)施例提供的應(yīng)用場景示意圖;
圖2是本發(fā)明提供的一種數(shù)據(jù)庫審計(jì)方法的流程圖;
圖3是本發(fā)明提供的又一種數(shù)據(jù)庫審計(jì)方法的流程圖;
圖4是本發(fā)明提供的一種數(shù)據(jù)庫審計(jì)裝置的結(jié)構(gòu)框圖;
圖5是本發(fā)明提供的又一種數(shù)據(jù)庫審計(jì)裝置的結(jié)構(gòu)框圖;
圖6是本發(fā)明提供的一種電子設(shè)備的機(jī)構(gòu)示意圖。
具體實(shí)施方式
為了使本申請(qǐng)的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及本申請(qǐng)實(shí)施例,對(duì)本申請(qǐng)進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體本申請(qǐng)實(shí)施例僅用以解釋本申請(qǐng),并不用于限定本申請(qǐng)。
圖1是本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)庫審計(jì)方法的可能應(yīng)用場景。在一些可能應(yīng)用場景,如圖1所示,該應(yīng)用場景包括計(jì)算機(jī)1及服務(wù)器2。服務(wù)器2為搭載有hadoop平臺(tái)的服務(wù)器,其采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)。計(jì)算機(jī)1將sql指令或者nosql指令攜帶于報(bào)文中后,發(fā)送至服務(wù)器,報(bào)文中同時(shí)還可攜帶有用于區(qū)分不同指令的特征碼,服務(wù)器2接收到報(bào)文后,解析報(bào)文,判斷里面的特征碼是否為緩存標(biāo)記,如為緩存標(biāo)記,則將指令緩存后用sqlid對(duì)應(yīng)的指令替換報(bào)文中原有的指令。如不為緩存標(biāo)記,則將指令緩存。接著,解析并執(zhí)行指令后將執(zhí)行結(jié)果信息通過報(bào)文再次發(fā)送回計(jì)算機(jī)1中。計(jì)算機(jī)1對(duì)接收的結(jié)果信息進(jìn)行保存入庫。
現(xiàn)有技術(shù)中,服務(wù)器2與計(jì)算機(jī)1連接后,服務(wù)器2如接收到的指令為nosql指令,往往不能夠進(jìn)行解析。
請(qǐng)?jiān)賲㈤唸D1,在本申請(qǐng)實(shí)施例提供的可能應(yīng)用場景中,服務(wù)器2區(qū)分不同的指令,然后采用各自的翻譯單元進(jìn)行語句解析,將解析出來的有效操作語句緩存處理后,繼續(xù)對(duì)組好包的回復(fù)進(jìn)行協(xié)議分析。
實(shí)施例一
參閱圖2,本發(fā)明的第一實(shí)施例,提供一種數(shù)據(jù)庫審計(jì)方法,所述方法包括:
步驟21:建立與服務(wù)器的連接,并向服務(wù)器發(fā)送查詢指令。
所述服務(wù)器為搭載有hadoop平臺(tái)的服務(wù)器,hadoop是目前大數(shù)據(jù)處理的最流行平臺(tái)架構(gòu),主要采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)。
所述查詢指令為nosql語句或者sql語句,終端設(shè)備將查詢指令通過tcp/ip協(xié)議或其他網(wǎng)絡(luò)協(xié)議進(jìn)行組包形成第一報(bào)文,并將組包形成的第一報(bào)文發(fā)送至采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)的hadoop服務(wù)器。發(fā)送的第一報(bào)文中,除了攜帶一些符合tcp/ip協(xié)議要求的必要格式信息外,還包括指令名稱與參數(shù)信息。指令名稱為能夠執(zhí)行的語句的代表符號(hào)。參數(shù)信息為指令名稱可執(zhí)行的參數(shù)。在某些情況下,也可不必包含參數(shù)執(zhí)行,只包含指令名稱。
例如,db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase為指令名稱,其對(duì)應(yīng)的命令為能夠執(zhí)行的從指定主機(jī)進(jìn)行克隆數(shù)據(jù)的操作命令。其后的“127.0.0.1”為參數(shù)信息,其為db.clonedatabase指令名稱能夠執(zhí)行的參數(shù)。整個(gè)語句對(duì)應(yīng)的操作為:從指定主機(jī)(“127.0.0.1”)上克隆數(shù)據(jù)庫。
又如,指令“showusers”,該指令只包括指令名稱“showusers”,不包括參數(shù)信息。整個(gè)語句對(duì)應(yīng)的操作為:顯示當(dāng)前所有的用戶。
為了區(qū)分不同的語句,在第一報(bào)文中攜帶一些用于區(qū)分不同語句的標(biāo)記。如,查詢指令為nosql語句,則在第一報(bào)文中攜帶緩存標(biāo)記。如,查詢指令為sql語句,則在第一報(bào)文中不攜帶緩存標(biāo)記。
步驟22:接收服務(wù)器返回的執(zhí)行結(jié)果信息,并將所述執(zhí)行結(jié)果信息保存入庫,所述執(zhí)行結(jié)果信息由服務(wù)器根據(jù)特征碼解析并執(zhí)行所述查詢指令后得到。
服務(wù)器接收發(fā)送的包含查詢指令的第一報(bào)文后,解析第一報(bào)文,獲得查詢指令和特征碼,同時(shí)判斷特征碼是否為緩存標(biāo)記,如為緩存標(biāo)記,則對(duì)該第一報(bào)文中的指令進(jìn)行緩存。如不為緩存標(biāo)記,則在對(duì)指令緩存后通過sqlid對(duì)應(yīng)的sql指令替換原有的查詢指令,并將原有的查詢指令中的參數(shù)信息保留,供sqlid對(duì)應(yīng)的sql語句執(zhí)行。
例如,原有的查詢指令為db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase為指令名稱,其對(duì)應(yīng)的命令為能夠執(zhí)行的從指定主機(jī)進(jìn)行克隆數(shù)據(jù)的操作命令。其后的“127.0.0.1”為參數(shù)信息,其為db.clonedatabase指令名稱能夠執(zhí)行的參數(shù)。整個(gè)語句對(duì)應(yīng)的操作為:從指定主機(jī)(“127.0.0.1”)上克隆數(shù)據(jù)庫。用sqlid對(duì)應(yīng)的sql指令替換db.clonedatabase,并將參數(shù)信息“127.0.0.1”供sqlid對(duì)應(yīng)的sql指令執(zhí)行。
在經(jīng)過上述步驟后,終端設(shè)備發(fā)送的查詢指令已經(jīng)為服務(wù)器可執(zhí)行的指令,則服務(wù)器對(duì)指令進(jìn)行解析并執(zhí)行,并將執(zhí)行結(jié)果通過tcp/ip協(xié)議進(jìn)行組包形成第一報(bào)文,并將組包形成的第一報(bào)文發(fā)送至終端設(shè)備。發(fā)送的第一報(bào)文中,除了攜帶一些符合tcp/ip協(xié)議要求的必要格式信息外,服務(wù)器執(zhí)行命令的結(jié)果信息。終端設(shè)備解析第一報(bào)文,并將提取出第一報(bào)文中的執(zhí)行結(jié)果信息后將執(zhí)行結(jié)果信息進(jìn)行保存??蛇M(jìn)一步對(duì)提取出的執(zhí)行結(jié)果信息進(jìn)行審計(jì)。
區(qū)別于現(xiàn)有技術(shù),本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫審計(jì)方法,針對(duì)hbase數(shù)據(jù)庫各種指令進(jìn)行協(xié)議解析,發(fā)送的包含操作指令的第一報(bào)文進(jìn)行解析后,通過特征碼進(jìn)行區(qū)別,將sql操作、nosql操作采用各自的獨(dú)有翻譯單元,整合成與操作格式雷同的語句,同時(shí)將相應(yīng)的回復(fù)做解析后,作為一個(gè)整體的記錄,保存,作為事后參考的依據(jù)。
本實(shí)施例的方法先是通過對(duì)第二報(bào)文進(jìn)行特征碼的識(shí)別,區(qū)分不同的指令,然后采用各自的翻譯單元進(jìn)行語句解析,將解析出來的有效操作語句緩存處理后,繼續(xù)對(duì)組好包的回復(fù)進(jìn)行協(xié)議分析。
實(shí)施例二
參閱圖3,本發(fā)明的第二實(shí)施例,提供一種數(shù)據(jù)庫審計(jì)方法,所述方法包括:
步驟31:建立與終端設(shè)備的連接,并接收終端設(shè)備發(fā)送的查詢指令。
所述查詢指令攜帶于終端設(shè)備發(fā)送的第一報(bào)文中。
該方法的執(zhí)行主體為服務(wù)器,所述服務(wù)器為搭載有hadoop平臺(tái)的服務(wù)器,hadoop是目前大數(shù)據(jù)處理的最流行平臺(tái)架構(gòu),主要采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)。
接收的終端設(shè)備發(fā)送的所述查詢指令為nosql語句或者sql語句,終端設(shè)備將查詢指令通過tcp/ip協(xié)議進(jìn)行組包形成第一報(bào)文,并將組包形成的第一報(bào)文發(fā)送至采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)的hadoop服務(wù)器。發(fā)送的第一報(bào)文中,除了攜帶一些符合tcp/ip協(xié)議要求的必要格式信息外,還包括指令名稱與參數(shù)信息。指令名稱為能夠執(zhí)行的語句的代表符號(hào)。參數(shù)信息為指令名稱可執(zhí)行的參數(shù)。在某些情況下,也可不必包含參數(shù)執(zhí)行,只包含指令名稱。
例如,db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase為指令名稱,其對(duì)應(yīng)的命令為能夠執(zhí)行的從指定主機(jī)進(jìn)行克隆數(shù)據(jù)的操作命令。其后的“127.0.0.1”為參數(shù)信息,其為db.clonedatabase指令名稱能夠執(zhí)行的參數(shù)。整個(gè)語句對(duì)應(yīng)的操作為:從指定主機(jī)(“127.0.0.1”)上克隆數(shù)據(jù)庫。
又如,指令“showusers”,該指令只包括指令名稱“showusers”,不包括參數(shù)信息。整個(gè)語句對(duì)應(yīng)的操作為:顯示當(dāng)前所有的用戶。
為了區(qū)分不同的語句,在第一報(bào)文中攜帶一些用于區(qū)分不同語句的標(biāo)記。如,查詢指令為nosql語句,則在第一報(bào)文中攜帶緩存標(biāo)記。如,查詢指令為sql語句,則在第一報(bào)文中不攜帶緩存標(biāo)記。
步驟32:根據(jù)特征碼解析并執(zhí)行所述查詢指令,而后將執(zhí)行結(jié)果信息發(fā)送至終端設(shè)備。
所述特征碼攜帶于終端設(shè)備發(fā)送的第一報(bào)文中
服務(wù)器接收發(fā)送的包含查詢指令的第一報(bào)文后,解析第一報(bào)文,獲得查詢指令和特征碼,同時(shí)判斷第一報(bào)文中的特征碼是否為緩存標(biāo)記,如為緩存標(biāo)記,則對(duì)該第一報(bào)文中的指令進(jìn)行緩存。如不為緩存標(biāo)記,則在對(duì)指令緩存后通過sqlid對(duì)應(yīng)的sql指令替換原有的查詢指令,并將原有的查詢指令中的參數(shù)信息保留,供sqlid對(duì)應(yīng)的sql語句執(zhí)行。
例如,原有的查詢指令為db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase為指令名稱,其對(duì)應(yīng)的命令為能夠執(zhí)行的從指定主機(jī)進(jìn)行克隆數(shù)據(jù)的操作命令。其后的“127.0.0.1”為參數(shù)信息,其為db.clonedatabase指令名稱能夠執(zhí)行的參數(shù)。整個(gè)語句對(duì)應(yīng)的操作為:從指定主機(jī)(“127.0.0.1”)上克隆數(shù)據(jù)庫。用sqlid對(duì)應(yīng)的sql指令替換db.clonedatabase,并將參數(shù)信息“127.0.0.1”供sqlid對(duì)應(yīng)的sql指令執(zhí)行。
在經(jīng)過上述步驟后,終端設(shè)備發(fā)送的查詢指令已經(jīng)為服務(wù)器可執(zhí)行的指令,則服務(wù)器對(duì)指令進(jìn)行解析并執(zhí)行,并將執(zhí)行結(jié)果通過tcp/ip協(xié)議進(jìn)行組包形成第一報(bào)文,并將組包形成的第一報(bào)文發(fā)送至終端設(shè)備。發(fā)送的第一報(bào)文中,除了攜帶一些符合tcp/ip協(xié)議要求的必要格式信息外,服務(wù)器執(zhí)行命令的結(jié)果信息。終端設(shè)備解析第一報(bào)文,并將提取出第一報(bào)文中的執(zhí)行結(jié)果信息后將執(zhí)行結(jié)果信息進(jìn)行保存??蛇M(jìn)一步對(duì)提取出的執(zhí)行結(jié)果信息進(jìn)行審計(jì)。
區(qū)別于現(xiàn)有技術(shù),本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫審計(jì)方法,針對(duì)hbase數(shù)據(jù)庫各種指令進(jìn)行協(xié)議解析,發(fā)送的包含操作指令的第一報(bào)文進(jìn)行解析后,通過特征碼進(jìn)行區(qū)別,將sql操作、nosql操作采用各自的獨(dú)有翻譯單元,整合成與操作格式雷同的語句,同時(shí)將相應(yīng)的回復(fù)做解析后,作為一個(gè)整體的記錄,保存,作為事后參考的依據(jù)。
本實(shí)施例的方法先是通過對(duì)第二報(bào)文進(jìn)行特征碼的識(shí)別,區(qū)分不同的指令,然后采用各自的翻譯單元進(jìn)行語句解析,將解析出來的有效操作語句緩存處理后,繼續(xù)對(duì)組好包的回復(fù)進(jìn)行協(xié)議分析。
實(shí)施例三
參閱圖4,本發(fā)明的第三實(shí)施例,提供一種數(shù)據(jù)庫審計(jì)裝置,所述裝置包括:
第一連接模塊41,用于建立與服務(wù)器的連接。
所述服務(wù)器為搭載有hadoop平臺(tái)的服務(wù)器,hadoop是目前大數(shù)據(jù)處理的最流行平臺(tái)架構(gòu),主要采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)。
第一發(fā)送模塊42,用于向服務(wù)器發(fā)送攜帶于第一報(bào)文中的查詢指令。
所述查詢指令為nosql語句或者sql語句,第一發(fā)送模塊42將查詢指令通過tcp/ip協(xié)議進(jìn)行組包形成第一報(bào)文,并將組包形成的第一報(bào)文發(fā)送至采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)的hadoop服務(wù)器。發(fā)送的第一報(bào)文中,除了攜帶一些符合tcp/ip協(xié)議要求的必要格式信息外,還包括指令名稱與參數(shù)信息。指令名稱為能夠執(zhí)行的語句的代表符號(hào)。參數(shù)信息為指令名稱可執(zhí)行的參數(shù)。在某些情況下,也可不必包含參數(shù)執(zhí)行,只包含指令名稱。
例如,db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase為指令名稱,其對(duì)應(yīng)的命令為能夠執(zhí)行的從指定主機(jī)進(jìn)行克隆數(shù)據(jù)的操作命令。其后的“127.0.0.1”為參數(shù)信息,其為db.clonedatabase指令名稱能夠執(zhí)行的參數(shù)。整個(gè)語句對(duì)應(yīng)的操作為:從指定主機(jī)(“127.0.0.1”)上克隆數(shù)據(jù)庫。
又如,指令“showusers”,該指令只包括指令名稱“showusers”,不包括參數(shù)信息。整個(gè)語句對(duì)應(yīng)的操作為:顯示當(dāng)前所有的用戶。
為了區(qū)分不同的語句,在第一報(bào)文中攜帶一些用于區(qū)分不同語句的標(biāo)記。如,查詢指令為nosql語句,則在第一報(bào)文中攜帶緩存標(biāo)記。如,查詢指令為sql語句,則在第一報(bào)文中不攜帶緩存標(biāo)記。
服務(wù)器接收發(fā)送的包含查詢指令的第一報(bào)文后,解析第一報(bào)文,獲得查詢指令和特征碼,同時(shí)判斷第一報(bào)文中的特征碼是否為緩存標(biāo)記,如為緩存標(biāo)記,則對(duì)該第一報(bào)文中的指令進(jìn)行緩存。如不為緩存標(biāo)記,則在對(duì)指令緩存后通過sqlid對(duì)應(yīng)的sql指令替換原有的查詢指令,并將原有的查詢指令中的參數(shù)信息保留,供sqlid對(duì)應(yīng)的sql語句執(zhí)行。
例如,原有的查詢指令為db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase為指令名稱,其對(duì)應(yīng)的命令為能夠執(zhí)行的從指定主機(jī)進(jìn)行克隆數(shù)據(jù)的操作命令。其后的“127.0.0.1”為參數(shù)信息,其為db.clonedatabase指令名稱能夠執(zhí)行的參數(shù)。整個(gè)語句對(duì)應(yīng)的操作為:從指定主機(jī)(“127.0.0.1”)上克隆數(shù)據(jù)庫。用sqlid對(duì)應(yīng)的sql指令替換db.clonedatabase,并將參數(shù)信息“127.0.0.1”供sqlid對(duì)應(yīng)的sql指令執(zhí)行。
第一執(zhí)行模塊43,用于接收服務(wù)器返回的執(zhí)行結(jié)果信息,并將所述執(zhí)行結(jié)果信息保存入庫;所述執(zhí)行結(jié)果信息由服務(wù)器根據(jù)特征碼解析并執(zhí)行所述查詢指令后得到。
經(jīng)過服務(wù)器解析后,第一發(fā)送模塊41發(fā)送的查詢指令已經(jīng)為服務(wù)器可執(zhí)行的指令,則服務(wù)器對(duì)指令進(jìn)行解析并執(zhí)行,并將執(zhí)行結(jié)果通過tcp/ip協(xié)議進(jìn)行組包形成第一報(bào)文,并將組包形成的第一報(bào)文發(fā)送至第一執(zhí)行模塊43。發(fā)送的第一報(bào)文中,除了攜帶一些符合tcp/ip協(xié)議要求的必要格式信息外,服務(wù)器執(zhí)行命令的結(jié)果信息。第一執(zhí)行模塊43解析第一報(bào)文,并將提取出第一報(bào)文中的執(zhí)行結(jié)果信息后將執(zhí)行結(jié)果信息進(jìn)行保存。可進(jìn)一步對(duì)提取出的執(zhí)行結(jié)果信息進(jìn)行審計(jì)。
區(qū)別于現(xiàn)有技術(shù),本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫審計(jì)裝置,服務(wù)器針對(duì)hbase數(shù)據(jù)庫各種指令進(jìn)行協(xié)議解析,服務(wù)器對(duì)第一發(fā)送模塊42發(fā)送的包含操作指令的第一報(bào)文進(jìn)行解析后,通過特征碼進(jìn)行區(qū)別,將sql操作、nosql操作采用各自的獨(dú)有翻譯單元,整合成與操作格式雷同的語句,同時(shí)將相應(yīng)的回復(fù)做解析后,第一解析模塊44將回復(fù)作為一個(gè)整體的記錄,保存,作為事后參考的依據(jù)。
實(shí)施例四
參閱圖5,本發(fā)明的第二實(shí)施例,提供一種數(shù)據(jù)庫審計(jì)方法,所述方法包括:
第二連接模塊51,用于建立與終端設(shè)備的連接。
第二連接模塊51搭載于服務(wù)器中,所述服務(wù)器為搭載有hadoop平臺(tái)的服務(wù)器,hadoop是目前大數(shù)據(jù)處理的最流行平臺(tái)架構(gòu),主要采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)。
第二接收模塊52,并接收終端設(shè)備發(fā)送的攜帶于第一報(bào)文中的執(zhí)行指令。
接收的終端設(shè)備發(fā)送的所述查詢指令為nosql語句或者sql語句,終端設(shè)備將查詢指令通過tcp/ip協(xié)議進(jìn)行組包形成第一報(bào)文,并將組包形成的第一報(bào)文發(fā)送至采用非關(guān)系型數(shù)據(jù)庫hbase存儲(chǔ)數(shù)據(jù)的hadoop服務(wù)器。發(fā)送的第一報(bào)文中,除了攜帶一些符合tcp/ip協(xié)議要求的必要格式信息外,還包括指令名稱與參數(shù)信息。指令名稱為能夠執(zhí)行的語句的代表符號(hào)。參數(shù)信息為指令名稱可執(zhí)行的參數(shù)。在某些情況下,也可不必包含參數(shù)執(zhí)行,只包含指令名稱。
例如,db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase為指令名稱,其對(duì)應(yīng)的命令為能夠執(zhí)行的從指定主機(jī)進(jìn)行克隆數(shù)據(jù)的操作命令。其后的“127.0.0.1”為參數(shù)信息,其為db.clonedatabase指令名稱能夠執(zhí)行的參數(shù)。整個(gè)語句對(duì)應(yīng)的操作為:從指定主機(jī)
(“127.0.0.1”)上克隆數(shù)據(jù)庫。
又如,指令“showusers”,該指令只包括指令名稱“showusers”,不包括參數(shù)信息。整個(gè)語句對(duì)應(yīng)的操作為:顯示當(dāng)前所有的用戶。
為了區(qū)分不同的語句,在第一報(bào)文中攜帶一些用于區(qū)分不同語句的標(biāo)記。如,查詢指令為nosql語句,則在第一報(bào)文中攜帶緩存標(biāo)記。如,查詢指令為sql語句,則在第一報(bào)文中不攜帶緩存標(biāo)記。
第二執(zhí)行模塊53,用于根據(jù)特征碼解析并執(zhí)行所述查詢指令,而后將執(zhí)行結(jié)果信息發(fā)送至終端設(shè)備。
第二執(zhí)行模塊53接收發(fā)送的包含查詢指令的第一報(bào)文后,解析第一報(bào)文,獲得查詢指令和特征碼,同時(shí)判斷第一報(bào)文中的特征碼是否為緩存標(biāo)記,如為緩存標(biāo)記,則對(duì)該第一報(bào)文中的指令進(jìn)行緩存。如不為緩存標(biāo)記,則在對(duì)指令緩存后通過sqlid對(duì)應(yīng)的sql指令替換原有的查詢指令,并將原有的查詢指令中的參數(shù)信息保留,供sqlid對(duì)應(yīng)的sql語句執(zhí)行。
例如,原有的查詢指令為db.clonedatabase(“127.0.0.1”),其中,db.clonedatabase為指令名稱,其對(duì)應(yīng)的命令為能夠執(zhí)行的從指定主機(jī)進(jìn)行克隆數(shù)據(jù)的操作命令。其后的“127.0.0.1”為參數(shù)信息,其為db.clonedatabase指令名稱能夠執(zhí)行的參數(shù)。整個(gè)語句對(duì)應(yīng)的操作為:從指定主機(jī)(“127.0.0.1”)上克隆數(shù)據(jù)庫。用sqlid對(duì)應(yīng)的sql指令替換db.clonedatabase,并將參數(shù)信息“127.0.0.1”供sqlid對(duì)應(yīng)的sql指令執(zhí)行。
經(jīng)第二解析模塊53處理后,終端設(shè)備發(fā)送的查詢指令已經(jīng)為服務(wù)器可執(zhí)行的指令,則服務(wù)器對(duì)指令進(jìn)行解析并執(zhí)行,并通過第二發(fā)送模塊54將執(zhí)行結(jié)果通過tcp/ip協(xié)議進(jìn)行組包形成第一報(bào)文,并將組包形成的第一報(bào)文發(fā)送至終端設(shè)備。發(fā)送的第一報(bào)文中,除了攜帶一些符合tcp/ip協(xié)議要求的必要格式信息外,服務(wù)器執(zhí)行命令的結(jié)果信息。終端設(shè)備解析第一報(bào)文,并將提取出第一報(bào)文中的執(zhí)行結(jié)果信息后將執(zhí)行結(jié)果信息進(jìn)行保存??蛇M(jìn)一步對(duì)提取出的執(zhí)行結(jié)果信息進(jìn)行審計(jì)。
區(qū)別于現(xiàn)有技術(shù),本發(fā)明實(shí)施例提供的一種數(shù)據(jù)庫審計(jì)裝置,針對(duì)hbase數(shù)據(jù)庫各種指令進(jìn)行協(xié)議解析,第二解析模塊53對(duì)發(fā)送的包含操作指令的第一報(bào)文進(jìn)行解析后,通過特征碼進(jìn)行區(qū)別,將sql操作、nosql操作采用各自的獨(dú)有翻譯單元,整合成與操作格式雷同的語句,同時(shí)將相應(yīng)的回復(fù)做解析后,作為一個(gè)整體的記錄,保存,作為事后參考的依據(jù)。
實(shí)施例五
圖6是本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)庫審計(jì)的電子設(shè)備600的硬件結(jié)構(gòu)示意圖,如圖6所示,該電子設(shè)備600包括:
一個(gè)或多個(gè)處理器601、存儲(chǔ)器602,圖6中以一個(gè)處理器601為例。
處理器601和存儲(chǔ)器602可以通過總線或者其他方式連接,圖6中以通過總線連接為例。
存儲(chǔ)器602作為一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),可用于存儲(chǔ)非易失性軟件程序、非易失性計(jì)算機(jī)可執(zhí)行程序以及模塊。處理器601通過運(yùn)行存儲(chǔ)在存儲(chǔ)器602中的非易失性軟件程序、指令以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述方法實(shí)施例一的一種數(shù)據(jù)庫審計(jì)方法。
存儲(chǔ)器602可以包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需要的應(yīng)用程序;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)一種數(shù)據(jù)庫審計(jì)裝置的使用所創(chuàng)建的數(shù)據(jù)等。此外,存儲(chǔ)器602可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他非易失性固態(tài)存儲(chǔ)器件。
所述一個(gè)或者多個(gè)模塊存儲(chǔ)在所述存儲(chǔ)器602中,當(dāng)被所述一個(gè)或者多個(gè)處理器601執(zhí)行時(shí),執(zhí)行上述任意方法實(shí)施例中的數(shù)據(jù)庫審計(jì)方法。
上述產(chǎn)品可執(zhí)行本申請(qǐng)實(shí)施例所提供的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。未在本實(shí)施例中詳盡描述的技術(shù)細(xì)節(jié),可參見本申請(qǐng)實(shí)施例所提供的方法。
本申請(qǐng)實(shí)施例的電子設(shè)備以多種形式存在,包括但不限于:
(1)移動(dòng)通信設(shè)備:這類設(shè)備的特點(diǎn)是具備移動(dòng)通信功能,并且以提供話音、數(shù)據(jù)通信為主要目標(biāo)。這類終端包括:智能手機(jī)(例如iphone)、多媒體手機(jī)、功能性手機(jī),以及低端手機(jī)等。
(2)超移動(dòng)個(gè)人計(jì)算機(jī)設(shè)備:這類設(shè)備屬于個(gè)人計(jì)算機(jī)的范疇,有計(jì)算和處理功能,一般也具備移動(dòng)上網(wǎng)特性。這類終端包括:pda、mid和umpc設(shè)備等,例如ipad。
(3)便攜式娛樂設(shè)備:這類設(shè)備可以顯示和播放多媒體內(nèi)容。該類設(shè)備包括:音頻、視頻播放器(例如ipod),掌上游戲機(jī),電子書,以及智能玩具和便攜式車載導(dǎo)航設(shè)備。
(4)其他具有數(shù)據(jù)交互功能的電子裝置。
本申請(qǐng)實(shí)施例提供了一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,該計(jì)算機(jī)可執(zhí)行指令被一個(gè)或多個(gè)處理器執(zhí)行,例如圖6中的一個(gè)處理器601,可使得上述一個(gè)或多個(gè)處理器可執(zhí)行上述任意方法實(shí)施例中的數(shù)據(jù)庫審計(jì)方法。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。
通過以上的實(shí)施方式的描述,本領(lǐng)域普通技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(read-onlymemory,rom)或隨機(jī)存儲(chǔ)記憶體(randomaccessmemory,ram)等。
以上所述僅為本發(fā)明的實(shí)施方式,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。