《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 數據庫自主安全防護技術的研究與實現
數據庫自主安全防護技術的研究與實現
來源:電子技術應用2011年第5期
喬建峰1, 王晨升2, 杜冀秦1, 朱廷劭3, 徐新國1
1. 信息產業部電子第六研究所,北京 100083; 2. 北京郵電大學,北京 100876; 3. 中國科學院研究生院 信息科學與工程學院,北京 100080
摘要: 針對目前主流數據庫的安全防護功能配置方式不靈活、不能應變需求的問題,在HOOK技術的基礎上融入組態思想,設計并實現了一種適用于不同數據庫的自主安全防護系統(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


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

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

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

 

 

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

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

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

    從功能測試結果可以看出,DSS可以為數據庫系統提供自主防護。從性能測試的結果中看出,查詢操作和插入操作耗時相差比較大,這主要是SQLite工作方式引起的,在執行用戶的插入操作時,數據庫需將內存中的數據寫入磁盤數據庫文件中,占用了一部分時間。而查詢時,SQLite會將數據庫文件部分內容緩存起來,加快了查詢的速度。另外,增加DSS會對性能有略微的影響,但是它能實現對數據庫系統自主保護。
    本文針對傳統數據庫安全防護功能配置不靈活的問題,提出了一種基于HOOK技術的數據庫通用安全防護系統。該系統的最大優點在于,它不受數據庫自身的約束,完全獨立于數據庫系統,為用戶提供一種按需定制的功能,不僅增加了安防配置的靈活性而且提高了通用性,可以用于不同的數據庫系統中。在嵌入式數據庫SQLite上的實驗結果表明,該系統在不影響原系統正常運行的前提下,解決了數據庫面臨的“越權使用、權限濫用、權限盜用”等安全威脅,能滿足不同用戶的需求,適用于政府、金融、運營商、稅務、教育及企業等所有使用數據庫的各個行業。
參考文獻
[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] 周洪昊,張剡,柏文陽.安全審計系統的設計與實現[J]. 計算機應用研究,2004(7):105-107.
[8] 曹暉,王青青,馬義忠,等. 一種新型的數據庫安全審計系統[J]. 計算機工程與應用, 2007,43(5):163-165.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 综合亚洲欧美日韩一区二区 | 欧美三级做爰在线 | 久久国产精品歌舞团 | 精品国产免费观看一区 | aaa毛片免费观看 | 中文字幕一二区 | 美国免费三片在线观看 | 久久香蕉国产线看观看精品yw | 一级特黄a免费大片 | 99久久国产综合精品网成人影院 | 成人免费小视频 | 亚洲视频免费播放 | 精品国产一二三区 | 亚洲欧美日韩视频一区 | 欧美激情视频在线观看一区二区三区 | 精品欧美高清一区二区免费 | 欧美啊v在线观看 | 国产日产亚洲精品 | 亚洲欧美日韩高清在线看 | 无毛片| 萌白酱香蕉白丝护士服喷浆 | 99久久免费看国产精品 | 草草视频免费观看 | 青青操网站 | 欧美jizz18性欧美 | 亚洲视频在线网 | 97青草香蕉依人在线播放 | 国产精品国产自线在线观看 | 欧美很黄视频在线观看 | 欧美色xxxx | 国产福利一区二区三区 | 久久亚洲高清观看 | 免费特黄一级欧美大片在线看 | 国产亚洲精品久久久久久久网站 | 91人成亚洲高清在线观看 | 欧美xxxwww| 国产美女主播一级成人毛片 | 亚洲欧美视频一区 | 狼人总合狼人综合 | 亚欧在线视频 | 成人软件18免费网站 |