摘 要:數據庫安全審計對于保障數據庫安全是至關重要的。設計實現一個Informix數據庫安全審計系統,通過對Informix數據庫審計日志文件格式的分析,能夠對數據庫的操作按照用戶會話過程進行還原,同時設計多級的安全規(guī)則對相應的數據庫操作給出不同級別的警告。在系統架構上,采用分離的采集器和分析器結構,能針對多個日志數據源進行同時處理,日志分析結果采用XML格式進行存儲。具有很好的通用性和可擴展性。實驗測試結果表明,系統能很好地完成Informix數據庫操作的實時審計。
關鍵詞:Informix;數據庫安全;審計日志
中圖分類號:TP311.138 文獻標識碼:A
1 引言
數據庫安全審計是保證數據庫安全性的有效手段,它的作用在于當數據被惡意修改、數據復制不正?;驍祿煜到y出現問題時,數據庫管理員可以通過安全審計,跟蹤數據的修改過程,確定數據被破壞的程度和范圍,并制定相應的解決方案,從而最大限度地縮短恢復周期,將損失降低到最小。
數據庫安全審計源于信息系統的安全審計,就是對系統安全進行審核、稽查和計算。概括的講,安全審計就是記錄一切(或部分)與系統安全有關活動的基礎上,對其進行分析處理、評估審查,查找系統的安全隱患,追查造成安全事故的原因,并做出進一步的處理。數據庫安全審計是創(chuàng)建一個用于監(jiān)測非正常的或可疑的活動的事件記錄,或者提供一個重要活動及操作者的記錄。由于可審計事件的粒度一般比較小,因此審計很容易在短時間內產生大量的數據,然而通常情況下系統受到攻擊的可能性并不大,這些數據所體現的操作絕大多數都是合法的。海量的數據給審計數據的人工分析和機器自動分析都帶來了極大的困難。目前,針對Informix數據庫的審計主要是Informix系統本身帶有的安全審計模塊,它可以完成對數據庫的在線監(jiān)控,能將數據庫操作記錄按照時間順序記錄在日志文件中,但是這些記錄對于使用者來說,內容繁雜,不利于數據庫管理人員的分析和處理。
本文通過結合安全審計模塊設計實現了一個Informix數據庫安全審計系統,該審計系統采用采集和分析分離的結構并設計傳輸協議格式,能針對多個日志數據源進行同時處理。通過對Informix數據庫審計日志文件格式的分析,能夠對數據庫的操作按照用戶會話過程進行還原,同時設計多級別的安全規(guī)則可以對相應的數據庫操作給出不同級別的警告。
2 Informix數據庫審計日志文件分析
為了提取審計日志文件的內容,我們首先分析了審計日志的格式。審計日志以字符形式直接存儲,對每一個用戶配置好的數據庫操作行為都存儲成一條日志文件記錄。
每條記錄分為兩個部分,第一部分是日志頭,第二部分是附加的信息列。
其中日志頭包含八個字段,含義如表1所示。
附加信息列(Additional fields)則是根據不同的事件類型而有所不同,一般包括數據庫名、表名等信息,典型數據庫操作時記錄的附加信息列如表2所示。具體的可參見審計事件域表。
例如,以下是從審計日志文件中截取的一條審計記錄:
該記錄表示主機名為ZHANGWEI-DB的客戶端在2007年4月3日16:15:33登錄服務器名為OLZW的數據庫服務器,登錄的用戶名為Informix,該用戶對sysmaster數據庫的表號為221的表中的262行進行了插入行數據的操作。
3 審計系統結構
為了能支持對多個日志源的審計分析,將審計系統設計成采集器和分析器兩部分,如圖1所示。采集器負責采集原始的Informix數據庫審計日志數據,可以完成實時采集和定時采集的功能。分析器負責對采集器發(fā)送給它的數據進行日志解析、操作還原、會話關聯和審計結果輸出,并進行安全規(guī)則匹配和統一格式處理。系統中設計了相關的通信協議完成采集器和分析器之間的數據傳輸。
4 審計系統設計與實現
4.1 采集器
Informix數據庫審計系統的審計客體主要是數據庫的審計日志文件,采集器需要安裝在數據庫服務器上,負責讀取審計日志文件中的數據,實時采集是通過設定相應的時間間隔對日志文件中的增量數據進行采集,定時采集則可以指定需要分析的時間段,完成對審計日志文件中相關時間內數據記錄的采集。采集得到的數據形成相應的字節(jié)流,按照一定的協議格式通過TCP連接傳送給分析器。
4.2 網絡傳輸協議
在采集器和分析器間,設計了相應的信令包和數據包,分別完成傳輸過程中的參數協商和日志數據的傳遞。
傳輸的具體過程如圖2所示。
首先由采集器發(fā)出連接請求,分析器收到該連接請求之后,發(fā)出響應包,與采集器協商編號、數據庫類型和文件名信息,之后分析器將本次傳輸的起始位置發(fā)給采集器,采集器根據這個位置信息,決定從何處開始傳輸日志數據,以保證傳輸數據的完整性和正確性。之后就開始傳輸,當傳輸完畢時,采集器發(fā)送一個斷開連接的請求包,分析器收到該消息包,則斷開與采集器的連接。
4.3 分析器
分析器是審計系統的核心,主要完成的功能是接收日志采集代理發(fā)送過來的審計日志數據,解析還原出數據庫操作并實現會話關聯,最后對分析的結果進行規(guī)則匹配,顯示告警信息。分析器的結果包含系統告警信息和還原的用戶會話過程,即每個用戶在任何一次登錄退出過程中的所有數據庫操作行為記錄。
4.3.1 日志解析
日志解析的過程首先是讀取一條審計日志記錄,完成記錄中操作信息的還原,然后完成多條記錄的關聯,最后得到一個用戶在一次登錄退出之間的操作。
由于在Informix審計日志記錄中,SQL操作是采用字母縮寫來表示的,如insert、delete、update分別記為INRW、DLRW、UPRW。同時日志記錄中操作的對象(表或視圖)也是采用數字編號來表示的。為了得到更加直觀的審計結果,日志解析首先要將這些縮寫和編號轉換成對應的SQL操作名和相應的表名或視圖名。
具體實現上,通過讀取審計日志頭中Event mnemonic字段的內容就可以讀取操作縮寫名,直接還原SQL操作。對于對象名稱的還原,可以有兩種方法,一種是通過查找數據庫系統表systable可以獲取所有的對象名和對象編號的對應關系。另一種方法是,通過解析審計事件為ACTB的日志記錄來獲取對象名和對象編號的對應關系。在In-formix數據庫操作中,每個對表或視圖的操作首先都會產生一條ACTB的審計日志記錄,該記錄的附加信息列中帶有對象名和對象編號兩個域,分別描述下一記錄的操作對象名稱和對象編號。由于第一種方式需要對數據庫系統表進行查找,會影響數據庫系統本身的效率和性能,所以我們的審計系統中采取了第二種方式。
而對于用戶登錄的操作,在Informix的審計日志中,審計事件縮寫為STSN時,表示啟動新的會話,也就是一個新的用戶登錄。在這條審計記錄中會記錄下會話開始的時間、進程ID和用戶名等信息,我們可以通過解析該記錄內容,獲取用戶的會話信息。
由于在審計日志記錄中,屬于同一會話的操作,其主機名、進程號和用戶名三個字段是相同的,因此可以通過檢測每條記錄的這三個字段來進行匹配。雖然在Unix/Linux系統中,存在進程號時間片輪轉的問題,即系統的進程號在一定的時間后會發(fā)生輪轉,從而使得進程號發(fā)生重復。但是進程號輪轉時出現同一進程號的前提是前一個進程已經結束了,也就是相當于說該會話已經完成,因此并不會影響會話關聯的正確性。
4.3.2 統一格式處理
出于通用性和擴展性方面的考慮,審計系統對日志解析的結果使用統一的XML數據格式進行處理和保存。下面是一段日志解析后的保存結果示例。
其中,Session代表會話,Operation代表數據庫操作。
在Session記錄中,SID表示會話號,PID表示進程號。屬于同一會話的操作被歸于一個會話號之下。在Opera-tion記錄中,Op表示數據庫操作行為類型,Timestamp表示操作時間,ObjectlD表示操作對象標識號,ObjectName表示操作對象名,RowID表示行號,DataBaseName表示數據庫名,Status表示操作是否成功。
4.3.3 安全規(guī)則關聯匹配
為了實現安全審計的目的,系統設定了安全規(guī)則,規(guī)定了三個安全等級,級別越高,表示存在的安全威脅越大。系統分別對用戶多次登錄嘗試、用戶授權、數據表修改、記錄增刪等行為給出安全警告。
安全規(guī)則的保存采用了XML格式,可以由管理用戶按照需求進行添加和刪除。以下是一段安全規(guī)則的示例。
其中標簽名代表數據庫操作名,Status為操作狀態(tài),Warn-ingLevel為警告級別,Suggestion為應對策略和建議。如上例中第4條規(guī)則表示連續(xù)三次登錄失敗,警告級別為3。
在進行安全規(guī)則匹配時,遍歷日志解析結果文件,對每條記錄結果取出操作名和成功狀態(tài),與安全規(guī)則庫進行匹配,完成相應警告輸出。
5 系統測試
系統測試在分布式的環(huán)境下進行,日志采集器運行在Windows平臺的Informix數據庫服務器上,日志分析器運行在Linux平臺。系統第一次運行時,需要對審計日志、分析結果文件名稱和存放位置、通信地址和端口等進行相應的配置。
采用實時測試模式,系統啟動以后,分析器會一直循環(huán)等待接收采集器發(fā)送過來的日志數據。我們以一個大小為5M的審計日志文件作為測試數據源,審計系統在不到10秒的時間內完成對該文件的分析,并給出了相應的結果。結果表明,系統能很好地完成Informix數據庫操作的實時審計,將用戶的數據庫操作行為按照會話的過程清晰地展現出來,同時能對這些操作行為給出相應的警告提示信息。分析的部分結果截圖如圖3所示。
從圖3可以看出,用戶名為informix的某用戶從13:02:26開始登錄到13:07:06退出登錄,其中進行了創(chuàng)建用戶表test_621等操作。
系統安全關聯匹配的部分結果截圖如圖4所示。
從圖4可以看出,對應圖3的日志分析結果,審計系統對用戶informix的登錄,創(chuàng)建表,插入行數據都給出了相應的警告提示信息,管理員用戶可以很明確的做好對應的操作處理。
6 結束語
數據庫安全審計機制是數據庫安全機制的一種,本文根據Informix數據庫管理系統自身的特點,設計并實現了具有審計數據的采集和審計數據的分析以及報警功能的Informix數據庫安全審計系統,任何通過數據庫引擎對數據庫進行的操作都會被審計系統記錄,而這些記錄可用于追蹤和調查非授權用戶的非法操作,從而確保數據庫的安全性、完整性和可用性。