劉達


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