安全審計打造固若金湯的數(shù)據(jù)堡壘(二)
在上部分的文章《安全審計打造固若金湯的數(shù)據(jù)堡壘(一)》中,我們介紹了審計數(shù)據(jù)庫的登入和登出,本文我們將接著介紹其他類型的審計。
審計使用數(shù)據(jù)庫的源頭
與登錄活動審計相關(guān)的是客戶源信息的審計。這包括審計哪個網(wǎng)絡(luò)節(jié)點連接到了數(shù)據(jù)庫(例如,使用一個IP地址還是主機(jī)名),并且審計使用哪個應(yīng)用程序訪問了數(shù)據(jù)庫。
雖然這種信息是我們在審計數(shù)據(jù)連接時通常都會捕獲的值之一,但在SQL調(diào)用水平上捕獲這種信息非常重要。除了知道一個用戶是使用Excel而不是SAP系統(tǒng)連接之外,你還需要知道某次更新是由Excel電子數(shù)據(jù)表軟件還是由SAP系統(tǒng)執(zhí)行的。因此,你在每次查詢和數(shù)據(jù)庫操作中,應(yīng)該將源程序收集在審計記錄中,特別當(dāng)IP地址能夠唯一確認(rèn)一個用戶時。如果你的架構(gòu)是基于客戶/服務(wù)器的,那么源IP地址通常會確認(rèn)一個唯一的用戶。這種情況下,根據(jù)用戶每次SQL調(diào)用的IP地址進(jìn)行跟蹤和報告,這同報告終端用戶的數(shù)據(jù)庫操作和數(shù)據(jù)查看同樣有益。另一方面,如果你使用一種應(yīng)用程序服務(wù)器架構(gòu),那么IP地址不會幫助你確認(rèn)和報告終端用戶,你需要借助于其它技術(shù)。
在審計和提供審計信息時,你還得做另一個決定,這與你是提供“原始數(shù)據(jù)”還是更易于使用的數(shù)據(jù)有關(guān)。例如,上圖三中的左側(cè)顯示了哪些源程序被用于訪問運行在155.212.221.84上的SQL服務(wù)器上。這種信息對于了解環(huán)境的人員來說非常有用。而上圖右側(cè)所提供的信息對一般人來說更有意義,這些人并不關(guān)心IP地址是什么,卻知道HR(人力資源)數(shù)據(jù)庫是怎么回事。如果相關(guān)人員理解與開發(fā)者工具登錄進(jìn)入人力資源(HR)數(shù)據(jù)庫有關(guān)的風(fēng)險,這種信息顯然更有意義。
數(shù)據(jù)提取問題不僅僅與審計數(shù)據(jù)庫使用的客戶源有關(guān)。這個問題基本與本文所討論的所有審計有關(guān)。對于源的確認(rèn)來說,如下圖四所示,這尤其重要,其中的IP地址可能沒有深刻的意義,但屬于節(jié)點的主機(jī)名甚至標(biāo)簽都可提供很多信息。
審計正常操作時間之外的數(shù)據(jù)庫使用
與審計數(shù)據(jù)庫登錄有關(guān)的另外一個問題是,審計在正常操作時間之外的活動。這是一個非常直接的需求,并且是企業(yè)和合規(guī)所要求的一種審計。
審計正常操作時間之外的數(shù)據(jù)庫使用非常必要,這是因為在下班期間所進(jìn)行的活動通常都是可疑的,它有可能是未授權(quán)用戶試圖訪問或篡改數(shù)據(jù)的一個結(jié)果和證明。當(dāng)然,黑客在偽裝過程中通常也會試圖破壞數(shù)據(jù)庫。
審計下班后的活動時,僅僅跟蹤上班時間之外的登入和登出是不夠的。一般來說,你還需要捕獲執(zhí)行了哪些活動,這通常在SQL水平上完成。如果這種登入可疑,捕獲這種登入在使用了什么工具進(jìn)行了操作是很重要的。全面審計任何用戶在正常操作時間之外的所有活動線索是一種很不錯的審計,這有助于滿足許多規(guī)章性的和內(nèi)部的合規(guī)要求。
雖然從直觀上看,對下班之后的審計更有意義,但在技術(shù)層面上,你必須對其定義保持清晰的頭腦,因為多數(shù)數(shù)據(jù)庫環(huán)境是全天工作的,而且你也不希望生成大量的虛假的警告,尤其是當(dāng)ETL腳本在正常操作時間之外執(zhí)行海量的數(shù)據(jù)上傳時更是這樣。因而,要很好地實施這種審計,關(guān)鍵在于不能把一些一直在下班后運行的任務(wù)作為審計線索的一部分。
要排除那些發(fā)生在上班時間之外的正?;顒?,還可以使用另一種方法,即使用一種基準(zhǔn)。如果你為你的數(shù)據(jù)庫訪問制定了基準(zhǔn),就會看到下面的活動:
如果你發(fā)現(xiàn)每天晚上這類活動都會發(fā)生,那么你對下班后的審計就應(yīng)當(dāng)排除這些應(yīng)用程序(SQLLOADER、ETL)所執(zhí)行的、使用這些登錄名的并且是來自這些IP地址的任何活動。僅審計那些偏離基準(zhǔn)的對象有助于減少審計內(nèi)容。
審計DDL活動
設(shè)計的變更審計,或者更具體地講,DDL的活動審計一直很重要,并且是最常實施的審計線索之一。這是因為設(shè)計的變更審計在安全和合規(guī)方面,以及從配置管理和過程方面都很重要。從安全的觀點來看,DDL命令都是潛在的最具有破壞力的命令,易被攻擊者利用從而破壞系統(tǒng)。竊取信息也會經(jīng)常涉及到DDL命令(例如,創(chuàng)建另外一個表,在析取數(shù)據(jù)之前將數(shù)據(jù)復(fù)制到其中)。從合規(guī)的觀點看,許多規(guī)范都要求安全人員(管理員)審計對數(shù)據(jù)表和視圖等數(shù)據(jù)結(jié)構(gòu)的任何修改。
對設(shè)計變更進(jìn)行審計的需求并非總是為了安全原因。有時,這是為了避免錯誤以及為了快速發(fā)現(xiàn)問題。因而,對設(shè)計變更進(jìn)行的審計合規(guī)需求,通常與配置管理和IP監(jiān)控任務(wù)的部分需求類似。安全人員需要審計數(shù)據(jù)庫的設(shè)計變更,并進(jìn)行保存,作為將來的參考,或作為一種確認(rèn)和快速解決錯誤(這種錯誤可能會破壞數(shù)據(jù)的便攜性或?qū)е聰?shù)據(jù)受到損害)的方法。另外,DDL活動的審計是為了清除開發(fā)者和數(shù)據(jù)庫管理員所引起的錯誤,以及一些可能會引起災(zāi)難影響的錯誤。筆者的一位客戶就由于開發(fā)人員的一次變更(開發(fā)者認(rèn)為是自己是在開發(fā)服務(wù)器上完成的,但實際上卻錯誤地在生產(chǎn)服務(wù)器上完成了。)而“宕機(jī)”了幾乎兩天時間。對配置管理過程的緊密控制是很重要的,它是DDL審計的首要動因之一。
有三種主要的方法可審計數(shù)據(jù)庫的設(shè)計變更:
使用數(shù)據(jù)庫的審計特性
使用外部的審計系統(tǒng)
比較設(shè)計快照
多數(shù)數(shù)據(jù)庫環(huán)境都允許你使用審計機(jī)制、事件監(jiān)視器等來審計DDL活動。例如,Oracle允許管理員使用基于DDL的系統(tǒng)觸發(fā)器:
在SQL Server中,你要使用跡函數(shù)(trace function),而在Sybase中,你就得使用本地函數(shù)。只要你愿意,你都可以析取信息、生成報告、創(chuàng)建基準(zhǔn)。你可能還需要外部的審計工具。這些工具不僅收集你所關(guān)心的信息,而且還提供一些高級功能,用以實現(xiàn)報告、警告及制定基準(zhǔn)等。
第三類審計是比較數(shù)據(jù)庫的設(shè)計快照,它并不能給你DDL活動的詳細(xì)審計,其重要性遠(yuǎn)不如其它兩類審計,但它易于實施。如果你并不實施一種真正的審計基礎(chǔ)架構(gòu),那你可以將這種審計作為一種臨時解決方案。這種方案基于定期收集數(shù)據(jù)庫設(shè)計的完整定義,并將其與以前的設(shè)計規(guī)劃相比較。你甚至可以使用diff之類的小工具,因為在這種方法中你要做的一切就是確定是否發(fā)生了變化。雖然這種方法極易實施,但是在發(fā)生變化時,你卻無法跟蹤到底是誰做的變更,以及何時、為什么發(fā)生變更。此外,如果某人惡意地做了變更,并且利用了它,然后又變回到原先的狀態(tài),只要整個過程用時很短,你就無法發(fā)現(xiàn)。因而,這個選擇有時在配置管理計劃中可能是夠的,但在一個以安全或合規(guī)需求為目標(biāo)的項目中,這常常是不夠的。
【編輯推薦】