《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 數據庫自主安全防護技術的研究與實現
數據庫自主安全防護技術的研究與實現
來源:電子技術應用2011年第5期
喬建峰1, 王晨升2, 杜冀秦1, 朱廷劭3, 徐新國1
1. 信息產業(yè)部電子第六研究所,北京 100083,; 2. 北京郵電大學,,北京 100876,; 3. 中國科學院研究生院 信息科學與工程學院,北京 100080
摘要: 針對目前主流數據庫的安全防護功能配置方式不靈活,、不能應變需求的問題,,在HOOK技術的基礎上融入組態(tài)思想,設計并實現了一種適用于不同數據庫的自主安全防護系統(tǒng)(DSS),。在SQLITE上的相關實驗表明,,利用DSS完全可以實現獨立于特定數據庫的自主安全防護,大大提高了數據安全防護的靈活性,。
中圖分類號: TP309
文獻標識碼: A
文章編號: 0258-7998(2011)05-0126-04
Research and implementation of database discretionary safety technology
Qiao Jianfeng1,, Wang Chensheng2, Du Jiqin1,, Zhu Tingshao3,, Xu Xinguo1
1. NCSE, Beijing 100083, China; 2. Beijing University of Posts and Telecommunications,, Beijing 100876, China; 3. School of Information Science and Engineering,GUCAS, Beijng 100080, China
Abstract: To cope with the inflexible safety configuration in current mainstream database system, this paper proposes a discretionary safety system(DSS).It can not only protect the data, but also independent of any specific database system. DSS is based on hook technology. The experiment on SQLITE demonstrates that DSS is able to configure the independent and flexible safety system with a little bit more time complexity.
Key words : database security,;HOOK API,;access control,;database auditing,; SQLITE; DSS


    近年來,有關數據庫的安全事故不斷出現,,例如銀行內部數據信息泄露造成的賬戶資金失密等,。因此,高度重視數據庫安全防護很有必要,。但一直以來,,國內數據庫產業(yè)化發(fā)展緩慢,市場份額中較大一部分被國外大型數據庫企業(yè)占有,。這對于國內用戶而言,,信息的安全性、穩(wěn)定性等方面都會受到威脅,。由此,,用戶希望通過自主安全防護來加強系統(tǒng)的安全性。但出于商業(yè)利益及其他緣由,,國外企業(yè)對安全技術進行嚴格封鎖,,只提供針對特定數據庫的安全措施,很少提供公開調用的內核接口,,這些舉措都降低了安全防護的靈活性,,加大了自主安全保護的技術難度。此外,,應用需求正變得越來越復雜,,對數據庫安全防護配置的靈活性以及獨立性的要求也在提高。如有的系統(tǒng)涉及使用多個數據庫,,并且對每個數據庫的安防功能要求各不相同,。這樣,在保障整個系統(tǒng)安全的目標下就需要對每個數據庫進行專門配置管理,,不但維護難度很大,,而且工作也比較繁重。面對這些實際問題,,目前的數據庫系統(tǒng)自帶的安全防護配置方式已不能勝任,如何提出一個靈活獨立的安全防護系統(tǒng)迫在眉睫,。
1 相關安全防護技術介紹
    目前,數據庫系統(tǒng)面臨的主要威脅有:(1)對數據庫的不正確訪問引起數據庫數據的錯誤,。(2)為了某種目的,,故意破壞數據庫,。(3)非法訪問不該訪問的信息,且又不留痕跡,;未經授權非法修改數據,。(4)使用各種技術攻擊數據庫等。多年來,,人們在理論和實踐上對數據庫系統(tǒng)安全的研究做出了巨大的努力,,也取得了很多成果。參考文獻[1-2]介紹了保護數據庫安全的常用技術,,包括:存取管理技術,、安全管理技術、以及數據庫加密技術,,并給出了一些實現途徑,。其中,訪問控制和安全審計作為數據庫安全的主要保障措施受到了人們廣泛關注,,參考文獻[3]對訪問控制技術中的基本策略進行了總結,,給出了實現技術及各自的優(yōu)缺點。參考文獻[4]主要針對權限建模過程中的權限粒度問題做了分析,,并提出一個基于角色的訪問控制框架,。進入21世紀以后,訪問控制模型的研究重點開始逐漸由集中式封閉環(huán)境轉向開放式網絡環(huán)境,,一方面結合不同的應用,,對原有傳統(tǒng)模型做改進,另一方面,,也提出一些新的訪問控制技術和模型,,比較著名的有信任管理、數字版權管理和使用控制模型 [5],。審計通過對數據庫內活動的記錄和分析來發(fā)現異常并產生報警的方式來加強數據庫的安全性[6],。目前,在我國使用的商品化關系數據庫管理系統(tǒng)大都提供了C2級的審計保護功能,,但實現方式和功能側重有所不同,。周洪昊等人[7]分析了Oracle、SQL Server,、DB2,、Sybase的審計功能,分別從審計系統(tǒng)的獨立性,、自我保護能力,、全面性和查閱能力四個方面對審計功能做出改進[7]。參考文獻[8]則針對審計信息冗余,、審計配置方式死板以及數據統(tǒng)計分析能力不足等問題,,在數據庫系統(tǒng)已有的審計模塊基礎上,,重新設計和實現了一種新型的數據庫安全審計系統(tǒng)。
 但所有的這些工作都是從數據庫系統(tǒng)的角度出發(fā),,并沒有從本質上解決安全防護對數據庫系統(tǒng)的依賴性問題,,用戶還是很難對數據庫提供自主的安全防護功能。如果能將安全防護從數據庫管理系統(tǒng)中徹底獨立出來,,針對不同的應用需求允許用戶自己實現安全防護功能模塊并在邏輯上加入到數據庫應用系統(tǒng)中,,這樣問題也就迎刃而解了。
    通過以上分析,,本文提出一種獨立于具體數據庫,、可組態(tài)的安全防護模型,并給出具體的實現方法,。該模型將安全防護從數據庫完全獨立出來,在多數據庫應用中實現集中配置安防,,滿足用戶對于自主防護功能的需求,。并在開源的嵌入式數據庫產品SQLITE中做了功能測試,實驗結果表明,,該模型切實可行,,達到了預想的效果,既能實現對系統(tǒng)的保護,,又大大提高了系統(tǒng)的靈活性,。
2 自主安全防護系統(tǒng)的設計與實現
 自主安全防護系統(tǒng)DSS(Discretionary Safety System)的主要功能是阻止用戶對信息的非法訪問,在可疑行為發(fā)生時自動啟動預設的告警流程,,盡可能防范數據庫風險的發(fā)生,,在非法操作發(fā)生時,觸發(fā)事先設置好的防御策略,,實行阻斷,,實現主動防御,并按照設置對所發(fā)生的操作進行詳細記錄,,以便事后的分析和追查,。
2.1 系統(tǒng)結構
 在DSS中,安全管理員使用角色機制對用戶的權限進行管理,,通過制定安全策略來設置核心部件Sensor以及訪問控制部件,。核心部件Sensor偵聽用戶的數據庫操作請求,采用命令映射表將不同的命令映射為系統(tǒng)識別的命令,,提取出安全檢查所需要的信息,,發(fā)送到訪問控制模塊進行安檢。安檢通過了則允許用戶訪問數據庫,,否則拒絕訪問,,同時根據審計規(guī)則生成記錄存入審計日志,。DSS結構如圖1所示。

    DSS作為獨立的功能模塊主要通過向Sensor提供數據庫的調用接口的方式保障對數據庫信息安全合理地訪問,。系統(tǒng)有一個默認的訪問控制流程,,用戶也可以自己設定安全策略,系統(tǒng)自動生成相應訪問控制流程,。本文約定被訪問的對象為客體,,請求操作的用戶為主體,DSS訪問控制流程如圖2所示,。

2.2 系統(tǒng)實現
     系統(tǒng)實現主要分為系統(tǒng)數據字典設計,、用戶登錄與用戶管理、系統(tǒng)相關策略制定,、偵聽器(Sensor)的實現,、訪問控制以及日志審計六部分。原數據庫API信息(dll),、用戶的自主防護策略作為輸入,,Sensor核心一方面將用戶的防護策略融合在原數據庫的API接口中,另一方面記錄用戶對數據庫的操作并生成日志,,提供給用戶做審計,。用戶在使用過程中不需要修改原有系統(tǒng),即可實現自主防護,。系統(tǒng)核心Sensor的結構如圖3所示,。

 

 

    Sensor由API處理模塊、訪問控制模塊(Access Control),、Sensor核心模塊(Core),、注射模塊四部分組成。Core是Sensor的核心部件,,主要負責攔截接口,,解析并分離接口中的重要信息,使程序轉入自定義的安檢程序中執(zhí)行安全檢查,。Access Control組件實現不同級別的訪問控制,根據用戶提供的安檢信息,,組態(tài)出對應的安防模塊,并在合適的時候調用其進行訪問控制,。API(dll)主要將數據庫系統(tǒng)提供的接口信息,轉化為dll以便Sensor偵聽時使用,。Inject/Eject為Sensor提供遠程注射的功能。
    Core通過攔截對API的調用來實現定制功能,。程序在調用API函數之前,,首先要把API所在的動態(tài)鏈接庫載入到程序中;然后將API函數的參數,、返回地址(也就是函數執(zhí)行完后,,下一條語句的地址),、系統(tǒng)當前的環(huán)境(主要是一些寄存器的值)壓入系統(tǒng)調用棧;接著,,進入到API函數的入口處開始執(zhí)行API函數,,執(zhí)行過程中從系統(tǒng)調用棧中取出參數,執(zhí)行函數的功能,,返回值存放在EAX寄存器中,,最終從堆棧中取出函數的返回值并返回(參數壓棧的順序還要受到調用約定的控制,本文不詳細介紹),。
    舉例說明函數調用時堆棧的情況,。假設調用約定采用_stdcall,堆棧由高向低遞減,API為Int  func(int a, int b, int c),。系統(tǒng)調用棧的部分內容如表1所示,。

    攔截主要通過HOOK API技術實現,可以攔截的操作包括DOS下的中斷,、Windows中的API調用,、中斷服務、IFS和NDIS過濾等,。目前微軟提供了一個實現HOOK的函數庫Detours。其實現原理是:將目標函數的前幾個字節(jié)改為jmp指令跳轉到自己的函數地址,,以此接管對目標函數的調用,,并插入自己的處理代碼。
 HOOK API技術的實質是改變程序流程,。在CPU的指令集中,能夠改變程序流程的指令包括JMP,、CALL、INT,、RET,、RETF、IRET等,。理論上只要改變API入口和出口的任何機器碼,,都可以實現HOOK。但實際實現上要復雜得多,主要需要考慮如何處理好以下問題:(1)CPU指令長度,。在32 bit系統(tǒng)中,一條JMP/CALL指令的長度是5 B,,因此只需要替換API中入口處的前5 B的內容,否則會產生不可預料的后果,。(2)參數,。為了訪問原API的參數,需要通過EBP或ESP來引用參數,,因此需要明確HOOK代碼中此時的EBP/ESP的值,。(3)時機問題,。有些HOOK必須在API的開頭,如CreateFileA( ),。有些必須在API的尾部,,如RECV()。(4)程序上下文內容的保存,。在程序執(zhí)行中會涉及修改系統(tǒng)棧的內容,,因此注意保存棧中原有內容,以便還原,。(5)在HOOK代碼里盡量杜絕全局變量的使用,,以降低程序之間的耦合性。通過以上的分析,,整理出如圖4所示的實現的流程,。

 DSS與傳統(tǒng)數據庫的安全防護功能相比,具有以下特點:
 (1)獨立于具體的數據庫,。這種獨立性體現在:①DSS只需要數據庫提供其接口信息即可工作,。②支持不同標準的SQL語句,通過數據庫命令映射表可將非標準的SQL語句映射為系統(tǒng)設置的SQL命令,。③系統(tǒng)自身數據的物理存儲是獨立于數據庫的,。
    (2)靈活性和針對性的統(tǒng)一。用戶可以根據自己的需要配置針對特定應用的相關規(guī)則,。
    (3)完善的自我安全保護措施,。DSS只有數據庫安全管理員和安全審計員才能訪問。安全管理員和安全審計員是一類特殊的用戶,,他們只負責安全方面的操作,,而不能訪問數據庫中的數據。這與Oracle等的數據庫不同,在這些數據庫中,,DBA可以進行所有的操作,。DSS系統(tǒng)本身具有故障恢復能力,能使系統(tǒng)出現問題時恢復到一個安全的狀態(tài),。
 (4)完備的信息查閱和報警功能,。在DSS中,本文提供了便利的設計查閱工具,,方便用戶對系統(tǒng)進行監(jiān)控,。另外,用戶也可以自己定義報警條件和報警處理措施,,一旦滿足報警條件,,系統(tǒng)就會自動地做出響應。
3 實驗及結果分析
 DSS的開發(fā)主要采用VS 2005實現,開發(fā)完成后在一臺主頻為2.8 GHz、內存2 GB,、裝有Windows 2000操作系統(tǒng)的普通 PC機上對其進行了功能和性能的測試,,使用的數據庫是開源的嵌入式數據庫SQLite 3.6。為了搭建測試環(huán)境,,需要在SQLite中添加初始化系統(tǒng)自身的數據字典,,并開發(fā)應用程序。測試內容包括:登錄,、用戶管理,、Sensor、訪問控制,、日志審計以及增加DSS前后數據庫系統(tǒng)安全性變化等功能性測試和增加DSS系統(tǒng)后對數據庫性能的影響兩方面,。其中,性能測試主要從時間和資源的增加情況來說明,,針對不同數據庫對象分別在五個級別(20 000,、40 000、60 000,、80 000,、100 000)的數據上進行了插入和查詢操作測試。為了做好性能對比,,在SQLite中也添加了相同的訪問控制功能,記為Inline Processing,。插入操作的測試結果如圖5所示,查詢操作的測試結果如圖6所示。

    從功能測試結果可以看出,,DSS可以為數據庫系統(tǒng)提供自主防護,。從性能測試的結果中看出,查詢操作和插入操作耗時相差比較大,,這主要是SQLite工作方式引起的,在執(zhí)行用戶的插入操作時,,數據庫需將內存中的數據寫入磁盤數據庫文件中,,占用了一部分時間。而查詢時,,SQLite會將數據庫文件部分內容緩存起來,,加快了查詢的速度。另外,增加DSS會對性能有略微的影響,,但是它能實現對數據庫系統(tǒng)自主保護,。
    本文針對傳統(tǒng)數據庫安全防護功能配置不靈活的問題,提出了一種基于HOOK技術的數據庫通用安全防護系統(tǒng),。該系統(tǒng)的最大優(yōu)點在于,,它不受數據庫自身的約束,完全獨立于數據庫系統(tǒng),為用戶提供一種按需定制的功能,,不僅增加了安防配置的靈活性而且提高了通用性,,可以用于不同的數據庫系統(tǒng)中。在嵌入式數據庫SQLite上的實驗結果表明,,該系統(tǒng)在不影響原系統(tǒng)正常運行的前提下,,解決了數據庫面臨的“越權使用、權限濫用,、權限盜用”等安全威脅,,能滿足不同用戶的需求,適用于政府,、金融,、運營商、稅務,、教育及企業(yè)等所有使用數據庫的各個行業(yè),。
參考文獻
[1] 朱良根,雷振甲,,張玉清. 數據庫安全技術研究[J].計算機應用研究,,2004(9):127-129.
[2] 吳溥峰,張玉清.數據庫安全綜述[J]. 計算機工程,2006,32(12):85-88.
[3] 趙亮,,茅兵,,謝立. 訪問控制研究綜述[J].計算機應用研究,2004,(4):55-58.
[4] 施良輝. 基于角色的訪問控制框架設計及其應用[J]. 電腦應用技術,2007(70):22-26.
[5] 王兆祥.基于角色的使用控制模型研究[D]. 碩士學位論文,鄭州:中國人民解放軍信息工程大學,2006.
[6] Liu Lianzhong, Huang Qiang. A framework for database auditing[N]. 2009 Fourth International Conference on Computer Sciences and Convergence Information Technology, 2009.
[7] 周洪昊,張剡,柏文陽.安全審計系統(tǒng)的設計與實現[J]. 計算機應用研究,2004(7):105-107.
[8] 曹暉,王青青,馬義忠,等. 一種新型的數據庫安全審計系統(tǒng)[J]. 計算機工程與應用, 2007,43(5):163-165.

此內容為AET網站原創(chuàng),未經授權禁止轉載,。