作為收費應用方面的資料庫管理員(DBA),公司首席資訊官(CIO)經常邀請我與Sarbanes-Oxley審查員開會討論公司資料的安全與整合問題。簡單地說,他希望我們通過適當的檔案回答許多問題:如誰訪問了我們的資料、如何批准訪問權、以及我們如何對訪問進行監控,以防止某些人入侵、登入資料或做他們不該做的事情。
我的CIO與我瞭解了一些證明Sarbanes-Oxley法案遵守的商業解決方案。但是,我們決定應用SQL Server 2005內建工具來建立我們“自產的”審查系統。
Server 2005新功能
在使用SQL Server 2005之前,我們應用資料操作語言(DML)觸發器來瞭解資料庫中何時會發生資料變化。我們可以指著審查日誌說,這裡有一個列表,列出了自上次審查以來我們發布的所有插入(INSERT)、更新(UPDATE)與刪除(DETELE)語句,包括執行語句的時間、日期、個人或程式。
DML觸發器是一個資料庫引擎啟動的專用儲存程式,它在為資料變化建立審查索引方面有很大的作用。但是,DML觸發器只有在資料發生變化時才會啟動。在使用SQL Server 2005之前,我們沒有較好的辦法來追蹤資料庫伺服器中的結構或安全變化。
SQL Server 2005支援資料定義語言 (Data Definition Language)(DDL)觸發器。在發生伺服器或資料庫級事件時,這些觸發器才會建立並啟動。DDL觸發器允許我們追蹤資料庫中的重要變化——有意的、無意的或惡意的改變。
追蹤所有註冊
下面是一個DDL觸發器改善資料庫監控能力的典型例子。在以前版本的SQL Server中,我們很難瞭解何時建立新註冊、何時建立新資料庫、或是何時給不同使用者指派了新許可。
在SQL Server 2005中,追蹤這樣的安全變化要相對容易一些。為說明這一點,無論使用者是誰,讓我們設計了一個追蹤伺服器上所有行為的解決方案。我們將用DDL觸發事件DDL_LOGIN_EVENTS來建立審查索引。這個事件觸發程序將尋找伺服器上的任何註冊事件,包括所有的建立註冊(CREATE LOGIN)、修改註冊(ALTER LOGIN)與刪除註冊(DELETE LOGIN)事件。