在SQL Server 2008中安裝安全審計
在SQL Server 2008里安裝審計,步驟如下:
1. 給每個SQL Server 2008具體實例創建一個SQL Server審計
2. 創建服務器審計規范、數據庫審計規范或者其中的一個
3. 激活SQL Server審計
4. 查看審計數據
在這一技巧中,我將復習其中的每一步并舉例說名它們怎么進行的。注意大多數情況下這些例子是基于T-SQL語句的。但是,這些步驟也能夠用 SQL Server Management Studio界面來執行。如果想了解更多有關SQL Server Management Studio用法的信息,請查看 Microsoft SQL Server聯機叢書。
創建SQL Server審計
***步你應該在SQL Server 2008的一個實例上創建審計,這樣就能創建一個SQL Server審計。審計就是為與數據庫引擎相關的具體事件集合配置的安全對象。你可以在SQL Server 2008里的一個實例上創建多個審計。
在創建審計時,你必須給它指定一個名稱和事件輸出的目標位置。目標文件可以是二進制的文件、Windows Security日志或Windows Application日志。你還可以給審計對象指定一個或更多個可選參數。
你可以用CREATE SERVER AUDIT語句,如下所示:
USE master GO CREATE SERVER AUDIT SrvAudit TO FILE (FILEPATH='C:\Data', MAXSIZE=5 MB) WITH (QUEUE_DELAY = 3000) |
注意,你必須在主數據庫中創建一個審計。由于審計是和SQL Server實例相聯系的,因此你不能在用戶數據庫中創建。
***行的CREATE SERVER AUDIT語句僅規定審計名稱(如SrvAudit)。第二行的TO 子句確定事件輸出時的目標位置。例如,我想將輸出結果保存在文件中,所以我必須指定TO FILE并規定FILEPATH 值。注意這只是一個路徑名。SQL Server將自動命名輸出文件,如下所示:
<audit_name>_<audit_GUID>_<partition_number>.sqlaudit |
在上面的例子中,TO FILE語句還包括了MAXSIZE參數,MAXSIZE參數將文件大小限制為5 MB。該參數是TO FILE子句可選參數之一。如果你將審計數據遷到Application日志或 Security 日志,你就只需要指定日志名選項,示例如下:
CREATE SERVER AUDIT SrvAudit2 |
就像你看到的一樣,TO FILE子句已經被TO APPLICATION_LOG子句所替代并且還沒有另外規定其他的參數。
***一行在CREATE SERVER AUDIT 語句中的就是一個 WITH子句。該子句支持很多個選項,限制了創建審計的方法。在這種情況下,我使用的是QUEUE_DELAY參數并將它的值設為3000。這個參數指定了在創建審計之前要耗費的毫秒數并且。默認數字為 1000 毫秒(即1秒)。
要了解所有CREATE SERVER AUDIT 語句可選擇項和本篇文章中的其他語句,請查看Microsoft SQL Server聯機叢書。
#p#
創建服務器審計規范
你創建SQL Server審計之后,必須創建一個服務器審計規范或者是一個數據庫審計規范或者是其中的每個。一個服務器審計規范就是和具體的SQL Server審計相關的一個或多個服務審計。活動組就數據庫引擎暴露出來的一組相關的事件,例如,我們在進行安全審計操作時,SERVER_OPERATION_GROUP行動組就出現了,如當用戶在改變服務器設置時。你可以在每個審計上只創建一個服務器審計。但是,你可以對審計規范增加多個活動組。創建一個服務器審計規范,你需要在主數據庫上運行CREATE SERVER AUDIT SPECIFICATION,如下所示:
USE master |
***行CREATE SERVER AUDIT SPECIFICATION語句規定了審計規范名(SrvAuditSpec)。第二行FOR SERVER AUDIT子句指定了與審計規范相關的審計名(SrvAudit)。第三行和第四行為 增加了規范活動組的ADD 子句。在這種情況下,我增加了SUCCESSFUL_LOGIN_GROUP和FAILED_LOGIN_GROUP活動組,跟蹤試圖登錄到SQL Server實例的安全主管。
***一行 CREATE SERVER AUDIT SPECIFICATION語句為WITH 子句。WITH 子句包括激活規范的在STATE參數。默認值不能激活審計規范(STATE=OFF)。如果你在創建時不能激活審計規范,你就必須過段時間再激活,在你能夠審計活動組之前進行激活。
創建數據庫審計規范
和服務器的審計規范不一樣,數據庫審計規范是具體針對數據庫的。但是它和服務器審計規范相同的是,你可以增加審計活動組,但是它們僅僅針對數據庫。此外,你可以給規范增加單獨的審計活動。審計活動就是數據庫具體的活動,如刪除數據或運行存儲程序。
創建數據庫審計規范,在目標數據庫中運行CREATE DATABASE AUDIT SPECIFICATION語句,例如:
USE AdventureWorks2008 |
***行CREATE DATABASE AUDIT SPECIFICATION語句指定了規范(DbAuditSpec),第二行為FOR SERVER AUDIT 子句,用它可以判斷和規范相關的審計。接下來,我增加了一個審計活動組,在這里就是 DATABASE_OBJECT_CHANGE_GROUP。在對AdventureWorks2008 數據庫執行CREATE、ALTER 或DROP語句時就會出現這個活動組。
第二個ADD 子句制定了單獨審計活動,而不是一個活動組。這樣,審計活動就是SELECT、INSERT、UPDATE和 DELETE。但是你要注意,下面一行包含一個ON子句指定的HumanResources schema和dbo安全主管。結果,只要dbo在HumanResources schema中查詢一個對象或在 AdventureWorks2008數據庫中插入、更新或刪除,SQL Server就會將事件記入日志。
***,CREATE DATABASE AUDIT SPECIFICATION語句中的***一個子句就是WITH子句。跟上次一樣,你可以在操作完之后就激活審計規范或者過一段時間之后再進行激活。
#p#
激活SQL Server審計
和我們剛剛回顧的審計規范一樣,CREATE SERVER AUDIT 語句中的WITH子句并不支持STATE參數。也就是說你必須在單獨的一步中激活審計,如下面的語句中所示:
USE master |
你可以看到,我使用的是ALTER SERVER AUDIT 語句更改我之前創建的SQL Server審計(SrvAudit)。ALTER SERVER AUDIT語句中的WITH子句支持被我設置成ON的STATE參數,SQL Server會審計這些具體事件。
查看審計數據
你可以在 SQL Server Management Studio中用Log File Viewer查看審計數據。另外如果你創建SQL Server審計將事件保存到Application日志或者Security日志,這樣你就可以用Event Viewer查看這些數據。我認為回顧事件信息最簡單的方法就是將審計數據保存到一個二進制文件中,然后用Log File Viewer回顧這些數據。
要訪問Log File Viewer,就要打開SQL Server Management Studio,擴展Security節點。接下來選擇你要復習的審計,然后點擊View Audit Log發送Log File Viewer。圖1表示以上的例題中SQL Server Audit (SrvAudit)事件實例。
圖1:在Log File Viewer中查看審計數據
以上就是安裝審計以及回顧審計數據的步驟。SQL Server 2008讓這些步驟比以前版本執行更加簡單。你只需要簡單創建SQL Server審計,并附上一到兩個審計規范,然后激活。其余的工作都由SQL Server完成。要了解更多有關審計方面的信息,請查看微軟SQL Server聯機叢書。
【編輯推薦】