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