專利名稱:一種面向?qū)崟r數(shù)據(jù)庫的獨立透明型安全審計保護(hù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及安全審計技術(shù),特別是指一種適用并且獨立于實時數(shù)據(jù)庫的安全審計技術(shù)。
背景技術(shù):
實時數(shù)據(jù)庫作為工業(yè)企業(yè)信息化過程的基礎(chǔ),其廣泛應(yīng)用在電力、石化、控制系統(tǒng)中,這些系統(tǒng)所保存的大量信息需要被不同安全權(quán)限的多個用戶共享。在這些應(yīng)用中,事務(wù)和數(shù)據(jù)有不同的安全級別,直接/間接的非法信息訪問都有可能泄露國家機(jī)密、造成重大事故和經(jīng)濟(jì)損失。置身于當(dāng)今世界這個競爭異常激烈的舞臺,很多企業(yè)尤其是掌握領(lǐng)先技術(shù)的企業(yè),作為其技術(shù)實際體現(xiàn)的生產(chǎn)工藝往往是企業(yè)的根本利益,一些關(guān)鍵生產(chǎn)過程的流程工藝乃至運(yùn)行參數(shù)都有可能成為對手竊取的目標(biāo),如何保證這些數(shù)據(jù)的安全成為企業(yè)生存發(fā)展的前提。但是,實時數(shù)據(jù)庫的實時處理過程非常復(fù)雜,除了要滿足傳統(tǒng)數(shù)據(jù)庫的一致性需求外,它的時間限制是正確性標(biāo)準(zhǔn)的不可或缺的一個完整部分。它的性能目標(biāo)就是使錯過截止時間的事務(wù)數(shù)據(jù)減到最小,這造成了在實時數(shù)據(jù)庫中實時性和安全性是相互沖突的。也正是因為這個原因,傳統(tǒng)的實時數(shù)據(jù)庫很少或者根本沒有安全性限制保護(hù)和審計系統(tǒng)。這種薄弱的安全保護(hù)機(jī)制,存在很多漏洞,并不能阻擋所有的攻擊或者非法入侵,非法用戶可以通過系統(tǒng)的漏洞訪問到受保護(hù)的數(shù)據(jù)。另外,系統(tǒng)自身的完整性約束對于那些已經(jīng)通過授權(quán)認(rèn)證的誤操作控制能力很弱,這需要審計系統(tǒng)的幫助。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于為實時數(shù)據(jù)庫增加一種獨立自主的安全審計的方法,目標(biāo)是把安全審計與實時數(shù)據(jù)庫系統(tǒng)結(jié)合起來,進(jìn)一步加強(qiáng)實時數(shù)據(jù)庫的安全保護(hù)。為了達(dá)到上述目的,本發(fā)明提供一種增加安全審計的方法,該方法包括獨立透明型安全審計的加載和卸載方法;將安全審計中核心的、和實時數(shù)據(jù)庫服務(wù)性能關(guān)系密切的功能獨立出來,采用分離式部署提高安全審計整體性能,實現(xiàn)統(tǒng)一管理;通過劃分安全區(qū)實現(xiàn)基于角色的權(quán)限管理,結(jié)合特殊的二維權(quán)限表實現(xiàn)高效的訪問控制;粗細(xì)粒度結(jié)合的策略,基于接口導(dǎo)出序號的規(guī)則配置方式,根據(jù)配置信息,對訪問控制和審計進(jìn)行配置或修改配置,對于沒有新配置的默認(rèn)采用上一次的配置;按照不同階段設(shè)計不同的日志格式,特別的,通過位操作快速生成由兩個32位整數(shù)組成的原始日志信息;利用線程間消息傳遞方法將原始的日志信息發(fā)送給預(yù)處理線程,線程接收到原始日志信息后,進(jìn)行初步封裝形成預(yù)處理的日志記錄;管理控制中心得到預(yù)處理的日志記錄后,一方面進(jìn)行報警判斷,另一方面將其繼續(xù)解析生成人員可識別的日志記錄,并使用歸并排序?qū)⑺腥罩居涗洶磿r間進(jìn)行排序;引入緩沖池并對其進(jìn)行有效管理,將排好序的日志記錄存入緩沖池中,通過快操作提高寫日志文件的速度。為日志記錄創(chuàng)建B-樹索引,提高日志的查詢效率。較佳地,所述透明型安全審計的加載和卸載的方法包括需要加載時,啟動管理控制中心,使能偵聽器;需要卸載時,只需關(guān)閉管理控制中心即可;以實時數(shù)據(jù)庫導(dǎo)出給應(yīng)用系統(tǒng)的接口為切入點使得安全審計不依賴于具體的實時數(shù)據(jù)庫,通過為需要控制的接口提供對應(yīng)的安全保護(hù)函數(shù),安全審計加載后,使用HOOK IAT技術(shù)將接口地址替換為安全保護(hù)函數(shù),為實時數(shù)據(jù)庫增加安全審計功能。較佳地,所述的HOOK IAT技術(shù)實際屬于HOOK API技術(shù)中的一種,另外還有一種是直接將接口函數(shù)首地址的頭五個字節(jié)內(nèi)容改為機(jī)器碼形式的跳轉(zhuǎn)指令,跳轉(zhuǎn)地址即為安全保護(hù)函數(shù)的地址。這兩種技術(shù)相比,HOOK IAT效率最高,所以采用它。具體改寫修改接口地址的步驟包括使用遠(yuǎn)程線程注射技術(shù)將偵聽器注射到應(yīng)用系統(tǒng)進(jìn)程中,分析應(yīng)用系統(tǒng)程序的的進(jìn)程映像,從中找出加載的接口模塊并進(jìn)一步找出模塊接口在應(yīng)用系統(tǒng)程序,根據(jù)接口的導(dǎo)出序號直接確定接口在應(yīng)用系統(tǒng)導(dǎo)入地址表中的位置;用接口對應(yīng)的安全保護(hù)函數(shù)的地址替換接口地址;將接口地址保存起來,以便安檢通過后調(diào)用。較佳地,查找接口在應(yīng)用系統(tǒng)進(jìn)程中導(dǎo)入地址表的位置還有另一種方法根據(jù)接口的名字,使用Kernel32提供的GetProcAddress獲得接口的導(dǎo)入地址,然后在導(dǎo)入地址表中一一比較,直到在表中找到為止。很顯然,這種方法效率極其低下,故棄用之。較佳地,所述安全保護(hù)函數(shù)的構(gòu)造過程包括根據(jù)對應(yīng)的接口,可以在安全保護(hù)函數(shù)中直接確定用戶要做的操作;分析系統(tǒng)調(diào)用棧結(jié)構(gòu),使用匯編指令mov eax, dword
ptr [ebp+n]和mov dwordptr [pParam], eax從系統(tǒng)調(diào)用棧中--獲取接口的參數(shù)信息;根
據(jù)參數(shù)信息判斷是否開啟訪問控制開關(guān),如果開啟根據(jù)已獲得的參數(shù)信息查詢用戶的二維權(quán)限表,進(jìn)行快速權(quán)限校驗,校驗通過調(diào)用原接口,提供實時數(shù)據(jù)庫服務(wù),否則拒絕調(diào)用,如果沒有開啟直接調(diào)用原接口 ;判斷是否開啟審計開關(guān),如果開啟,將參數(shù)中的對象信息、操作信息以及接口執(zhí)行結(jié)果等通過與、或位運(yùn)算形成兩個32位的整數(shù)類型的原始日志記錄數(shù)據(jù),并作為消息發(fā)送給日志預(yù)處理線程。較佳地,所述二維權(quán)限表的構(gòu)造方法包括確定系統(tǒng)的動作集,作為權(quán)限表的列;獲取用戶擁有的角色,從角色中得到用戶涉及的安全區(qū),合并所有安全區(qū)中的點作為用戶相關(guān)對象,作為權(quán)限表的行;從角色中獲取用戶對安全區(qū)中點的可執(zhí)行的操作,并置表中對應(yīng)位置置1,不可執(zhí)行的操作在對應(yīng)位置置O ;表建立后再以點ID和動作位置作為鍵值為二維權(quán)限表建立Hash索引,使權(quán)限表具備隨機(jī)訪問的特性。較佳地,所述利用二維權(quán)限表進(jìn)行權(quán)限判斷的步驟包括根據(jù)點ID和操作位置直接從二維表中取出權(quán)限數(shù)據(jù),如果為I則安檢通過,否則安檢失敗。較佳地,所述生成的原始日志記錄格式為低32位記錄日志的主要信息,從高到低依次為對象標(biāo)識、動作標(biāo)識、操作結(jié)果、事件類型、對象類型及告警級別;高32位記錄操作錯誤碼,通過該錯誤碼可以獲取錯誤信息;較佳地,所述使用線程消息傳遞方法采集原始日志數(shù)據(jù)包括將原始日志信 息的低32位作為消息的wParam參數(shù),將高32位數(shù)據(jù)作為消息的IParam參數(shù),使用PostThreadMessage消息傳遞函數(shù)發(fā)送給日志信息預(yù)處理線程;
較佳地,所述初步封裝的步驟包括根據(jù)消息發(fā)送時間設(shè)置日志記錄的時間戳,并將其存入通信緩沖區(qū)中。當(dāng)緩沖區(qū)中的日志數(shù)據(jù)滿后,連同應(yīng)用系統(tǒng)ip地址、程序名、計算機(jī)名、用戶id等信息通過管道、共享內(nèi)存、socket等通訊方式發(fā)送給管理控制中心;較佳地,所述采用分離式部署提高安全審計整體性能包括把安全審計功能分為兩部分,將其中最直接影響實時數(shù)據(jù)庫服務(wù)性能也是比較核心的訪問控制和日志信息采集獨立出來作為偵聽器,將剩余比較耗時的功能如配置管理、日志文件讀寫、日志分析、界面支持等作為管理控制中心。這樣部署通過操作分離既提高了安全審計的可擴(kuò)展性,又能最大程度的滿足實時數(shù)據(jù)庫對時間的要求。較佳地,所述劃分安全區(qū)實現(xiàn)基于角色的權(quán)限管理包括角色是建立在系統(tǒng)中劃分的安全區(qū)之上,角色和某個或某些安全區(qū)對應(yīng),它描述了擁有該角色的用戶可以對安全區(qū)內(nèi)點所做的操作;安全區(qū)是認(rèn)為劃分的若干區(qū)域,具體可以根據(jù)對象邏輯功能進(jìn)行劃分 也可以根據(jù)對象所在物理區(qū)域如對象所屬工段、車間進(jìn)行劃分等;采用基于角色的權(quán)限管理方式,系統(tǒng)安全員可以給用戶賦予相應(yīng)的角色使用戶具有特定的訪問權(quán)限,當(dāng)有對象需要保護(hù)時,根據(jù)保護(hù)要求建立一個安全區(qū),將他們安全區(qū)中。用戶訪問這些受保護(hù)對象時,會進(jìn)行安全區(qū)校驗并以此來限制用戶對這些對象的操作。較佳地,所述粗細(xì)粒度結(jié)合的策略及安全靈活的規(guī)則配置方式包括安全員根據(jù)系統(tǒng)對操作的限定,制定訪問控制規(guī)則,決定對哪些操作進(jìn)行訪問控制。審計從主體、客體、事件和特定程序三個角度分別定義了基于主體、基于客體、基于事件以及基于特定程序的審計條件,再加上用戶和執(zhí)行結(jié)果,這五種條件組成一條審計規(guī)則,凡是與過濾規(guī)則相匹配的事件才可以被審計。策略規(guī)則制定好后,以接口的導(dǎo)出序號為依據(jù),偵聽器對接口進(jìn)行HOOK配置,考慮到接口個數(shù)一般不多,足以用一個30位的二進(jìn)制數(shù)來表示,所以使用序號的高2位來表示審計和訪問控制開關(guān)的打開情況,配置完接口后,開啟或關(guān)閉相應(yīng)接口的審計、訪問控制開關(guān);較佳地,所述進(jìn)行歸并排序主要由于從偵聽器發(fā)送過來的日志數(shù)據(jù)的時間并不一定和到達(dá)先后一致,但每個偵聽器發(fā)送過來的數(shù)據(jù)肯定是按時間有序的,所以要使整體數(shù)據(jù)有序,找們只需要進(jìn)行歸并排序就可以;較佳地,所述引入緩沖池并有效管理包括管理控制中心初始化時建立一個擁有一個內(nèi)存塊的內(nèi)存池,內(nèi)存塊包含一些大小相等的內(nèi)存頁面,內(nèi)存頁面作為內(nèi)存分配的最小單元;通過使用位圖來管理所有未分配的內(nèi)存頁面,當(dāng)出現(xiàn)申請頁面時時,根據(jù)位圖查找到第一個空閑的內(nèi)存頁面并分配出去,如果沒有空閑頁面時,利用鏈?zhǔn)絃RU置換算法,回收一個內(nèi)存頁并分配,當(dāng)發(fā)生頁面置換的頻率達(dá)到設(shè)定的閾值時,重新分配一個內(nèi)存塊。為了提高內(nèi)存頁面數(shù)據(jù)的命中率以及寫日志文件的速度,將日志文件也劃分為一頁一頁的,通過頁表項建立文件頁和內(nèi)存頁之間的關(guān)系,實現(xiàn)快速I/O; —個內(nèi)存頁面可能出現(xiàn)同時被讀和寫,為了保證數(shù)據(jù)的一致性這就需要進(jìn)行同步保護(hù),不同粒度的同步對性能的影響是不同的,根據(jù)日志數(shù)據(jù)具有只讀的特性,盡量將對內(nèi)存頁的讀寫操作分開,故把內(nèi)存頁面劃分為可用內(nèi)存頁面集、回寫內(nèi)存頁面集、可置換內(nèi)存頁面集三個集合,這三個集合各自由一個靜態(tài)的鏈表來管理。卸載安防審計保護(hù)后,系統(tǒng)現(xiàn)將需要回寫到日志文件的內(nèi)存頁寫入日志文件中,然后回收所有內(nèi)存,并銷毀緩沖池;較佳地,所屬頁面集的描述為可用內(nèi)存頁面集包含的頁面是可以被申請使用的,也就是空閑頁面集,頁面被申請后,根據(jù)用途會被轉(zhuǎn)移到不同的集合中;回寫內(nèi)存頁面集包含的那些追加數(shù)據(jù)或有數(shù)據(jù)修改的頁面,這些頁面會有歸檔線程定期寫回到文件中,當(dāng)頁面寫滿且歸檔后,會轉(zhuǎn)移到可置換內(nèi)存頁面集中;可置換內(nèi)存頁面集中的頁面主要用于提高日志信息查詢。在內(nèi)存頁面用完后,通過LRU置換策略將最近未使用的頁面轉(zhuǎn)換出去。
圖I所示為本發(fā)明提供的為實時數(shù)據(jù)庫增加透明型安全審計保護(hù)的示意圖;圖2所示為本發(fā)明實施例一中安全保護(hù)函數(shù)的構(gòu)造流程圖;圖3所示為本發(fā)明實施例二中二維權(quán)限表的構(gòu)造過程圖;圖4所示為本發(fā)明實施例二中使用二維權(quán)限表進(jìn)行訪問控制的流程圖;
圖5所示為本發(fā)明實施例三中日志數(shù)據(jù)生成、處理、存儲的過程圖。圖I所示為本發(fā)明的整體框架具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下面舉具體實施例,對本發(fā)明作進(jìn)一步詳細(xì)的說明。本發(fā)明為實時數(shù)據(jù)庫增加獨立透明型安全審計保護(hù)的方法中,當(dāng)啟動安全審計功能之后,通過遠(yuǎn)程線程注射在應(yīng)用系統(tǒng)中加入偵聽器。根據(jù)安全員與審計員對訪問控制和審計配置的策略規(guī)則,將應(yīng)用系統(tǒng)進(jìn)程映像中相關(guān)接口的地址替換為安全保護(hù)函數(shù)的地址,對用戶的操作進(jìn)行限制,并生成相應(yīng)的日志記錄信息。在本發(fā)明中為實時數(shù)據(jù)庫增加安全審計時,主要考慮三個因素,一是對實時數(shù)據(jù)庫服務(wù)性能的影響,二是功能自身的獨立透明,三是功能自身的安全性及高效性。對服務(wù)性能影響的考慮是最重要的,對于實時數(shù)據(jù)庫而言,減少錯過截止期的事務(wù)數(shù)量是基本要求,如果在增加安全審計后,使其性能有明顯的降低,對安全保護(hù)再好也是不可取的。在影響較小的前提下,需要考慮增加功能對用戶帶來的影響,采用獨立透明型安全審計,可以在用戶基本不受影響的情況下完成功能的增加。另外,在設(shè)計時,考慮方法本身的高效性和安全性也可以間接地增加實時數(shù)據(jù)庫的安全減少對服務(wù)性能的影響。實施例一圖I給出了為實時數(shù)據(jù)庫增加透明型安全審計保護(hù)的示意圖。增加安全審計之前,應(yīng)用系統(tǒng)可以通過接口直接訪問實時數(shù)據(jù)庫,其操作不受任何限制,這對于數(shù)據(jù)保密性高的應(yīng)用中是非常危險,如圖I中黑字所示的數(shù)據(jù)流。增加安全審計之后,其功能分為兩部分管理控制中心和偵聽器,如圖I顏色加重部分所示。管理控制中心一般隨實時數(shù)據(jù)庫一起啟動,主要負(fù)責(zé)管理配置、日志讀寫與處理、界面支持等。默認(rèn)狀況下,訪問控制和審計的開關(guān)是關(guān)閉的,需要有安全管理員和審計管理員開啟。另外系統(tǒng)管理員可以設(shè)定安防服務(wù)器的默認(rèn)配置。未開啟安檢和審計開關(guān)時,應(yīng)用程序可以通過實時數(shù)據(jù)庫的接口沒有任何限制的訪問實時數(shù)據(jù)庫。開關(guān)開啟后,會執(zhí)行相應(yīng)的權(quán)限校驗和審計記錄。在安檢開關(guān)開啟的狀態(tài)下,管理控制中心會檢查應(yīng)用系統(tǒng)是否為受信任的程序。如果是受信任的程序則不對其進(jìn)行訪問控制,只是根據(jù)審計規(guī)則記錄日志,及時發(fā)現(xiàn)其對實時數(shù)據(jù)庫產(chǎn)生誤操作。如果是非受信任的程序,則等待sensor發(fā)來的登錄成功消息。在沒收到消息之前,安防服務(wù)器會偵聽實時數(shù)據(jù)庫數(shù)據(jù)傳輸?shù)亩丝?,并且屏蔽掉未登錄用?通過IP判斷,登錄用戶的IP會被管理控制中心保存在活躍用戶信息鏈表中)發(fā)送來的請求操作信息,并提示用戶運(yùn)行sensor登錄。成功登陸后,管理控制中心會將用戶權(quán)限表及配置信息發(fā)送給sensor, sensor據(jù)此進(jìn) 行接口配置和訪問控制。此時,應(yīng)用程序?qū)崟r數(shù)據(jù)庫的訪問流程發(fā)生了變化,它的操作請求首先會經(jīng)訪問控制進(jìn)行權(quán)限校驗,如果校驗成功則調(diào)用實時數(shù)據(jù)庫的服務(wù),并根據(jù)審計策略決定是否采集審計信息。如果權(quán)限校驗未通過,則拒絕應(yīng)用程序的訪問請求,并生成日志記錄交由預(yù)處理線程對其預(yù)處理并存放在通信緩沖區(qū)中,最后將預(yù)處理日志信息交給管理控制中心進(jìn)行處理。如圖I中,紅字所示的數(shù)據(jù)流。圖2為實施例一中安全保護(hù)函數(shù)的構(gòu)造示意圖。如圖2所示,構(gòu)造安全保護(hù)函數(shù)的構(gòu)造過程包括步驟201,根據(jù)對應(yīng)的接口,可以在安全保護(hù)函數(shù)中直接確定一些已知信息,如用戶要做的操作、事件類型、對象類型等;步驟202,分析系統(tǒng)調(diào)用棧的結(jié)構(gòu),使用匯編指令mov eax, dword ptr [ebp+n]和mov dword ptr [pParam], eax從系統(tǒng)調(diào)用棧中--獲取接口的參數(shù)信息;步驟203,判斷訪問控制開關(guān)是否開啟,如果開啟進(jìn)入步驟204,否則進(jìn)入步驟208 ;步驟204,根據(jù)隱含的安全信息以及從參數(shù)中獲取的對象信息,利用二維權(quán)限表進(jìn)行訪問控制判斷;步驟205,根據(jù)訪問控制判斷的結(jié)果,如果允許進(jìn)入206,否則進(jìn)入步驟209 ;步驟206,以安檢函數(shù)地址為鍵值,通過hash函數(shù)找到原接口的地址,調(diào)用原接口為應(yīng)用系統(tǒng)提供服務(wù);步驟207,判斷審計開關(guān)是否開啟,如果開啟進(jìn)入步驟209,否則安全保護(hù)函數(shù)結(jié)束;步驟208,直接調(diào)用原接口,為應(yīng)用系統(tǒng)服務(wù)。因為只要對接口進(jìn)行hook操作,也就意味著,針對接口要么開啟了訪問控制開關(guān),要么開啟了審計開關(guān),要么兩個開關(guān)都打開;步驟209,根據(jù)制定的審計規(guī)則決定是否生成原始日志記錄;如果需要進(jìn)入210,否則安全保護(hù)函數(shù)結(jié)束;步驟210,通過與、或位運(yùn)算將日志記錄映射到64位的整數(shù)上,并用兩個32位整數(shù)存儲,作為線程消息的數(shù)據(jù)寄送給日志預(yù)處理線程。實施例二 實施例二主要描述適用于實時數(shù)據(jù)庫的訪問控制方法圖3為實例二中二維權(quán)限表構(gòu)造流程圖步驟301,確定系統(tǒng)的動作集,作為權(quán)限表的列。步驟302,獲取用戶擁有的角色。步驟303,從角色中得到用戶涉及的安全區(qū),合并所有安全區(qū)中的點作為用戶相關(guān)對象,作為權(quán)限表的行;
步驟304,從角色中獲取用戶對安全區(qū)中點的可執(zhí)行的操作,并置表中對應(yīng)位置置1,不可執(zhí)行的操作在對應(yīng)位置置O ;步驟305,表建立后再以點ID作為鍵值為二維權(quán)限表建立行級Hash索引,散列函數(shù)采用除留取余法,通過對操作進(jìn)行編號對列建立索引,使權(quán)限表具備隨機(jī)訪問的特性;圖4為實例二中使用二維權(quán)限表進(jìn)行訪問控制的示意圖。步驟401,從安全保護(hù)函數(shù)中獲取參數(shù)、操作等信息,作為訪問控制中的對象和動作;步驟402,根據(jù)對象ID,動作編號直接查詢二維權(quán)限表,如果找到對應(yīng)項,進(jìn)入步驟403,否則拒絕用戶的操作請求;
步驟403,判斷對應(yīng)的表項值是否為1,為I訪問控制通過,否則拒絕用戶的操作;實施例三圖5為日志記錄產(chǎn)生、處理、存儲的過程示意圖。步驟501,將安全保護(hù)函數(shù)中獲取的參數(shù)信息、操作執(zhí)行結(jié)果、已知信息,轉(zhuǎn)化為整數(shù)形式,其中對象使用id表示,動作通過位置表示,類型數(shù)據(jù)編號存儲;步驟502,通過位運(yùn)算將日志記錄映射到一個64位的整數(shù)上,使用兩個無符號整形存儲,具體格式為低32位記錄日志的主要信息,從高到低依次為對象標(biāo)識、動作標(biāo)識、操作結(jié)果、事件類型、對象類型及告警級別;高32位記錄操作錯誤碼,通過該錯誤碼可以獲取錯誤信息。步驟503,原始記錄生成后,將日志數(shù)據(jù)以線程消息數(shù)據(jù)參數(shù)的形式通過線程消息傳遞方法將數(shù)據(jù)寄送到日志預(yù)處理線程;步驟504,預(yù)處理線程接收到原始日志記錄后,根據(jù)消息發(fā)送時間設(shè)置日志記錄的時間戳,并將其存入通信緩沖區(qū)中;步驟505,當(dāng)緩沖區(qū)中的日志數(shù)據(jù)滿后,連同應(yīng)用系統(tǒng)ip地址、程序名、計算機(jī)名、用戶id等信息,形成預(yù)處理的日志記錄;步驟506,通過管道、共享內(nèi)存、socket等方式發(fā)送給管理控制中心;步驟507,管理控制中心得到預(yù)處理的日志記錄后,一方面進(jìn)行報警判斷,另一方面將其繼續(xù)解析生成人員可識別的日志記錄,并使用歸并排序?qū)⑺腥罩居涗洶磿r間進(jìn)行排序;步驟508,通過引入緩沖池并使用分頁機(jī)制實現(xiàn)文件快操作;以上所述的增加透明型安全審計的方法可以應(yīng)用于不同的實時數(shù)據(jù)庫系統(tǒng)中,另外經(jīng)過稍加改動,如在安全保護(hù)函數(shù)中增加對sql語句的解析等,同樣可以通過該方法為傳統(tǒng)的關(guān)系型數(shù)據(jù)增加透明型的安全審計保護(hù)。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種面向?qū)崟r數(shù)據(jù)庫的獨立透明型安全審計保護(hù)的方法,其特征在于,該方法包括 獨立透明型安全審計保護(hù)的加載和卸載方法; 把安全審計功能分為兩部分,將其中最直接影響實時數(shù)據(jù)庫服務(wù)性能也是比較核心的訪問控制和日志信息采集獨立出來作為偵聽器,將剩余比較耗時的功能如配置管理、日志文件讀寫、日志分析、界面支持等作為管理控制中心,采用分離式部署提高安全審計整體性能并實現(xiàn)配置管理的統(tǒng)一; 通過劃分安全區(qū)實現(xiàn)基于角色的權(quán)限管理,在此基礎(chǔ)上結(jié)合特殊的二維權(quán)限表實現(xiàn)高效的訪問控制; 粗細(xì)粒度結(jié)合的策略,基于接口導(dǎo)出序號的規(guī)則配置方式,根據(jù)配置信息,對訪問控制和審計進(jìn)行配置或修改配置,對于沒有新配置的默認(rèn)采用上一次的配置; 分階段設(shè)計不同的日志格式,通過位操作快速生成由兩個32位整數(shù)組成的原始日志信息;利用線程間消息傳遞方法將原始的日志信息發(fā)送給預(yù)處理線程,線程接收到原始日志信息后,進(jìn)行初步封裝形成預(yù)處理的日志記錄;得到預(yù)處理的日志記錄后,一方面進(jìn)行報警判斷,另一方面將其繼續(xù)解析生成人員可識別的日志記錄,并使用歸并排序?qū)⑺腥罩居涗洶磿r間進(jìn)行排序; 引入緩沖池并對其進(jìn)行有效管理,將排好序的日志記錄存入緩沖池中,通過快操作提高寫日志文件的速度。為日志記錄創(chuàng)建B-樹索引,提高日志的查詢效率。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,以實時數(shù)據(jù)庫導(dǎo)出給應(yīng)用系統(tǒng)的接口為切入點使得安全審計不依賴于具體的實時數(shù)據(jù)庫。需要加載時,啟動管理控制中心,使能偵聽器;需要卸載時,只需關(guān)閉管理控制中心即可;通過為需要控制的接口提供對應(yīng)的安全保護(hù)函數(shù),在安全審計加載后,使用HOOK技術(shù)安全保護(hù)函數(shù)地址替換應(yīng)用系統(tǒng)進(jìn)程中對應(yīng)接口的地址,為實時數(shù)據(jù)庫增加安全審計功能。
具體根據(jù)接口的導(dǎo)出序號查找接口在映像導(dǎo)入地址表中的位置,使用HOOK IAT技術(shù)完成地址替換工作。查找接口在導(dǎo)入地址表中的位置還有另一種方法首先根據(jù)接口的名字,使用Kernel32提供的GetProcAddress獲得接口的導(dǎo)入地址,然后在導(dǎo)入地址表中--比較,直到在表中找到為止。很顯然,這種方法效率極其低下,故棄用。使用的HOOK IAT實際屬于HOOK API技術(shù)中的一種,另一種是直接將接口函數(shù)首地址的頭五個字節(jié)內(nèi)容改為機(jī)器碼形式的跳轉(zhuǎn)指令,跳轉(zhuǎn)地址即為安全保護(hù)函數(shù)的地址。這兩種技術(shù)相比,HOOK IAT效率最聞,所以米用它。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述接口對應(yīng)的安全保護(hù)函數(shù)的構(gòu)造過程為根據(jù)對應(yīng)的接口,可以在安全保護(hù)函數(shù)中直接確定一些已知信息,如用戶要做的操作、事件類型、對象類型等;分析系統(tǒng)調(diào)用棧的結(jié)構(gòu),使用匯編指令mov eax, dwordptr [ebp+n]和mov dword ptr [pParam], eax從系統(tǒng)調(diào)用棧中--獲取接口的參數(shù)信息;判斷是否開啟訪問控制開關(guān),如果開啟根據(jù)已獲得的參數(shù)信息查詢用戶的二維權(quán)限表,進(jìn)行快速權(quán)限校驗,校驗通過調(diào)用原接口,提供實時數(shù)據(jù)庫服務(wù),否則拒絕調(diào)用,如果沒有開啟直接調(diào)用原接口 ;判斷是否開啟審計開關(guān),如果開啟,將參數(shù)中的對象信息、操作信息以及接口執(zhí)行結(jié)果等通過與、或位運(yùn)算形成兩個32位的整數(shù)類型的原始日志記錄數(shù)據(jù),并作為消息發(fā)送給日志預(yù)處理線程。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述借助劃分安全區(qū)實現(xiàn)基于角色的權(quán)限管理進(jìn)一步包括 角色是建立在系統(tǒng)中劃分的安全區(qū)之上,角色和某個或某些安全區(qū)對應(yīng),它描述了擁有該角色的用戶可以對安全區(qū)內(nèi)點所做的操作;安全區(qū)是認(rèn)為劃分的若干區(qū)域,具體可以根據(jù)對象邏輯功能進(jìn)行劃分也可以根據(jù)對象所在物理區(qū)域如對象所屬工段、車間進(jìn)行劃分等;采用基于角色的權(quán)限管理方式,系統(tǒng)安全員可以給用戶賦予相應(yīng)的角色使用戶具有特定的訪問權(quán)限,當(dāng)有對象需要保護(hù)時,根據(jù)保護(hù)要求建立一個安全區(qū),將他們安全區(qū)中。用戶訪問這些受保護(hù)對象時,會進(jìn)行安全區(qū)校驗并以此來限制用戶對這些對象的操作。
5.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述二維權(quán)限表的生成步驟包括 確定系統(tǒng)的動作集,作為權(quán)限表的列; 獲取用戶擁有的角色,從角色中得到用戶涉及的安全區(qū),合并所有安全區(qū)中的點作為用戶相關(guān)對象,作為權(quán)限表的行; 從角色中獲取用戶對安全區(qū)中點的可執(zhí)行的操作,并置表中對應(yīng)位置置1,不可執(zhí)行的操作在對應(yīng)位置置O ; 表建立后再以點ID作為鍵值為二維權(quán)限表建立行級Hash索引,散列函數(shù)采用除留取余法,通過對操作進(jìn)行編號對列建立索引,使權(quán)限表具備隨機(jī)訪問的特性; 在安全檢查函數(shù)中進(jìn)行權(quán)限判斷時,直接根據(jù)點ID和操作位置從二維表中取出權(quán)限數(shù)據(jù),如果為I則安檢通過,否則安檢失敗。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述策略和規(guī)則配置包括安全員根據(jù)系統(tǒng)對操作的限定,制定訪問控制規(guī)則,決定對哪些操作進(jìn)行訪問控制。審計從主體、客體、事件和特定程序三個角度分別定義了基于主體、基于客體、基于事件以及基于特定程序的審計條件,再加上用戶和執(zhí)行結(jié)果,這五種條件組成一條審計規(guī)則,凡是與過濾規(guī)則相匹配的事件才可以被審計。策略規(guī)則制定好后,以接口的導(dǎo)出序號為依據(jù),偵聽器對接口進(jìn)行HOOK配置,考慮到接口個數(shù)一般不多,足以用一個30位的二進(jìn)制數(shù)來表示,所以使用序號的高2位來表示審計和訪問控制開關(guān)的打開情況,配置完接口后,開啟或關(guān)閉相應(yīng)接口的審計、訪問控制開關(guān);
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述關(guān)于日志數(shù)據(jù)的處理共分為三個階段,每個階段中日志數(shù)據(jù)均有自己的格式、存儲方法、傳遞方式,具體包括 日志信息生成階段。將安全保護(hù)函數(shù)中獲取的參數(shù)信息、操作執(zhí)行結(jié)果、已知信息,轉(zhuǎn)化為整數(shù)形式,其中對象使用id表示,動作通過位置表示,類型數(shù)據(jù)編號存儲,通過位運(yùn)算將日志記錄映射到一個64位的整數(shù)上,使用兩個無符號整形存儲,具體格式為低32位記錄日志的主要信息,從高到低依次為對象標(biāo)識、動作標(biāo)識、操作結(jié)果、事件類型、對象類型及告警級別;高32位記錄操作錯誤碼,通過該錯誤碼可以獲取錯誤信息。原始記錄生成后,將日志數(shù)據(jù)以消息數(shù)據(jù)參數(shù)的形式通過線程消息傳遞方法將數(shù)據(jù)傳送到日志預(yù)處理線程,進(jìn)入下一階段。
日志預(yù)處理階段。預(yù)處理線程接收到原始日志記錄后,根據(jù)消息發(fā)送時間設(shè)置日志記錄的時間戳,并將其存入通信緩沖區(qū)中。當(dāng)緩沖區(qū)中的日志數(shù)據(jù)滿后,連同應(yīng)用系統(tǒng)ip地址、程序名、計算機(jī)名、用戶id等信息通過管道、共享內(nèi)存、socket等通訊方式發(fā)送給管理控制中心。日志解析階段。管理控制中心得到預(yù)處理的日志記錄后,一方面進(jìn)行報警判斷,另一方面將其繼續(xù)解析生成人員可識別的日志記錄,并使用歸并排序?qū)⑺腥罩居涗洶磿r間進(jìn)行排序;
8.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述使用緩沖池提高寫日志文件速度地方法具體包括管理控制中心初始化時建立一個擁有一個內(nèi)存塊的內(nèi)存池,內(nèi)存塊包含一些大小相等的內(nèi)存頁面,內(nèi)存頁面作為內(nèi)存分配的最小單元;通過使用位圖來管理所有未分配的內(nèi)存頁面,當(dāng)出現(xiàn)申請頁面時時,根據(jù)位圖查找到第一個空閑的內(nèi)存頁面并分配出去,如果沒有空閑頁面時,利用鏈?zhǔn)絃RU置換算法,回收一個內(nèi)存頁并分配,當(dāng)發(fā)生頁面置換的頻率達(dá)到設(shè)定的閾值時,重新分配一個內(nèi)存塊。為了提高內(nèi)存頁面數(shù)據(jù)的命中率以及寫日志文件的速度,將日志文件也劃分為一頁一頁的,通過頁表項建立文件頁和內(nèi)存頁之間的關(guān)系,實現(xiàn)快速1/0,并采用定時回寫策略,將緩沖區(qū)中的日志高速地寫入日志文件中;一個內(nèi)存頁面可能出現(xiàn)同時被讀和寫,為了保證數(shù)據(jù)的一致性這就需要進(jìn)行同步保護(hù),不同粒度的同步對性能的影響是不同的,根據(jù)日志數(shù)據(jù)具有只讀的特性,盡量將對內(nèi)存頁的讀寫操作分開,故把內(nèi)存頁面劃分為可用內(nèi)存頁面集、回寫內(nèi)存頁面集、可置換內(nèi)存頁面集 三個集合,這三個集合各自由一個靜態(tài)的鏈表來管理。卸載安防審計保護(hù)后,系統(tǒng)現(xiàn)將需要 回寫到日志文件的內(nèi)存頁寫入日志文件中,然后回收所有內(nèi)存,并銷毀緩沖池。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述劃分的內(nèi)存頁面集進(jìn)一步描述 可用內(nèi)存頁面集。該集合包含的頁面是可以被申請使用的,也就是空閑頁面集,頁面被申請后,根據(jù)用途會被轉(zhuǎn)移到不同的集合中,該頁面集由位圖管理。
回寫內(nèi)存頁面集。包含的那些追加數(shù)據(jù)或有數(shù)據(jù)修改的頁面,這些頁面會有歸檔線程定期寫回到文件中,當(dāng)頁面寫滿且歸檔后,會轉(zhuǎn)移到可置換內(nèi)存頁面集中。由于頁面集中頁面的遷移比較頻繁,故采用雙向的靜態(tài)鏈表結(jié)構(gòu)管理,以減少因分配結(jié)點帶來的時間耗費。
可置換內(nèi)存頁面集,引入該集合主要用于提高日志信息查詢。該集合中的頁面包括近期已回寫磁盤的日志頁面和近期被訪問過的日志頁。在內(nèi)存頁面用完后,通過靜態(tài)鏈?zhǔn)絃RU將最近未使用的頁面轉(zhuǎn)換出去。
全文摘要
本發(fā)明公開一種面向?qū)崟r數(shù)據(jù)庫的獨立透明型安全審計的方法。其中,以實時數(shù)據(jù)庫提供給應(yīng)用系統(tǒng)的接口作為接入點,將對保護(hù)需求和操作限制轉(zhuǎn)化為安全保護(hù)函數(shù),使用HOOK和遠(yuǎn)程線程注射技術(shù)完成安全保護(hù)函數(shù)對相應(yīng)接口的替換,實現(xiàn)透明增加安全審計。本發(fā)明進(jìn)一步根據(jù)基于安全區(qū)的角色機(jī)制管理用戶的權(quán)限,借助對象動作二維權(quán)限表進(jìn)行快速的權(quán)限校驗,找到了一種適合于實時數(shù)據(jù)庫的訪問控制方法。根據(jù)融合配置信息的接口導(dǎo)出序號,安全方便實現(xiàn)配置。通過不同的日志格式,使用位運(yùn)算快速生成原始日志,結(jié)合線程間消息傳遞提高日志生成采集速度。引入緩沖池,利用劃分頁面集的管理策略提高日志文件的讀寫速度。使用分離部署,提整體性能。
文檔編號G06F17/30GK102654864SQ20111004976
公開日2012年9月5日 申請日期2011年3月2日 優(yōu)先權(quán)日2011年3月2日
發(fā)明者喬建峰, 徐新國, 朱廷劭 申請人:華北計算機(jī)系統(tǒng)工程研究所