數據庫安全最佳實踐:數據庫審計工具調優
數據庫管理員受命于創建審計記錄以符合安全審計和合規審計的要求,但如果他們僅僅去閱讀那些敘述如何進行數據庫審計的標準操作手冊的話,恐怕會很失望。數據庫審計工具都有一些特殊的使用技巧,如果不花費時間合理地規劃審計流程,使用這些工具可能會使得數據庫運行性能遭受慘重打擊。由于進行審計而導致數據庫運行性能下降超過50%的例子并不少見。這也就意味著,看起來簡單的審計工作可能最終會導致數據庫變慢、表空間占滿、收集過量事件,以及給自己造成維護和報表生成方面的諸多麻煩。
相反,在開展審計工作的時候,首先應該建立一個測試數據庫,并進行一些基本的性能測試:先關閉審計選項,建立性能基線,然后將其與在不同審計方式、配置和過濾選項下的審計方案測試后所獲得的性能指標進行逐個比較。這樣做不僅有助于理解每個審計選項對性能的影響,也可以幫助識別資源瓶頸。相信我,這些信息是你在對生產用數據庫服務器進行配置之前就必須清楚的。即使是你正準備將數據庫日志發送給SIEM或者日志管理系統的時候,創建并維護審計追蹤策略仍然是必不可少的工作,別指望那些系統會去幫你優化審計設置。
以下是一些用于審計工具優化的數據庫安全最佳實踐:
審計方式:所有的數據庫系統都提供了不止一種收集審計數據的方法,因此你可以簡單地通過性能對比來比較不同的審計方式。對于IBM DB2數據庫而言,審計有時候會是一個巨大的挑戰,但是如果你僅僅審計特定用戶的行為(事件),DB2事件監控器的性能可能會表現的好一些。對于Oracle數據庫而言,細粒度的審計機制以及一些審計選項提供了很好的伸縮性,但由于它會產生大量審計數據,同樣存在潛在地數據庫性能下降的風險。
審計選項:試著使用不同的審計選項組合,并進行測試。對于Oralce和DB2數據庫,可以比較一下用數據庫表存儲審計數據和使用操作系統文件系統存儲審計數據兩種方案。前一種方案有助于進行數據檢索,而后一種方案性能更優,并且不會占滿表空間。
資源和管理:通過資源分配優化有助于審計數據的存儲,尤其是打算將審計數據存儲到數據庫的時候,因為此時數據表很容易被寫爆。應該創建一些用于歸檔審計數據和縮減事件存放庫表容量的腳本。對于SQL Trace而言,如果將事件流存儲在不同的文件中,并放到指定的驅動器下,性能將會提升。審計進程也會占用不少的內存。DB2的審計緩存大小對于性能會產生很大的負面影響,因此要增加對其所占內存的分配。針對Sybase公司的ASE數據庫,為了在審計隊列不斷增加的時候保持處理和響應性能,需要分配大量的內存。為了提升寫磁盤的效率,大部分數據庫支持數據塊優化,可以對只寫(write-only)進行優化,并設置塊大小的選項,使其大小為審計數據表行大小的整數倍。
過濾:過濾差不多是最重要的優化步驟了。請與您的安全與合規團隊進行溝通,找出他們真正想要獲取哪些審計信息,而不是僅僅對他們想要的信息知道個大概。從收集到的數據流中過濾出一到兩種事件類型可以極大地降低存儲和運算的負擔。對于像SQL Server的Trace這樣的工具而言,在收集數據的時候很好用,但是過濾數據就不是很方便。然而,在大多數情況下,所有的數據庫都提供對用戶事件、管理員事件、元數據操作事件和系統級事件的過濾功能。例如,對于DB2而言,如果進行細致的過濾,性能負擔降低80%不足為奇。所以,請花時間了解你到底需要什么數據,然后將你不需要的數據統統過濾掉。
在經過性能驗證和比較之前,別輕易下結論說哪種審計方法一定就是好的。花些時間掌握那些審計選項,這樣可以大大地減輕你審計工作的負擔。
作者:Adrian Lane
【編輯推薦】