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

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

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

 

 

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

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

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

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

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