SQL Server 审核(Audit)-- 创建数据库级别的审核
SQL Server 審核(Audit)-- 創建數據庫級別的審核
?
任務1:創建審核
步驟1:打開SSMS,登錄到指定的實例,展開“Security”,“Audits”節點。
?
步驟2:在“Audits”節點上,右鍵選擇“New Audit…”選項。
?
步驟3:在“Create Audit”窗口,輸入以下的參數。
? 在“Audit name”輸入Audit-AdventureWorks2012-Create/Alter/Drop。
? 在“Audit destination”選擇“File”
? 在“File path”輸入D:\MSSQL\DATA\Audit_logs。
?
步驟4:單擊“OK”完成設置。
?
?
步驟5:右鍵點擊剛剛創建的審核“Audit-AdventureWorks2012-Create/Alter/Drop”,選擇“Enable Audit”選項。
?
?
?
任務2:創建數據庫級別的審核規范 – 監控數據庫對象的創建、刪除與修改。
步驟1:在“Object Explorer”窗口,展開“Databases”,“AdventureWorks2012”,“Security”,“Database Audit Specifications”節點。
?
?
步驟2:在“Database Audit Specifications”節點,單擊右鍵選擇“Create Database Audit Specification”選項。
?
步驟3:在“Create Database Audit Specification”窗口,輸入以下參數。
l 在“Name”輸入DatabaseAuditSpecification-Object-Create/Alter/Drop。
l 在“Audit”選擇之前創建的審核對象“Audit-AdventureWorks2012-Create/Alter/Drop”。
l 在“Actions”區域中“Audit Action Type”下的第一行,選擇“SCHEMA_OBJECT_CHANGE_GROUP”。
?
?
“SCHEMA_OBJECT_CHANGE_GROUP”是屬于數據庫級別的審核操作組,在架構上執行CREATE、ALTER和DROP操作時,就會引發這個事件。
?
步驟4:單擊“OK”按鈕,完成設置。
?
步驟5:右鍵單擊剛才創建的數據庫審核規范“DatabaseAuditSpecification-Object-Create/Alter/Drop”,選擇“Enable Database Audit Specification”選項。
?
?
?
任務3:測試審核功能 – 創建、修改與刪除數據庫對象。
步驟1:打開SSMS,單擊“New Query”執行以下代碼,在數據庫AdventureWorks2012創建、修改與刪除數據庫的對象。
?
USE?AdventureWorks2012 GO --Create?Database?Object CREATE?TABLE?T1(Col1?int?not?null?primary?key) GO CREATE?VIEW?V1?AS?SELECT?*?FROM?T1 GO CREATE?SYNONYM?SYN1?FOR?T1 GO CREATE?FUNCTION?FUN1(@InParm?int)?RETURNS?int?AS?BEGIN?RETURN?@InParm?END GO CREATE?PROCEDURE?PROC1(@InParm?int)?AS?BEGIN?SET?@InParm?=?0?END GO CREATE?TRIGGER?TRIG1?ON?T1?AFTER?INSERT?AS?RAISERROR('This?is?a?dummy?table',16,10) GO --Alter?Database?Object ALTER?TABLE?T1?ADD?Col2?varchar(32) GO ALTER?PROC?PROC1?AS?SELECT?1 GO --Drop?Database?Object DROP?TRIGGER?TRIG1 GO DROP?PROCEDURE?PROC1 GO DROP?FUNCTION?FUN1 GO DROP?SYNONYM?SYN1 GO DROP?VIEW?V1 GO DROP?TABLE?T1 GO?
?
任務4:使用日志文件查看器閱讀審核日志。
步驟1:展開“Security”,“Audits”節點。
?
步驟2:在剛才創建的“Audit-AdventureWorks2012-Create/Alter/Drop”對象上,右鍵選擇“View Audit Logs”。
?
步驟3:在“Log File Viewer”窗口左上角的“Select logs”區域中,確認有勾選“Audit Collection”,“Audit-AdventureWorks2012-Create/Alter/Drop”。并用以下方式來閱讀所記錄的審核數據。
?
?
?
l 在右邊“Log file summary”區域內,在“Action ID”區域中,分別點擊“CREATE”、“ALTER”、“DROP”等操作類型。
l 在“Class Type”顯示所記錄的各類對象“TABLE”、“VIEW”、“STORED PROCEDURE”等數據庫對象。
l 在下面的“Statement”區域,可以看到所記錄的程序代碼。
l 取得發生事件的日期與時間,可能是利用的SQL Server 2008之后新提供的日期時間函數SYSUTCDATETIME()。回傳的數據類型是datetime2,內容值包含執行SQL Server實例的服務器的日期和事件。而這個日期與時間是以國際標準時間(Coordinated Universal Time:UTC)時間格式回傳,此函數將取回服務器上的格林威治時間(Greenwich Mean Time:GMT),也就是落后北京時間標準8小時。
備注:datetime2是SQL Server 2008之后新增的數據類型,包含了日期數據,并結合以24小時制為基礎的時間。Datetime2可視為既有的datetime數據類型的擴展,它具有較大的日期范圍、較精確的小數有效位數和選擇性的用戶指定有效位數。日期范圍可以從公元1年1月1日到公元9999年12月31日,時間范圍可以到00:00:00到23:59:59.9999999,精確度為100ns(1ns=10的負九次方秒)。
?
采用格林威治時間(GMT)來記錄日期時間數據,對于DBA而言,若擁有位于不同時區的數據庫服務器時,這是一個將日志的時間標準化的作法。但對于非格林威治時間(GMT)時區的用戶而言,例如:北京時區是(GMT+08:00),可能是個困擾。在接下來的實踐中,將使用T-SQL函數fn_get_audit_file來分析與查看審核日志的數據,就可以將格林威治時間(GMT)轉為適合的時區的信息。
?
?
任務5:改用“Windows應用程序事件日志文件”來記錄審核信息。
步驟1:在“Security”,“Audits”節點上的“Audit-AdventureWorks2012-Create/Alter/Drop”對象上,右鍵禁用審核。
?
?
若要調整“Audits”對象的屬性,必須要先禁用此“Audits”之后才能進行調整,否則將產生錯誤信息,無法調整屬性。
?
步驟2:單擊被禁用的審核對象,單擊鼠標右鍵選擇“Properties”選項。
?
步驟3:在“Audit Properties”窗口中的“Audit destination”框,下拉選擇“Application Log”。
?
?
步驟4:單擊“OK”按鈕,完成屬性的調整。
?
步驟5:單擊被禁用的審核對象,右鍵再啟用審核。
?
步驟6:再次執行之前在數據庫AdventureWorks2012創建、修改與刪除數據庫對象的T-SQL代碼。
?
?
任務6:查看存放在“Windows應用程序事件日志文件”內的審核信息。
步驟1:展開“Security”,“Audits”節點。
?
步驟2:在剛才創建的“Audit-AdventureWorks2012-Create/Alter/Drop”對象上,右鍵選擇“View Audit Logs”。
?
步驟3:在“Log File Viewer”窗口左上角的“Select logs”區域中,確認有勾選“Windows NT”,“Application”。
?
步驟4:在右邊的“Log file summary”區域,即可查看所記錄到數據。
?
?
采用“Windows應用程序事件日志文件”方式來存放審核日志,具備以下特性。
l 審核內部所記錄的日期時間部分,仍以格林威治時間(GMT)來記錄。
l 在應用程序事件日志文件所記錄的日志時間,已經轉為數據庫服務器所在時區的日期時間。
l 審核所記錄到數據全部存放在消息區域內,其“statement”部分,有記錄所執行的T-SQL程序代碼。但這在閱讀與后續分析上,勢必會增加困擾。若與存放到二進制文件的審核目標比較起來,二進制文件存放的審核日志已經分類在各數據行中,如此一來,不但增加可讀性,也容易進行篩選與分析。
?
若使用Windows的事件查看器來閱讀所記錄到的審核數據,可以在“Application”頁查看所記錄的信息。
?
總結
以上是生活随笔為你收集整理的SQL Server 审核(Audit)-- 创建数据库级别的审核的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UVa 1368 - DNA Conse
- 下一篇: enum to IEnumerableT