国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)據(jù)庫(kù)審計(jì)方法和設(shè)備的制作方法

      文檔序號(hào):6603011閱讀:233來源:國(guó)知局

      專利名稱::一種數(shù)據(jù)庫(kù)審計(jì)方法和設(shè)備的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及通信
      技術(shù)領(lǐng)域
      ,特別涉及一種數(shù)據(jù)庫(kù)審計(jì)方法和設(shè)備。
      背景技術(shù)
      :數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)是目前數(shù)據(jù)庫(kù)安全防護(hù)的重要手段,它實(shí)時(shí)地、智能地解析每一個(gè)用戶對(duì)Oracle數(shù)據(jù)庫(kù)的各種操作,并將審計(jì)結(jié)果記入相關(guān)數(shù)據(jù)庫(kù)中,以便管理人員進(jìn)行查詢、分析等操作,從而加強(qiáng)數(shù)據(jù)庫(kù)應(yīng)用的行為監(jiān)管,保障數(shù)據(jù)庫(kù)系統(tǒng)的正常運(yùn)營(yíng)。由于在金融、電信等行業(yè)當(dāng)中大量使用數(shù)據(jù)庫(kù)系統(tǒng),這種審計(jì)需求尤為突出。目前大部分行業(yè)內(nèi)部的大型數(shù)據(jù)庫(kù)都采用了Oracle公司研制開發(fā)的數(shù)據(jù)庫(kù),Oracle的關(guān)系數(shù)據(jù)庫(kù)是世界第一個(gè)支持SQL語(yǔ)言的數(shù)據(jù)庫(kù),使用的TNS協(xié)議較為復(fù)雜,驅(qū)動(dòng)協(xié)議類型以O(shè)DBC和JDBC為主。對(duì)于Oracle數(shù)據(jù)庫(kù),常規(guī)的數(shù)據(jù)庫(kù)操作都是以SQL語(yǔ)句的方式提交給Oracle數(shù)據(jù)庫(kù)進(jìn)行處理的(比如“select*fromtablelwhereage=28”)。Oracle數(shù)據(jù)庫(kù)收到每一條SQL語(yǔ)句后需要進(jìn)行語(yǔ)法解析、編譯、生成訪問方案、數(shù)據(jù)庫(kù)引擎執(zhí)行具體操作等一系列步驟,占用較多的CPU資源。目前大部分?jǐn)?shù)據(jù)庫(kù)審計(jì)系統(tǒng)都可以實(shí)現(xiàn)這種SQL語(yǔ)句訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)。為了降低Oracle數(shù)據(jù)庫(kù)的資源消耗,提高Oracle數(shù)據(jù)庫(kù)的性能和吞吐量,Oracle數(shù)據(jù)庫(kù)提供了一種使用PreparedStatement模板訪問Oracle數(shù)據(jù)庫(kù)的方法。使用該模板訪問Oracle數(shù)據(jù)庫(kù)時(shí),用戶首先定義一個(gè)Pr印aredStatement模板,每次訪問數(shù)據(jù)庫(kù)時(shí)只需要修改變量值即可。Oracle數(shù)據(jù)庫(kù)在第一次處理Pr印aredStatement模板時(shí)需要進(jìn)行語(yǔ)法解析、編譯、生成訪問方案、數(shù)據(jù)庫(kù)引擎執(zhí)行具體操作等一系列步驟,后續(xù)使用同一模板時(shí)直接進(jìn)行數(shù)據(jù)庫(kù)引擎執(zhí)行具體操作,從而降低了Oracle數(shù)據(jù)庫(kù)的資源消耗,提高了Oracle數(shù)據(jù)庫(kù)的性能和吞吐量。但是對(duì)于這種使用Pr印aredStatement模板訪問Oracle數(shù)據(jù)庫(kù)的方法,由于在SQL語(yǔ)句中存在變量綁定,現(xiàn)有的數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)只能將包含變量名的SQL語(yǔ)句提取出來,而無法實(shí)現(xiàn)變量值的替換。當(dāng)多個(gè)Pr印aredStatement模板交替執(zhí)行時(shí),對(duì)于非第一次的執(zhí)行,由于網(wǎng)絡(luò)報(bào)文中不存在SQL語(yǔ)句關(guān)鍵字,現(xiàn)有的數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)甚至無法審計(jì)出該SQL語(yǔ)句的執(zhí)行。目前已公開的方案中還沒有針對(duì)使用Pr印aredStatement模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)方法。在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題現(xiàn)有的數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)只能實(shí)現(xiàn)一般SQL語(yǔ)句的審計(jì),不支持使用PreparedStatement模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)方法。
      發(fā)明內(nèi)容本發(fā)明提供一種數(shù)據(jù)庫(kù)審計(jì)方法和設(shè)備,能夠精確識(shí)別數(shù)據(jù)庫(kù)操作的內(nèi)容,尤其是通過操作模板訪問數(shù)據(jù)庫(kù)的操作的內(nèi)容,并對(duì)相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容進(jìn)行審計(jì)。為達(dá)到上述目的,本發(fā)明一方面提供了一種數(shù)據(jù)庫(kù)審計(jì)方法,具體包括以下步驟4識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話;如果包含,識(shí)別所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令;判斷所述數(shù)據(jù)庫(kù)操作指令中是否存在SQL語(yǔ)句的關(guān)鍵字;如果存在SQL語(yǔ)句的關(guān)鍵字,判斷所述數(shù)據(jù)庫(kù)操作指令中是否包含變量標(biāo)識(shí);如果存在變量標(biāo)識(shí),記錄所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)和對(duì)應(yīng)的操作模板信息,并在所述包含數(shù)據(jù)庫(kù)操作指令的報(bào)文中提取變量值替換所述變量標(biāo)識(shí),還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì);當(dāng)所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),根據(jù)所述數(shù)據(jù)庫(kù)操作指令中所攜帶的操作模板編號(hào),查詢對(duì)應(yīng)的操作模板信息,還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。優(yōu)選的,所述識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話,具體為根據(jù)DPI識(shí)別技術(shù)識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話;如果包含,記錄所述會(huì)話所對(duì)應(yīng)的會(huì)話信息和所述會(huì)話的驅(qū)動(dòng)協(xié)議類型,如果不包含,放棄對(duì)所述會(huì)話中的報(bào)文進(jìn)行審計(jì)處理。優(yōu)選的,所述如果存在變量標(biāo)識(shí),記錄所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào),具體為當(dāng)所述會(huì)話的驅(qū)動(dòng)協(xié)議類型為JDBC驅(qū)動(dòng)時(shí),根據(jù)信令碼的類型,記錄根據(jù)會(huì)話所對(duì)應(yīng)的客戶端的指令所確定的,或根據(jù)所述會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào);當(dāng)所述會(huì)話的驅(qū)動(dòng)協(xié)議類型為ODBC驅(qū)動(dòng)時(shí),記錄所述會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器所確定的所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)。優(yōu)選的,所述如果存在SQL語(yǔ)句的關(guān)鍵字,判斷所述數(shù)據(jù)庫(kù)操作指令中是否包含變量標(biāo)識(shí)之后,還包括如果判斷所述數(shù)據(jù)庫(kù)操作指令中沒有包含變量標(biāo)識(shí),則根據(jù)所述SQL語(yǔ)句的關(guān)鍵字所對(duì)應(yīng)的操作內(nèi)容對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。優(yōu)選的,所述當(dāng)后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),根據(jù)所述數(shù)據(jù)庫(kù)操作指令中所攜帶的操作模板編號(hào),查詢對(duì)應(yīng)的操作模板信息,還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì),具體包括當(dāng)后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),則在所述后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中獲取所述數(shù)據(jù)庫(kù)操作指令中包含的操作模板編號(hào);查詢所述操作模板編號(hào)所對(duì)應(yīng)的操作模板信息;在所述后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中提取變量值,替換所述操作模板信息中所包含的變量標(biāo)識(shí),還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。另一方面,本發(fā)明還提供了一種數(shù)據(jù)庫(kù)審計(jì)設(shè)備,具體包括識(shí)別模塊,用于識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話,并在識(shí)別到所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話時(shí),進(jìn)一步識(shí)別所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令;判斷模塊,與所述識(shí)別模塊相連接,用于在所述識(shí)別模塊識(shí)別到所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令時(shí),判斷所述數(shù)據(jù)庫(kù)操作指令中是否存在SQL語(yǔ)句的關(guān)鍵字,并在存在SQL語(yǔ)句的關(guān)鍵字時(shí),進(jìn)一步判斷所述數(shù)據(jù)庫(kù)操作指令中是否包含變量標(biāo)識(shí);記錄模塊,與所述判斷模塊相連接,用于在所述判斷模塊判斷存在變量標(biāo)識(shí)時(shí),記錄所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)和對(duì)應(yīng)的操作模板信息;查詢模塊,與所述判斷模塊和所述記錄模塊相連接,用于在所述判斷模塊判斷不存在SQL語(yǔ)句的關(guān)鍵字時(shí),根據(jù)所述數(shù)據(jù)庫(kù)操作指令中所攜帶的操作模板編號(hào),向所述記錄模塊查詢對(duì)應(yīng)的操作模板信息;審計(jì)模塊,與所述記錄模塊和所述查詢模塊相連接,用于在所述包含數(shù)據(jù)庫(kù)操作指令的報(bào)文中提取變量值,通過所述變量值替換所述記錄模塊記錄的,或所述查詢模塊查詢的操作模板信息中的變量標(biāo)識(shí),還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。優(yōu)選的,所述識(shí)別模塊,具體用于根據(jù)DPI識(shí)別技術(shù)識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話;所述記錄模塊,進(jìn)一步與所述識(shí)別模塊相連接,用于在所述識(shí)別模塊的識(shí)別結(jié)果為包含時(shí),記錄所述會(huì)話所對(duì)應(yīng)的會(huì)話信息和所述會(huì)話的驅(qū)動(dòng)協(xié)議類型;所述審計(jì)模塊,進(jìn)一步與所述識(shí)別模塊相連接,用于在所述識(shí)別模塊的識(shí)別結(jié)果為不包含,放棄對(duì)所述報(bào)文進(jìn)行審計(jì)處理。優(yōu)選的,所述記錄模塊,還用于當(dāng)記錄的所述會(huì)話的驅(qū)動(dòng)協(xié)議類型為JDBC驅(qū)動(dòng)時(shí),根據(jù)信令碼的類型,記錄根據(jù)會(huì)話所對(duì)應(yīng)的客戶端的指令所確定的,或根據(jù)所述會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào);當(dāng)記錄的所述會(huì)話的驅(qū)動(dòng)協(xié)議類型為ODBC驅(qū)動(dòng)時(shí),記錄根據(jù)所述會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)。優(yōu)選的,所述審計(jì)模塊,進(jìn)一步與所述判斷模塊相連接,用于在所述判斷模塊判斷所述數(shù)據(jù)庫(kù)操作指令中沒有包含變量標(biāo)識(shí)時(shí),根據(jù)所述SQL語(yǔ)句的關(guān)鍵字所對(duì)應(yīng)的操作內(nèi)容,對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。優(yōu)選的,當(dāng)所述判斷模塊判斷數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),所述查詢模6塊,還用于在所述后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中獲取所述數(shù)據(jù)庫(kù)操作指令中包含的操作模板編號(hào),根據(jù)所述操作模板編號(hào),向所述記錄模塊查詢對(duì)應(yīng)的操作模板信息;所述審計(jì)模塊,用于在所述后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中提取變量值,替換所述操作模板信息中所包含的變量標(biāo)識(shí),還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)通過應(yīng)用本發(fā)明的技術(shù)方案,能夠精確識(shí)別數(shù)據(jù)庫(kù)操作的內(nèi)容,可以實(shí)現(xiàn)完整的數(shù)據(jù)庫(kù)操作行為審計(jì)(包括一般SQL語(yǔ)句的審計(jì)和使用操作模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)),尤其是可以識(shí)別通過操作模板訪問數(shù)據(jù)庫(kù)的操作的內(nèi)容,可以根據(jù)相應(yīng)的操作模板還原相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容,并對(duì)相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容進(jìn)行審計(jì),真實(shí)還原每一個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的各種操作。圖1為本發(fā)明所提出的一種數(shù)據(jù)庫(kù)審計(jì)方法的流程示意圖;圖2A為本發(fā)明所提出的一種針對(duì)使用Pr印aredStatement模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)方法的流程示意圖;圖2B為本發(fā)明所提出的一種針對(duì)使用Pr印aredStatement模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)方法的應(yīng)用場(chǎng)景的示意圖;圖3為本發(fā)明所提出的為本發(fā)明應(yīng)用過程中的一種具有Oracle數(shù)據(jù)流特征的報(bào)文的示意圖;圖4為本發(fā)明所提出的為使用一般SQL語(yǔ)句操作Oracle數(shù)據(jù)庫(kù)的報(bào)文的示意圖;圖5為本發(fā)明所提出的使用JDBC驅(qū)動(dòng),應(yīng)用Pr印aredStatement模板,并第一次訪問Oracle數(shù)據(jù)庫(kù)對(duì)應(yīng)的關(guān)鍵報(bào)文的示意圖;圖6為本發(fā)明所提出的使用JDBC驅(qū)動(dòng),同一Pr印aredStatement模板后續(xù)訪問Oracle數(shù)據(jù)庫(kù)對(duì)應(yīng)的關(guān)鍵報(bào)文的示意圖;圖7為本發(fā)明提出的一種數(shù)據(jù)庫(kù)審計(jì)設(shè)備的結(jié)構(gòu)示意圖。具體實(shí)施例方式針對(duì)
      背景技術(shù)
      中所存在的問題,本發(fā)明提出了一種針對(duì)使用操作模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)方法,可以實(shí)現(xiàn)完整的Oracle數(shù)據(jù)庫(kù)行為審計(jì),包括一般SQL語(yǔ)句的審計(jì)和使用操作模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì),真實(shí)還原每一個(gè)用戶對(duì)Oracle數(shù)據(jù)庫(kù)的各種操作,并將審計(jì)結(jié)果記入相關(guān)數(shù)據(jù)庫(kù)中,以便管理人員進(jìn)行查詢、分析等操作,從而加強(qiáng)數(shù)據(jù)庫(kù)應(yīng)用的行為監(jiān)管,保障數(shù)據(jù)庫(kù)系統(tǒng)的正常運(yùn)營(yíng)。如圖1所示,為本發(fā)明所提出的一種數(shù)據(jù)庫(kù)審計(jì)方法的流程示意圖,具體包括以下步驟步驟S101、識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話。如果包含,執(zhí)行步驟S102;如果不包含,繼續(xù)進(jìn)行相應(yīng)的識(shí)別。在具體的應(yīng)用場(chǎng)景中,本步驟具體為根據(jù)DPI(De印PacketInspection,深度包檢測(cè))識(shí)別技術(shù)識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話,如果包含,記錄該對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話所對(duì)應(yīng)的會(huì)話信息和會(huì)話的驅(qū)動(dòng)協(xié)議類型。從而保證該會(huì)話中的報(bào)文都可以進(jìn)行是否審計(jì)處理的進(jìn)一步判斷,并且驅(qū)動(dòng)協(xié)議類型的記錄也為后續(xù)處理確定了相應(yīng)的處理策略,具體說明見后,在此不再說明。需要指出的是,上述根據(jù)DPI識(shí)別技術(shù)識(shí)別會(huì)話的情況實(shí)際上是針對(duì)報(bào)文的識(shí)別,即在判斷一個(gè)報(bào)文是針對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的報(bào)文時(shí),確認(rèn)該報(bào)文所對(duì)應(yīng)的會(huì)話為對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話。步驟S102、識(shí)別對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令。如果包含,執(zhí)行步驟S103;如果不包含,執(zhí)行步驟S106。即在該會(huì)話中查找包含執(zhí)行SQL語(yǔ)句的數(shù)據(jù)庫(kù)操作指令,只有這樣的語(yǔ)句才會(huì)進(jìn)行進(jìn)一步的審計(jì)處理,而且,在實(shí)際應(yīng)用場(chǎng)景中,一般對(duì)于在步驟S101中所識(shí)別的會(huì)話中向數(shù)據(jù)庫(kù)發(fā)送的單向報(bào)文都會(huì)攜帶自身是否是數(shù)據(jù)庫(kù)操作指令的指示信息,可以據(jù)此判斷該報(bào)文是否為數(shù)據(jù)庫(kù)操作指令。步驟S103、判斷數(shù)據(jù)庫(kù)操作指令中是否存在SQL語(yǔ)句的關(guān)鍵字。如果存在SQL語(yǔ)句的關(guān)鍵字,執(zhí)行步驟S104;如果不存在SQL語(yǔ)句的關(guān)鍵字,執(zhí)行步驟S107。步驟S104、判斷數(shù)據(jù)庫(kù)操作指令中是否包含變量標(biāo)識(shí)。如果存在變量標(biāo)識(shí),執(zhí)行步驟S105;如果不存在變量標(biāo)識(shí),執(zhí)行步驟S108。步驟S105、記錄數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)和對(duì)應(yīng)的操作模板信息,并在包含數(shù)據(jù)庫(kù)操作指令的報(bào)文中提取變量值替換變量標(biāo)識(shí),還原數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。對(duì)應(yīng)步驟S101中的驅(qū)動(dòng)協(xié)議類型的記錄結(jié)果,本步驟中記錄數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)的處理分為以下兩種情況情況一、當(dāng)會(huì)話的驅(qū)動(dòng)協(xié)議類型為JDBC驅(qū)動(dòng)時(shí),根據(jù)信令碼的類型,記錄根據(jù)該會(huì)話所對(duì)應(yīng)的客戶端的指令所確定的,或根據(jù)該會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)。情況二、當(dāng)會(huì)話的驅(qū)動(dòng)協(xié)議類型為ODBC驅(qū)動(dòng)時(shí),記錄該會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器所確定的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)。步驟S106、放棄對(duì)報(bào)文進(jìn)行審計(jì)處理。步驟S107、根據(jù)數(shù)據(jù)庫(kù)操作指令中所攜帶的操作模板編號(hào),查詢對(duì)應(yīng)的操作模板信息,還原數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。首先,本步驟的實(shí)現(xiàn)前提在于應(yīng)用相同操作模板的數(shù)據(jù)庫(kù)操作指令已經(jīng)進(jìn)行過了一次審計(jì),并記錄了相應(yīng)的操作模板編號(hào)和操作模板信息,在此種情況下,本步驟的具體處理過程如下首先,當(dāng)后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),則在后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中獲取數(shù)據(jù)庫(kù)操作指令中包含的操作模板編號(hào)。進(jìn)一步的,查詢?cè)摬僮髂0寰幪?hào)所對(duì)應(yīng)的操作模板信息。然后,在后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中提取變量值,替換操作模板信息中所包含的變量標(biāo)識(shí),還原數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。步驟S108、根據(jù)SQL語(yǔ)句的關(guān)鍵字所對(duì)應(yīng)的操作內(nèi)容對(duì)數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)通過應(yīng)用本發(fā)明的技術(shù)方案,能夠精確識(shí)別數(shù)據(jù)庫(kù)操作的內(nèi)容,可以實(shí)現(xiàn)完整的數(shù)據(jù)庫(kù)操作行為審計(jì)(包括一般SQL語(yǔ)句的審計(jì)和使用操作模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)),尤其是可以識(shí)別通過操作模板訪問數(shù)據(jù)庫(kù)的操作的內(nèi)容,可以根據(jù)相應(yīng)的操作模板還原相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容,并對(duì)相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容進(jìn)行審計(jì),真實(shí)還原每一個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的各種操作。為了進(jìn)一步闡述本發(fā)明的技術(shù)思想,現(xiàn)結(jié)合具體的應(yīng)用場(chǎng)景,對(duì)本發(fā)明的技術(shù)方案進(jìn)行說明。在具體的實(shí)施例中,本發(fā)明將以PreparedStatement模板作為前述的操作模板的具體示例進(jìn)行后續(xù)技術(shù)方案的說明,這僅是具體應(yīng)用場(chǎng)景中的一種示例,操作模板名稱或者具體類型的變化并不會(huì)影響本發(fā)明的保護(hù)范圍。Oracle數(shù)據(jù)庫(kù)在第一次處理Pr印aredStatement模板時(shí)需要進(jìn)行語(yǔ)法解析、編譯、生成訪問方案、數(shù)據(jù)庫(kù)引擎執(zhí)行具體操作等一系列步驟,后續(xù)使用同一模板時(shí)直接進(jìn)行數(shù)據(jù)庫(kù)引擎執(zhí)行具體操作,從而降低了Oracle數(shù)據(jù)庫(kù)的資源消耗,提高了Oracle數(shù)據(jù)庫(kù)的性能和吞吐量。但是對(duì)于這種使用Pr印aredStatement模板訪問Oracle數(shù)據(jù)庫(kù)的方法,由于在SQL語(yǔ)句中存在變量綁定,現(xiàn)有的數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)只能將包含變量名的SQL語(yǔ)句提取出來,而無法實(shí)現(xiàn)變量值的替換。當(dāng)多個(gè)Pr印aredStatement模板交替執(zhí)行時(shí),對(duì)于非第一次的執(zhí)行,由于網(wǎng)絡(luò)報(bào)文中不存在SQL語(yǔ)句關(guān)鍵字,現(xiàn)有的數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)甚至無法審計(jì)出該SQL語(yǔ)句的執(zhí)行。針對(duì)上述問題,本發(fā)明提出了一種針對(duì)使用Pr印aredStatement模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)方法,可以實(shí)現(xiàn)完整的Oracle數(shù)據(jù)庫(kù)行為審計(jì),包括一般SQL語(yǔ)句的審計(jì)和使用PreparedStatement模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì),其流程示意圖如圖2A所示,應(yīng)用場(chǎng)景的示意圖如圖2B所示,該審計(jì)方法具體包括以下步驟步驟S201、識(shí)別Oracle數(shù)據(jù)流。在實(shí)際的組網(wǎng)環(huán)境中,流經(jīng)數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)的流量是很大的,而其中只有很少一部分是需要處理的訪問Oracle數(shù)據(jù)庫(kù)的流量。Oracle數(shù)據(jù)庫(kù)審計(jì)的前提就是要精確識(shí)別訪問Oracle數(shù)據(jù)庫(kù)的流量。在具體應(yīng)用場(chǎng)景中,如圖2B所示,相應(yīng)的數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)為了不影響網(wǎng)絡(luò)系統(tǒng)中的正常通信,通??梢詫?duì)交換機(jī)中的網(wǎng)絡(luò)流量生成鏡像流量,而只對(duì)鏡像流量進(jìn)行相應(yīng)的操作處理,從而,在獲取到準(zhǔn)確的審計(jì)結(jié)果的前提下,保證網(wǎng)絡(luò)中正常的網(wǎng)絡(luò)流量不受影響。在具體的應(yīng)用場(chǎng)景中,通常使用DPI識(shí)別法識(shí)別Oracle數(shù)據(jù)流,在確定了一個(gè)會(huì)話的Oracle數(shù)據(jù)流后,對(duì)應(yīng)該會(huì)話的用戶在后續(xù)處理過程中對(duì)Oracle數(shù)據(jù)庫(kù)的所有操作都可以在該會(huì)話上找到。為了達(dá)到這樣效果,在識(shí)別到一個(gè)會(huì)話為Oracle數(shù)據(jù)流后,需要記錄該識(shí)別到Oracle數(shù)據(jù)流的會(huì)話為Oracle數(shù)據(jù)流,保證該會(huì)話的后續(xù)流量經(jīng)過數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)時(shí)都能夠得到處理,這樣的記錄可以是記錄下該會(huì)話的標(biāo)識(shí)信息,也可以是為該會(huì)話的后續(xù)流量統(tǒng)一添加識(shí)別標(biāo)識(shí),具體的記錄方法的變化并不會(huì)影響本發(fā)明的保護(hù)范圍。進(jìn)一步的,在識(shí)別到一個(gè)會(huì)話為Oracle數(shù)據(jù)流后,還需要記錄該會(huì)話使用的驅(qū)動(dòng)協(xié)議類型,在具體的應(yīng)用場(chǎng)景中,一般默認(rèn)使用ODBC^penDatabaseConnectivity,開放數(shù)據(jù)庫(kù)連接)驅(qū)動(dòng),但也可能使用JDBC(JavaDataBaseConnectivity,Java數(shù)據(jù)庫(kù)連接)驅(qū)動(dòng)。使用的驅(qū)動(dòng)協(xié)議類型不同,后續(xù)處理中提取Pr印aredStatement模板編號(hào)的方法不同,在后續(xù)說明中會(huì)具體敘述。如圖3所示,為本發(fā)明應(yīng)用過程中的一種具有Oracle數(shù)據(jù)流特征的報(bào)文,該報(bào)文的特征字符串為“(DESCRIPTION=(C0NNECT_DATA=”,字符串“_jdbc_”表示該會(huì)話使用的驅(qū)動(dòng)協(xié)議類型為JDBC。具體的,識(shí)別到Oracle數(shù)據(jù)流后,從該會(huì)話的后續(xù)流量中審計(jì)該用戶對(duì)Oracle數(shù)據(jù)庫(kù)執(zhí)行的每個(gè)操作。在實(shí)際應(yīng)用當(dāng)中,Oracle客戶端與服務(wù)器之間的交互是通過SQL語(yǔ)句傳遞的,因此,后續(xù)步驟進(jìn)一步開始識(shí)別其中的SQL語(yǔ)句。同時(shí),如果沒有識(shí)別到Oracle數(shù)據(jù)流,則放棄進(jìn)行審計(jì)處理。步驟S202、識(shí)別Oracle數(shù)據(jù)流中的當(dāng)前報(bào)文是否為SQL語(yǔ)句執(zhí)行報(bào)文。即識(shí)別當(dāng)前報(bào)文中是否包含SQL語(yǔ)句,如果判斷結(jié)果為不是,則放棄進(jìn)行審計(jì)處理。與現(xiàn)有的數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)不同的是,除了審計(jì)一般SQL語(yǔ)句訪問Oracle數(shù)據(jù)庫(kù)的操作外,本發(fā)明的技術(shù)方案中還需要審計(jì)使用PreparedStatement模板訪問Oracle數(shù)據(jù)庫(kù)的相關(guān)操作。在具體的應(yīng)用場(chǎng)景中,這樣的識(shí)別一般通過判斷是否存在SQL語(yǔ)句的關(guān)鍵字,是否存在當(dāng)前報(bào)文是SQL語(yǔ)句執(zhí)行報(bào)文的指示信息,以及其他的識(shí)別信息來實(shí)現(xiàn)。因此,在具體的應(yīng)用場(chǎng)景中,基于這樣的處理思路,可以使用DPI識(shí)別法完成上述識(shí)別,進(jìn)行如下處理步驟S203、判斷SQL語(yǔ)句執(zhí)行報(bào)文是否包含SQL關(guān)鍵字。如果包含SQL語(yǔ)句的關(guān)鍵字,執(zhí)行步驟S204;如果不包含SQL語(yǔ)句的關(guān)鍵字,執(zhí)行步驟S206。步驟S204、判斷SQL語(yǔ)句執(zhí)行報(bào)文是否包含變量。如果包含變量,執(zhí)行步驟S205;如果不包含變量,執(zhí)行步驟S207。其中,如果不包含變量,則表示該SQL語(yǔ)句執(zhí)行報(bào)文為一般的SQL語(yǔ)句操作,這是SQL語(yǔ)句執(zhí)行報(bào)文所對(duì)應(yīng)的處理過程的第一種情況,該情況的說明如下情況一、存在SQL語(yǔ)句的關(guān)鍵字,且該SQL語(yǔ)句包含完整的操作內(nèi)容這樣的SQL語(yǔ)句執(zhí)行報(bào)文直接將完整的操作內(nèi)容攜帶在相應(yīng)的語(yǔ)句中,無需另行的處理即可確定相應(yīng)的操作內(nèi)容。在此種情況下,可以將SQL語(yǔ)句關(guān)鍵字定義為特征字符串進(jìn)行識(shí)別。識(shí)別到該操作報(bào)文后,直接提取完整的SQL語(yǔ)句進(jìn)行審計(jì)處理。如圖4所示,為使用一般SQL語(yǔ)句操作Oracle數(shù)據(jù)庫(kù)的報(bào)文,特征字符串為SQL語(yǔ)句關(guān)鍵字"select,,,對(duì)應(yīng)的SQLi吾句為"select*fromtesttablelwhereage=23;,,。另一方面,如果包含變量標(biāo)識(shí),則表示該SQL語(yǔ)句執(zhí)行報(bào)文使用了Pr印aredStatement模板,并且是使用該模板第一次訪問Oracle數(shù)據(jù)庫(kù),這是SQL語(yǔ)句執(zhí)行報(bào)文所對(duì)應(yīng)的處理過程的第二種情況,該情況的說明如下情況二、存在SQL語(yǔ)句的關(guān)鍵字,且該SQL語(yǔ)句包含變量標(biāo)識(shí),沒有包含完整的操作內(nèi)容這樣的SQL語(yǔ)句執(zhí)行報(bào)文沒有將完整的操作內(nèi)容攜帶在相應(yīng)的語(yǔ)句中,而是攜帶了相應(yīng)的變量標(biāo)識(shí),需要另行的處理才能確定相應(yīng)的操作內(nèi)容。在此種情況下,該操作對(duì)應(yīng)的報(bào)文中存在SQL語(yǔ)句關(guān)鍵字,可以將SQL語(yǔ)句關(guān)鍵字定義為特征字符串進(jìn)行識(shí)別。而在識(shí)別到該操作報(bào)文后,需要進(jìn)一步提取其中的SQL語(yǔ)句(SQL語(yǔ)句中存在變量標(biāo)識(shí)符“”),從而實(shí)現(xiàn)相應(yīng)的Pr印aredStatement模板處理流程。同樣如圖5所示,為使用Pr印aredStatement模板,第一次訪問Oracle數(shù)據(jù)庫(kù)的報(bào)文,特征字符串為SQL語(yǔ)句關(guān)鍵字“select”,對(duì)應(yīng)的SQL語(yǔ)句為“select*fromtesttablelwhereid_number=:1”。其中,“1”為第一個(gè)變量的占位符。識(shí)別到這樣的報(bào)文后,由于存在變量標(biāo)識(shí)符“”,需要進(jìn)行相應(yīng)的Pr印aredStatement模板處理流程。步驟S205、記錄該P(yáng)r印aredStatement模板編號(hào)以及具體的SQL語(yǔ)句模板信息,從當(dāng)前報(bào)文中提取每個(gè)變量的具體賦值還原到SQL語(yǔ)句中。對(duì)應(yīng)步驟S201中的驅(qū)動(dòng)協(xié)議類型的記錄結(jié)果,本步驟中記錄的PreparedStatement模板編號(hào)產(chǎn)生方式也存在具體的區(qū)別當(dāng)會(huì)話的驅(qū)動(dòng)協(xié)議類型為JDBC驅(qū)動(dòng)時(shí),如果信令碼為0x0347,則數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的客戶端確定數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào),可以按照一定的規(guī)則在該數(shù)據(jù)庫(kù)操作指令所在的報(bào)文中直接提取操作模板編號(hào),如果信令碼為0x035e,則數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器確定數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào),即在該數(shù)據(jù)庫(kù)服務(wù)器所回應(yīng)的報(bào)文中獲取操作模板編號(hào)。當(dāng)會(huì)話的驅(qū)動(dòng)協(xié)議類型為ODBC驅(qū)動(dòng)時(shí),數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器確定數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào),即在該數(shù)據(jù)庫(kù)服務(wù)器所回應(yīng)的報(bào)文中獲取操作模板編號(hào)。具體的處理方式在后續(xù)進(jìn)行說明,在此不再重復(fù)敘述。本步驟執(zhí)行完畢后,執(zhí)行步驟S207。步驟S206、使用當(dāng)前報(bào)文中攜帶的Pr印aredStatement模板編號(hào)查找對(duì)應(yīng)的SQL語(yǔ)句模板信息,并從當(dāng)前報(bào)文中提取每個(gè)變量的具體賦值還原到SQL語(yǔ)句中。這種情況表示該SQL語(yǔ)句執(zhí)行報(bào)文是應(yīng)用先前已經(jīng)記錄過的Pr印aredStatement模板,后續(xù)進(jìn)行Oracle數(shù)據(jù)庫(kù)訪問的數(shù)據(jù)流,這是SQL語(yǔ)句執(zhí)行報(bào)文所對(duì)應(yīng)的處理過程的第三種情況,該情況的說明如下情況三、不存在SQL語(yǔ)句的關(guān)鍵字,但存在當(dāng)前報(bào)文是SQL語(yǔ)句執(zhí)行報(bào)文的指示信息這樣的SQL語(yǔ)句執(zhí)行報(bào)文沒有將完整的操作內(nèi)容攜帶在相應(yīng)的語(yǔ)句中,而是攜帶了相應(yīng)的操作模板編號(hào),需要另行的處理才能確定相應(yīng)的操作內(nèi)容。在此種情況下,該操作對(duì)應(yīng)的報(bào)文中不存在SQL語(yǔ)句關(guān)鍵字,只存在Oracle執(zhí)行SQL語(yǔ)句的信令碼(即前述的當(dāng)前報(bào)文是SQL語(yǔ)句執(zhí)行報(bào)文的指示信息,如0x0347和0x035e)和Pr印aredStatement模板編號(hào),可以通過Oracle執(zhí)行SQL語(yǔ)句的信令碼進(jìn)行識(shí)別。識(shí)別到該操作報(bào)文后實(shí)現(xiàn)相應(yīng)的Pr印aredStatement模板處理流程。同樣如圖6所示,為使用同一Pr印aredStatement模板,后續(xù)訪問Oracle數(shù)據(jù)庫(kù)的報(bào)文,Oracle執(zhí)行SQL語(yǔ)句的信令碼為0x0347,表示該Oracle數(shù)據(jù)流是SQL語(yǔ)句執(zhí)行報(bào)文,PreparedStatement模板編號(hào)為0x02(前面的0x01表示模板編號(hào)占用的字節(jié)數(shù))。識(shí)別到該報(bào)文后,進(jìn)行相應(yīng)的Pr印aredStatement模板處理流程。步驟S207、對(duì)SQL語(yǔ)句進(jìn)行審計(jì)處理。具體的,對(duì)于前述的情況一中的一般的SQL語(yǔ)句操作,可以在本步驟中進(jìn)行直接的審計(jì)處理,在此不再具體說明。下面,以使用JDBC驅(qū)動(dòng)的會(huì)話中,信令碼為0347的報(bào)文為例,具體說明一下上述的情況二和情況三中的具體處理過程。如圖5所示,為使用JDBC驅(qū)動(dòng),應(yīng)用Pr印aredStatement模板,并第一次訪問Oracle數(shù)據(jù)庫(kù)對(duì)應(yīng)的關(guān)鍵報(bào)文。當(dāng)Oracle執(zhí)行SQL語(yǔ)句的信令碼為0x0347時(shí),PreparedStatement模板編號(hào)由客戶端指定,直接在該報(bào)文中獲取,具體如圖5所示,PreparedStatement模板編號(hào)位于0x0347向后偏移4個(gè)字節(jié)。圖5中對(duì)應(yīng)的Pr印aredStatement模板編號(hào)為0x02(前面的0x01表示模板編號(hào)占用的字節(jié)數(shù))。SQL語(yǔ)句模板為“select*fromtesttablelwhereid_number=:1”。其中“”為變量標(biāo)識(shí)符,“1”為該模板中的第一個(gè)變量占位符。在該報(bào)文的末尾存在變量賦值信息,固定以0x07開始。據(jù)此對(duì)該報(bào)文進(jìn)行還原后,進(jìn)行審計(jì)。如圖6所示,為使用JDBC驅(qū)動(dòng),同一Pr印aredStatement模板后續(xù)訪問Oracle數(shù)據(jù)庫(kù)對(duì)應(yīng)的關(guān)鍵報(bào)文。在該報(bào)文中不存在SQL語(yǔ)句,只存在Oracle執(zhí)行SQL語(yǔ)句的信令碼和Pr印aredStatement模板編號(hào)。Oracle執(zhí)行SQL語(yǔ)句的信令碼為0x0347,PreparedStatement模板編號(hào)為0x02(前面的0x01表示模板編號(hào)占用的字節(jié)數(shù))。如圖5所示,對(duì)應(yīng)的SQL語(yǔ)句模板為“select*fromtesttablelwhereid_number=:1”。同樣,在該報(bào)文的末尾存在變量賦值信息,固定以0x07開始。據(jù)此對(duì)該報(bào)文進(jìn)行還原后,進(jìn)行審計(jì)。對(duì)于使用Pr印aredStatement模板訪問Oracle數(shù)據(jù)庫(kù)的操作,經(jīng)過本模塊處理后精確還原出了具體執(zhí)行的SQL語(yǔ)句,送到審計(jì)模塊進(jìn)行處理。經(jīng)過上述的處理,最終得到了具體執(zhí)行的SQL語(yǔ)句信息,并配合相關(guān)信息生成審計(jì)結(jié)果,記入相關(guān)數(shù)據(jù)庫(kù)中,以便管理人員進(jìn)行查詢、分析等操作。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)通過應(yīng)用本發(fā)明的技術(shù)方案,能夠精確識(shí)別數(shù)據(jù)庫(kù)操作的內(nèi)容,可以實(shí)現(xiàn)完整的數(shù)據(jù)庫(kù)操作行為審計(jì)(包括一般SQL語(yǔ)句的審計(jì)和使用操作模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)),尤其是可以識(shí)別通過操作模板訪問數(shù)據(jù)庫(kù)的操作的內(nèi)容,可以根據(jù)相應(yīng)的操作模板還原相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容,并對(duì)相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容進(jìn)行審計(jì),真實(shí)還原每一個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的各種操作。為了實(shí)現(xiàn)本發(fā)明的技術(shù)方案,本發(fā)明還提出了一種數(shù)據(jù)庫(kù)審計(jì)設(shè)備。如圖7所示,為本發(fā)明提出的一種數(shù)據(jù)庫(kù)審計(jì)設(shè)備的結(jié)構(gòu)示意圖,具體包括識(shí)別模塊71,用于識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話,并在識(shí)別到對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話時(shí),進(jìn)一步識(shí)別對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令;判斷模塊72,與識(shí)別模塊71相連接,用于在識(shí)別模塊識(shí)別到對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令時(shí),判斷數(shù)據(jù)庫(kù)操作指令中是否存在SQL語(yǔ)句的關(guān)鍵字,并在存在SQL語(yǔ)句的關(guān)鍵字時(shí),進(jìn)一步判斷數(shù)據(jù)庫(kù)操作指令中是否包含變量標(biāo)識(shí);記錄模塊73,與判斷模塊72相連接,用于在判斷模塊72判斷存在變量標(biāo)識(shí)時(shí),記錄數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)和對(duì)應(yīng)的操作模板信息;查詢模塊74,與判斷模塊72和記錄模塊73相連接,用于在判斷模塊72判斷不存在SQL語(yǔ)句的關(guān)鍵字時(shí),根據(jù)數(shù)據(jù)庫(kù)操作指令中所攜帶的操作模板編號(hào),向記錄模塊73查詢對(duì)應(yīng)的操作模板信息;審計(jì)模塊75,與記錄模塊73和查詢模塊74相連接,用于在包含數(shù)據(jù)庫(kù)操作指令的報(bào)文中提取變量值,通過變量值替換記錄模塊73記錄的,或查詢模塊74查詢的操作模板信息中的變量標(biāo)識(shí),還原數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。在具體的應(yīng)用場(chǎng)景中,識(shí)別模塊71,具體用于根據(jù)DPI識(shí)別技術(shù)識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話;記錄模塊73,進(jìn)一步與識(shí)別模塊71相連接,用于在識(shí)別模塊71的識(shí)別結(jié)果為包含時(shí),記錄會(huì)話所對(duì)應(yīng)的會(huì)話信息和會(huì)話的驅(qū)動(dòng)協(xié)議類型;審計(jì)模塊75,進(jìn)一步與識(shí)別模塊71相連接,用于在識(shí)別模塊71的識(shí)別結(jié)果為不包含,放棄對(duì)報(bào)文進(jìn)行審計(jì)處理。進(jìn)一步的,記錄模塊73,還用于當(dāng)記錄的會(huì)話的驅(qū)動(dòng)協(xié)議類型為JDBC驅(qū)動(dòng)時(shí),根據(jù)信令碼的類型,記錄根據(jù)該會(huì)話所對(duì)應(yīng)的客戶端的指令所確定的,或根據(jù)該會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào);當(dāng)記錄的會(huì)話的驅(qū)動(dòng)協(xié)議類型為ODBC驅(qū)動(dòng)時(shí),記錄根據(jù)會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)。另一方面,審計(jì)模塊75,進(jìn)一步與判斷模塊72相連接,用于在判斷模塊72判斷數(shù)據(jù)庫(kù)操作指令中沒有包含變量標(biāo)識(shí)時(shí),根據(jù)SQL語(yǔ)句的關(guān)鍵字所對(duì)應(yīng)的操作內(nèi)容,對(duì)數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。在具體的應(yīng)用場(chǎng)景中,當(dāng)判斷模塊72判斷數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),查詢模塊74,還用于在后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中獲取數(shù)據(jù)庫(kù)操作指令中包含的操作模板編號(hào),并根據(jù)操作模板編號(hào),向記錄模塊73查詢對(duì)應(yīng)的操作模板信息;審計(jì)模塊75,用于在后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中提取變量值,替換操作模板信息中所包含的變量標(biāo)識(shí),還原數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)通過應(yīng)用本發(fā)明的技術(shù)方案,能夠精確識(shí)別數(shù)據(jù)庫(kù)操作的內(nèi)容,可以實(shí)現(xiàn)完整的數(shù)據(jù)庫(kù)操作行為審計(jì)(包括一般SQL語(yǔ)句的審計(jì)和使用操作模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)),尤其是可以識(shí)別通過操作模板訪問數(shù)據(jù)庫(kù)的操作的內(nèi)容,可以根據(jù)相應(yīng)的操作模板還原相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容,并對(duì)相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容進(jìn)行審計(jì),真實(shí)還原每一個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的各種操作。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通過硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是⑶-ROM,U盤,移動(dòng)硬盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施場(chǎng)景所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施場(chǎng)景的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施場(chǎng)景中的裝置中的模塊可以按照實(shí)施場(chǎng)景描述進(jìn)行分布于實(shí)施場(chǎng)景的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施場(chǎng)景的一個(gè)或多個(gè)裝置中。上述實(shí)施場(chǎng)景的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。上述本發(fā)明序號(hào)僅僅為了描述,不代表實(shí)施場(chǎng)景的優(yōu)劣。以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施場(chǎng)景,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。權(quán)利要求一種數(shù)據(jù)庫(kù)審計(jì)方法,其特征在于,具體包括以下步驟識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話;如果包含,識(shí)別所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令;判斷所述數(shù)據(jù)庫(kù)操作指令中是否存在SQL語(yǔ)句的關(guān)鍵字;如果存在SQL語(yǔ)句的關(guān)鍵字,判斷所述數(shù)據(jù)庫(kù)操作指令中是否包含變量標(biāo)識(shí);如果存在變量標(biāo)識(shí),記錄所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)和對(duì)應(yīng)的操作模板信息,并在所述包含數(shù)據(jù)庫(kù)操作指令的報(bào)文中提取變量值替換所述變量標(biāo)識(shí),還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì);當(dāng)所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),根據(jù)所述數(shù)據(jù)庫(kù)操作指令中所攜帶的操作模板編號(hào),查詢對(duì)應(yīng)的操作模板信息,還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。2.如權(quán)利要求1所述的方法,其特征在于,所述識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話,具體為根據(jù)DPI識(shí)別技術(shù)識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話;如果包含,記錄所述會(huì)話所對(duì)應(yīng)的會(huì)話信息和所述會(huì)話的驅(qū)動(dòng)協(xié)議類型,如果不包含,放棄對(duì)所述會(huì)話中的報(bào)文進(jìn)行審計(jì)處理。3.如權(quán)利要求2所述的方法,其特征在于,所述如果存在變量標(biāo)識(shí),記錄所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào),具體為當(dāng)所述會(huì)話的驅(qū)動(dòng)協(xié)議類型為JDBC驅(qū)動(dòng)時(shí),根據(jù)信令碼的類型,記錄根據(jù)所述會(huì)話所對(duì)應(yīng)的客戶端的指令所確定的,或根據(jù)所述會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào);當(dāng)所述會(huì)話的驅(qū)動(dòng)協(xié)議類型為ODBC驅(qū)動(dòng)時(shí),記錄所述會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器所確定的所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)。4.如權(quán)利要求1所述的方法,其特征在于,所述如果存在SQL語(yǔ)句的關(guān)鍵字,判斷所述數(shù)據(jù)庫(kù)操作指令中是否包含變量標(biāo)識(shí)之后,還包括如果判斷所述數(shù)據(jù)庫(kù)操作指令中沒有包含變量標(biāo)識(shí),則根據(jù)所述SQL語(yǔ)句的關(guān)鍵字所對(duì)應(yīng)的操作內(nèi)容對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。5.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),根據(jù)所述數(shù)據(jù)庫(kù)操作指令中所攜帶的操作模板編號(hào),查詢對(duì)應(yīng)的操作模板信息,還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì),具體包括當(dāng)后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),則在所述后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中獲取所述數(shù)據(jù)庫(kù)操作指令中包含的操作模板編號(hào);查詢所述操作模板編號(hào)所對(duì)應(yīng)的操作模板信息;在所述后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中提取變量值,替換所述操作模板信息中所包含的變量標(biāo)識(shí),還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。6.一種數(shù)據(jù)庫(kù)審計(jì)設(shè)備,其特征在于,具體包括識(shí)別模塊,用于識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話,并在識(shí)別到所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話時(shí),進(jìn)一步識(shí)別所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令;判斷模塊,與所述識(shí)別模塊相連接,用于在所述識(shí)別模塊識(shí)別到所述對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話中的數(shù)據(jù)庫(kù)操作指令時(shí),判斷所述數(shù)據(jù)庫(kù)操作指令中是否存在SQL語(yǔ)句的關(guān)鍵字,并在存在SQL語(yǔ)句的關(guān)鍵字時(shí),進(jìn)一步判斷所述數(shù)據(jù)庫(kù)操作指令中是否包含變量標(biāo)識(shí);記錄模塊,與所述判斷模塊相連接,用于在所述判斷模塊判斷存在變量標(biāo)識(shí)時(shí),記錄所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)和對(duì)應(yīng)的操作模板信息;查詢模塊,與所述判斷模塊和所述記錄模塊相連接,用于在所述判斷模塊判斷不存在SQL語(yǔ)句的關(guān)鍵字時(shí),根據(jù)所述數(shù)據(jù)庫(kù)操作指令中所攜帶的操作模板編號(hào),向所述記錄模塊查詢對(duì)應(yīng)的操作模板信息;審計(jì)模塊,與所述記錄模塊和所述查詢模塊相連接,用于在所述包含數(shù)據(jù)庫(kù)操作指令的報(bào)文中提取變量值,通過所述變量值替換所述記錄模塊記錄的,或所述查詢模塊查詢的操作模板信息中的變量標(biāo)識(shí),還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。7.如權(quán)利要求6所述的設(shè)備,其特征在于,所述識(shí)別模塊,具體用于根據(jù)DPI識(shí)別技術(shù)識(shí)別當(dāng)前系統(tǒng)所建立的會(huì)話中是否包含對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)操作會(huì)話;所述記錄模塊,進(jìn)一步與所述識(shí)別模塊相連接,用于在所述識(shí)別模塊的識(shí)別結(jié)果為包含時(shí),記錄所述會(huì)話所對(duì)應(yīng)的會(huì)話信息和所述會(huì)話的驅(qū)動(dòng)協(xié)議類型;所述審計(jì)模塊,進(jìn)一步與所述識(shí)別模塊相連接,用于在所述識(shí)別模塊的識(shí)別結(jié)果為不包含,放棄對(duì)所述報(bào)文進(jìn)行審計(jì)處理。8.如權(quán)利要求7所述的設(shè)備,其特征在于,所述記錄模塊,還用于當(dāng)記錄的所述會(huì)話的驅(qū)動(dòng)協(xié)議類型為JDBC驅(qū)動(dòng)時(shí),根據(jù)信令碼的類型,記錄根據(jù)所述會(huì)話所對(duì)應(yīng)的客戶端的指令所確定的,或根據(jù)所述會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào);當(dāng)記錄的所述會(huì)話的驅(qū)動(dòng)協(xié)議類型為ODBC驅(qū)動(dòng)時(shí),記錄根據(jù)所述會(huì)話所對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的指令所確定的所述數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的操作模板編號(hào)。9.如權(quán)利要求6所述的設(shè)備,其特征在于,所述審計(jì)模塊,進(jìn)一步與所述判斷模塊相連接,用于在所述判斷模塊判斷所述數(shù)據(jù)庫(kù)操作指令中沒有包含變量標(biāo)識(shí)時(shí),根據(jù)所述SQL語(yǔ)句的關(guān)鍵字所對(duì)應(yīng)的操作內(nèi)容,對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。10.如權(quán)利要求6所述的設(shè)備,其特征在于,具體包括當(dāng)所述判斷模塊判斷數(shù)據(jù)庫(kù)操作指令中不包含SQL語(yǔ)句的關(guān)鍵字時(shí),所述查詢模塊,還用于在所述后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中獲取所述數(shù)據(jù)庫(kù)操作指令中包含的操作模板編號(hào),并根據(jù)所述操作模板編號(hào),向所述記錄模塊查詢對(duì)應(yīng)的操作模板信息;所述審計(jì)模塊,用于在所述后續(xù)接收到的數(shù)據(jù)庫(kù)操作指令所對(duì)應(yīng)的報(bào)文中提取變量值,替換所述操作模板信息中所包含的變量標(biāo)識(shí),還原所述數(shù)據(jù)庫(kù)操作指令的內(nèi)容,并對(duì)所述數(shù)據(jù)庫(kù)操作指令進(jìn)行審計(jì)。全文摘要本發(fā)明公開了一種數(shù)據(jù)庫(kù)審計(jì)方法和設(shè)備,通過應(yīng)用本發(fā)明的技術(shù)方案,能夠精確識(shí)別數(shù)據(jù)庫(kù)操作的內(nèi)容,可以實(shí)現(xiàn)完整的數(shù)據(jù)庫(kù)操作行為審計(jì)(包括一般SQL語(yǔ)句的審計(jì)和使用操作模板訪問Oracle數(shù)據(jù)庫(kù)的審計(jì)),尤其是可以識(shí)別通過操作模板訪問數(shù)據(jù)庫(kù)的操作的內(nèi)容,可以根據(jù)相應(yīng)的操作模板還原相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容,并對(duì)相應(yīng)的數(shù)據(jù)庫(kù)操作內(nèi)容進(jìn)行審計(jì),真實(shí)還原每一個(gè)用戶對(duì)數(shù)據(jù)庫(kù)的各種操作。文檔編號(hào)G06F17/30GK101853289SQ201010182159公開日2010年10月6日申請(qǐng)日期2010年5月26日優(yōu)先權(quán)日2010年5月26日發(fā)明者吳淞,鄒文宇申請(qǐng)人:杭州華三通信技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1