天天看點

SQL Server 審計功能-記錄所有的操作記錄

SQL Server 審計-記錄所有的操作記錄

說到審計這個話題,相信作為一個企業管理者都知道,比如一般作為一個AD管理者的話,一般都會通過Policy開啟審計功能,記錄一些自定義的事務日志。對于SQL Server來說,審計也是一樣的,SQL Server審計對象收集單個執行個體的伺服器或資料庫級的動作和行為監控組。 審計是在SQL Server執行個體級。 可以有多個審計/ SQL伺服器執行個體。當你定義一個審計,你指定位置的輸出結果。 這是審計目标。 審計是在建立的禁用狀态,不會自動審計任何行動。 啟用審計後,從審計審計目标接收資料。審計SQL Server的一個執行個體資料庫引擎或單個資料庫包括跟蹤和日志記錄事件發生在資料庫引擎。 SQL Server審計伺服器允許您建立審計,可以包含伺服器伺服器級别事件的審計規範,和資料庫審計規範資料庫級的事件。 審計事件可以寫入事件日志或審計檔案。對于審計的介紹在此就不多介紹了,我們可以在官網上進行搜尋官方文檔進行檢視。開始我們今天的主題:我們通過開啟SQL Server的審計,記錄使用者對資料庫的Insert、update、delete操作。

我們首先建立了一個測試資料庫DB1,然後建立一個表Info

插入一些測試資料

SQL Server 審計功能-記錄所有的操作記錄

接下來我們建立一個審計,來監控對資料庫的所有操作

在資料庫執行個體下--安全性--審計--建立稽核

SQL Server 審計功能-記錄所有的操作記錄
定義稽核名稱及稽核檔案的路勁及大小配置。
SQL Server 審計功能-記錄所有的操作記錄

我們也可以使用腳本

TO FILE:指定輸出到稽核檔案,也可以指定為Security Log和Application Log。

FILEPATH:稽核檔案的目錄位址。

MaxSize:單個稽核檔案的最大容量。

MAXSIZE:類似于Trace,指定Rollover允許最多檔案數。

RESERVE_DISK_SPACE:預先配置設定稽核檔案到MaxSize。個人推薦啟用。

QUEUE_DELAY:指定事件發生到被強制稽核的毫秒間隔。指定為0則為同步稽核。

ON_FAILURE :當稽核向上檔寫入資料失敗時,接下來會采取的行為:CONTINUE | SHUTDOWN | FAIL_OPERATION。

AUDIT_GUID:用于資料庫鏡像。類似Login的SID作用,鏡像會話的主庫如果有稽核,則在鏡像庫建立對應的稽核需要指定同樣GUID。

WHERE:相當于擴充事件中Predicate,用于指定過濾條件。

SQL Server 審計功能-記錄所有的操作記錄
SQL Server 審計功能-記錄所有的操作記錄
審計建立完成之後是禁用的
SQL Server 審計功能-記錄所有的操作記錄
我們右擊--啟用稽核
SQL Server 審計功能-記錄所有的操作記錄
啟用成功
SQL Server 審計功能-記錄所有的操作記錄

我們要定義對哪個資料庫表進行審計操作,我們需要在哪個資料庫下建立--伺服器稽核規範

定義伺服器稽核規範名稱-及前面建立的稽核服務

我們需要在目前的資料庫下建立稽核規範

SQL Server 審計功能-記錄所有的操作記錄
我們通過定義審計操作類型---選擇insert、delete、update等操作
SQL Server 審計功能-記錄所有的操作記錄
我們可以使用腳本建立

USE [DB1]
GO
CREATE DATABASE AUDIT SPECIFICATION [ServerAuditSpecification-DB1]
FOR SERVER AUDIT [Audit-DB1]
ADD (DELETE ON DATABASE::[DB1] BY [public]),
ADD (INSERT ON DATABASE::[DB1] BY [public]),
ADD (UPDATE ON DATABASE::[DB1] BY [public])
WITH (STATE = ON)
GO      
SQL Server 審計功能-記錄所有的操作記錄

這樣就在資料庫DB1下就多出一個資料庫審計規範

SQL Server 審計功能-記錄所有的操作記錄

我們接下來對資料庫進行操作

我們插入一條資料,然後檢視審計

SQL Server 審計功能-記錄所有的操作記錄

右擊--檢視審計log

SQL Server 審計功能-記錄所有的操作記錄

我們發現通過以下方式也是可以看見操作類型資訊的,具體我們可以通過配置篩選進行顯示自定義内容即可

SQL Server 審計功能-記錄所有的操作記錄

我們再次需要需要通過通路生産的審計log進行檢視,通過以下資訊,我們也可以通過指令行進行檢視

SQL Server 審計功能-記錄所有的操作記錄

https://msdn.microsoft.com/en-us/library/cc280765(v=sql.110).aspx

SELECT * FROM sys.fn_get_audit_file ('\\serverName\Audit\HIPPA_AUDIT.sqlaudit',default,default); GO
SELECT * FROM sys.fn_get_audit_file ('D:\Audit_Log\Audit-DB1_29F2408B-C8F5-4747-A3F9-CCFD66D0D8C1_0_131343921494640000.sqlaudit',default,default);
GO      

我們查詢後,發現不是很友好,是以我們需要需要跳出關鍵的字段進行查找

SELECT event_time
, action_id
, succeeded
, session_id
, session_server_principal_name
, object_name
, statement
, file_name
, audit_file_offset
from sys.fn_get_audit_file('D:\Audit_LogFiles\Audit-DB_7CB2AD0B-C97D-4478-8360-E3C3D11B216C_0_131343949988730000.sqlaudit',default,default)