《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 設(shè)計應用 > 數(shù)據(jù)庫自主安全防護技術(shù)的研究與實現(xiàn)
數(shù)據(jù)庫自主安全防護技術(shù)的研究與實現(xiàn)
來源:電子技術(shù)應用2011年第5期
喬建峰1, 王晨升2, 杜冀秦1, 朱廷劭3, 徐新國1
1. 信息產(chǎn)業(yè)部電子第六研究所,,北京 100083; 2. 北京郵電大學,,北京 100876,; 3. 中國科學院研究生院 信息科學與工程學院,北京 100080
摘要: 針對目前主流數(shù)據(jù)庫的安全防護功能配置方式不靈活,、不能應變需求的問題,,在HOOK技術(shù)的基礎(chǔ)上融入組態(tài)思想,設(shè)計并實現(xiàn)了一種適用于不同數(shù)據(jù)庫的自主安全防護系統(tǒng)(DSS),。在SQLITE上的相關(guān)實驗表明,,利用DSS完全可以實現(xiàn)獨立于特定數(shù)據(jù)庫的自主安全防護,大大提高了數(shù)據(jù)安全防護的靈活性,。
中圖分類號: 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


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

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

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

 

 

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

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

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

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。