劉達(dá)
摘 要:在網(wǎng)絡(luò)信息安全體系中,數(shù)據(jù)庫的安全保護(hù)最為關(guān)鍵,入侵檢測系統(tǒng)(IDS)是目前較為理想的數(shù)據(jù)庫安全工具。論文提出了一種數(shù)據(jù)庫入侵檢測方法,包含一種可反映同一個數(shù)據(jù)庫事務(wù)中SQL語句的關(guān)聯(lián)性的數(shù)據(jù)庫日志數(shù)據(jù)結(jié)構(gòu),以及采用樸素貝葉斯分類算法(NBC)的機(jī)器學(xué)習(xí)算法與入侵檢測算法。實(shí)驗(yàn)證明,論文提出的檢測系統(tǒng)具備較高的準(zhǔn)確率。
關(guān)鍵詞:入侵檢測;樸素貝葉斯分類算法;數(shù)據(jù)庫
1 引言
數(shù)據(jù)庫系統(tǒng)的安全保護(hù)機(jī)制有諸如用戶認(rèn)證、事務(wù)處理加密、數(shù)據(jù)水印與入侵檢測等。用戶認(rèn)證可阻止未授權(quán)用戶連接數(shù)據(jù)庫。事務(wù)處理加密可防止攻擊者破譯數(shù)據(jù)庫查詢語句。入侵檢測是在其他防護(hù)措施被繞過的情況下可盡早識別惡意入侵行為的技術(shù)。
數(shù)據(jù)庫入侵檢測有兩種模型,異常檢測與濫用檢測。異常檢測模型基于大量正常用戶行為的數(shù)據(jù)檔案,通過將用戶行為比對正常的用戶行為庫,如果有較明顯的差異,則將其定義為入侵行為。異常檢測實(shí)現(xiàn)的難點(diǎn)在于,建立完整的正常用戶行為庫有一定難度,將正常行為定義得太嚴(yán)格易于導(dǎo)致誤判,太寬松又將漏掉攻擊行為。濫用檢測則是比對用戶行為與典型攻擊行為庫,濫用檢測的不足在于僅能用于檢測已知的攻擊行為[1]。
本文在IDS系統(tǒng)的框架下提出了一種更有效率,適用于RBAC(基于角色的權(quán)限訪問控制)數(shù)據(jù)庫的異常檢測系統(tǒng)。本文提出的系統(tǒng)基于數(shù)據(jù)庫事務(wù)處理建立用戶行為庫,可以反映出同一事務(wù)處理中SQL語句之間的關(guān)系。
2 系統(tǒng)設(shè)計
本文提出一個為每個數(shù)據(jù)庫角色建立檔案,基于角色建立用戶行為庫,發(fā)現(xiàn)不符合該角色正常行為的即判斷為入侵行為的檢測方法。因?yàn)榛诮巧x用戶行為庫,所以其數(shù)據(jù)規(guī)模將遠(yuǎn)小于基于用戶定義的行為庫,因此本系統(tǒng)將有較高的可用性。
本文提出的系統(tǒng)實(shí)現(xiàn)難點(diǎn)主要在于,如何構(gòu)建一個可以反映正常用戶行為的用戶行為庫,如何利用這個用戶行為庫進(jìn)行基于角色的行為檢測。第二個問題是,如何通過數(shù)據(jù)庫日志文件構(gòu)建用戶行為庫。
2.1 數(shù)據(jù)庫日志文件處理
為了定義用戶行為,本系統(tǒng)使用數(shù)據(jù)庫日志做為分析用戶行為的原始數(shù)據(jù)。在數(shù)據(jù)庫日志文件中,每一個SQL查詢語句都是一條獨(dú)立的記錄,這些記錄必需被組合起來形成系統(tǒng)學(xué)習(xí)與分析所需的數(shù)據(jù)。本系統(tǒng)提出的方法是,將同一個數(shù)據(jù)庫事務(wù)(Transaction)中的SQL語句組織在一起成了一條記錄,代表基于特定角色的該用戶的行為。
為了構(gòu)建用戶行為數(shù)據(jù),系統(tǒng)必須將數(shù)據(jù)庫日志數(shù)據(jù)轉(zhuǎn)化為可以被分析的格式。因此,本文提出一種六個字段的數(shù)據(jù)結(jié)構(gòu)R(CMD、REL、ATT、REL2、ATT2、REST),其中CMD代表數(shù)據(jù)庫操縱語句,REL代表操縱語句涉及的字段,ATT代表操縱語句中涉及的屬性,REL2代表SQL語句選取的字段,ATT2代表SQL語句選取的屬性,REST代表SQL語句中可能存在的剩余部分。圖1說明了這種數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫日志文件之間的對應(yīng)關(guān)系。
圖2所示的數(shù)據(jù)庫模式中包含兩個關(guān)系集,G1 = {A1;B1; C1; D1} 和 G2 = {A2; B2; C2; D2}。用戶數(shù)據(jù)結(jié)構(gòu)的完整表達(dá)式為(CMD, REL[ ], ATT [ ][ ], REL2[ ], ATT2[ ][ ], REST[ ])。SCMD代表SQL語句中的第一個命令,REL[ ]是一個二進(jìn)制數(shù)組,如果SQL查詢語句對應(yīng)對該關(guān)系,取值為1,否則為0。ATT[ ][ ]是二維數(shù)組,ATT[i][j]取值為1說明SQL語句對應(yīng)了i字段的j屬性,否則為0。REL2[ ]是一個二進(jìn)制數(shù)組,果SQL查詢語句對應(yīng)對該關(guān)系,取值為1,否則為0。ATT2[ ][ ]是一個二進(jìn)制數(shù)組,ATT2[i][j] 取值為1說明SQL語句對應(yīng)了i字段的j屬性,否則為0。REST[ ]等于剩余SQL語句的長度,無內(nèi)容則值為NULL。
本文提出的這種數(shù)據(jù)結(jié)構(gòu)可以將不同的事務(wù)處理SQL語句轉(zhuǎn)化為同一格式的數(shù)據(jù),便于分析和統(tǒng)計,使得分類算法可以更準(zhǔn)確的識別異常行為。
2.2 分類算法
本文提出一種基于樸素貝葉斯分類的算法,貝葉斯算法采用的基于特征屬性條件概率的估算使得其學(xué)習(xí)模式和工作模式所需的運(yùn)算量都很小。
在學(xué)習(xí)模式下,首先必須提供一定量的數(shù)據(jù)庫日志樣本數(shù)據(jù),并以上文提出的數(shù)據(jù)節(jié)構(gòu)對日志文件進(jìn)行預(yù)處理,將其輸出為可以被算法分析的數(shù)據(jù)結(jié)構(gòu)。
樸素貝葉斯分類算法的工作流程可以由圖2表示。
根據(jù)樸素貝葉斯分類算法,將一個數(shù)據(jù)庫事務(wù)處理實(shí)例定義為x,將分類器定義為f(x),f(x)從有限的數(shù)據(jù)庫V中取值,訓(xùn)練樣本數(shù)據(jù)為Dt,一個實(shí)例包含若干個屬性(a1,…,an),目標(biāo)是預(yù)測出x所屬的類別[2]。
本文提出的算法為,計算出給定實(shí)例可能性最高的所屬分類Vmap,對于給定特征屬性(a1,…,an),算法公式為:
根據(jù)貝葉斯定理,可推導(dǎo)公式為:
因?yàn)榉帜甘浅A?,與Vj的取值無關(guān),所以可以從表達(dá)式中被忽略,僅需要對訓(xùn)練樣本V中Vj的出現(xiàn)頻率進(jìn)行統(tǒng)計,在樸素貝葉斯分類算法中,因?yàn)槊恳粋€特征屬性是條件獨(dú)立的,所以可以有以下推導(dǎo)。
因?yàn)镻(ai|vj)僅需要計算特征屬性在樣本數(shù)據(jù)中的頻率,故上述推導(dǎo)可極大地降低運(yùn)算量。
本算法的另一個問題是,當(dāng)訓(xùn)練樣本中的某一特征屬性字段e的發(fā)生幾率為nej,訓(xùn)練樣本中的類別大小為Dvj,當(dāng)nej的數(shù)值特別小,甚至為0時,將使得分類器的準(zhǔn)確性大大降低。為解決這個問題,本系統(tǒng)引入Laplace校準(zhǔn),即對沒類別下所有劃分的計數(shù)加1,這樣如果訓(xùn)練樣本集數(shù)量充分大時,并不會對結(jié)果產(chǎn)生影響,并且解決了上述頻率為0的問題[3]。
以格式化的日志文件做為樣本集,樸素貝葉斯算法可直接用于異常檢測。如果R代表角色集,那么根據(jù)給定觀察集(ci, PRi,PAi, SRi,SAi, RSQLi)所預(yù)測的角色為:
其中,N代表關(guān)系數(shù)據(jù)庫中的關(guān)系數(shù),Nc代表事務(wù)處理中SQL查詢語句的數(shù)量。在系統(tǒng)的每筆事務(wù)中,分類器都會預(yù)測出一個Rclass,如果Rclass與實(shí)際的角色不同,則檢測到異常。
3 結(jié)束語
本文提出了一種適用于RBAC數(shù)據(jù)庫的基于數(shù)據(jù)庫事務(wù)的異常檢測系統(tǒng)。系統(tǒng)通過機(jī)器學(xué)習(xí)機(jī)制讀取結(jié)構(gòu)化的數(shù)據(jù)庫日志文件以獲取正常事務(wù)處理的模式,基于角色的特性使得入侵檢測的易于實(shí)現(xiàn)。相較于基于單一查詢語句的入侵檢測系統(tǒng),本系統(tǒng)的準(zhǔn)確檢測率有明顯提高。
參考文獻(xiàn)
[1] 李冰冰.數(shù)據(jù)庫入侵檢測系統(tǒng)設(shè)計與實(shí)現(xiàn)[D].上海:復(fù)旦大學(xué),2009.8-9.
[2] 阿曼.樸素貝葉斯分類算法的研究與應(yīng)用[D].大連:大連理工大學(xué),2014.8-10.
[3] A.Kamra,E.Terzi,E.Bertino.Detecting anomalous access patterns in relational databases[J].Vldb Journal.2008 , 17 (5) :1063-1077.endprint