1.創建審核並啓用
創建審核文件的目錄,指定審核文件位置,啓用審核
2. 創建審核規範並啓用
對數據庫中的某張表做insert 、update 、delete 審計
INSERT INTO dbo.[Order] (UserID, Amount)
VALUES (1, 99.99);
GO
select * from dbo.[Order];
DELETE FROM dbo.[Order]
WHERE OrderID = 1;
GO
DELETE FROM dbo.[Order]
WHERE OrderID = 2;
GO
SELECT
event_time AT TIME ZONE 'UTC' AT TIME ZONE 'China Standard Time' AS 本地時間,
action_id, -- 操作類型(D/DELETE、I/INSERT、U/UPDATE)
session_server_principal_name, -- 操作執行者
schema_name, -- 表的架構(如 dbo)
object_name, -- 被操作的表名(如 Order)
statement -- 執行的 SQL 語句(可選,需審計包含語句時才會顯示)
FROM sys.fn_get_audit_file('C:\SQL_Audit_Logs\Audit-server*.sqlaudit', DEFAULT, DEFAULT)
WHERE
-- action_id IN ('DL', 'IN', 'UP') -- 只篩選 DELETE、INSERT、UPDATE 操作
object_name = 'Order' -- 只篩選對 Order 表的操作(可根據實際表名調整)
AND schema_name = 'dbo'; -- 只篩選 dbo 架構下的表(可根據實際架構調整)
只記錄執行的SQL語句
對用户登入登出審計
SELECT
event_time AT TIME ZONE 'UTC' AT TIME ZONE 'China Standard Time' AS 本地時間,
action_id, -- 操作類型代碼(如 'LGI' 對應登錄)
succeeded, -- 1=成功,0=失敗(用於驗證登錄結果)
session_server_principal_name, -- 登錄的用户名
client_ip, -- 客户端IP地址
application_name, -- 客户端應用程序(如 SSMS、應用程序)
statement, -- 相關語句(登錄事件可能為空)
additional_information -- 額外信息(如失敗原因)
FROM sys.fn_get_audit_file('C:\SQL_Audit_Logs\Audit-server*.sqlaudit', DEFAULT, DEFAULT)
ORDER BY event_time DESC;
補充
在 SQL Server 中,服務器審核規範的審核操作類型豐富多樣,以下是主要的類型及解釋:
|
審核操作類型 |
解釋 |
|
|
當應用程序角色的密碼被更改時觸發該事件,用於追蹤應用程序角色密碼的變更操作。 |
|
|
創建、修改或刪除任何審核或審核規範時引發此事件,可用於監控審核自身的變更。 |
|
|
執行備份或還原命令時觸發,用於追蹤數據庫的備份和還原操作。 |
|
|
任何批處理文本、存儲過程或事務管理操作執行完成時引發,SQL Server 2022 及以上版本支持,可追蹤批處理執行完成的情況。 |
|
|
任何批處理文本、存儲過程或事務管理操作開始執行時引發,SQL Server 2022 及以上版本支持,用於追蹤批處理開始執行的事件。 |
|
|
用於報告與 Service Broker 傳輸安全性相關的審核消息,追蹤 Service Broker 的登錄相關事件。 |
|
|
創建、更改或刪除數據庫時觸發,用於監控數據庫的創建、修改和刪除操作。 |
|
|
包含的數據庫用户註銷數據庫時引發,追蹤數據庫用户的登出操作。 |
|
|
報告與數據庫鏡像傳輸安全性相關的審核消息,追蹤數據庫鏡像的登錄相關事件。 |
|
|
訪問數據庫對象(如消息類型、程序集、協定等)時觸發,可能會產生大量審計記錄,用於監控數據庫對象的訪問情況。 |
|
|
對數據庫對象(如架構)執行 CREATE、ALTER 或 DROP 語句時觸發,用於追蹤數據庫對象的創建、修改和刪除操作。 |
|
|
在數據庫範圍內更改對象所有者時觸發,監控數據庫對象所有權的變更。 |
|
|
對數據庫對象(如程序集、架構)發出 GRANT、REVOKE 或 DENY 語句時觸發,追蹤數據庫對象權限的變更。 |
|
|
數據庫中發生操作(如檢查點、訂閲查詢通知等)時觸發,用於監控數據庫的各類操作。 |
|
|
數據庫所有權發生變更時觸發,追蹤數據庫所有權的變化。 |
|
|
數據庫級別的權限(如 GRANT、REVOKE、DENY)發生變更時觸發,監控數據庫權限的變化。 |
|
|
數據庫主體(如用户、角色)發生創建、修改或刪除時觸發,追蹤數據庫主體的變更。 |
|
|
數據庫主體模擬操作發生時觸發,監控數據庫主體的模擬行為。 |
|
|
數據庫角色成員發生變更時觸發,追蹤數據庫角色成員的添加或刪除。 |
|
|
執行 DBCC 命令時觸發,用於監控 DBCC 命令的執行。 |
|
|
主體嘗試登錄數據庫失敗時觸發,追蹤數據庫登錄失敗的事件。 |
|
|
主體嘗試登錄 SQL Server 失敗時觸發,用於追蹤 SQL Server 登錄失敗的事件。 |
|
|
通過 ALTER LOGIN 語句或 sp_password 存儲過程更改登錄密碼時觸發,追蹤登錄密碼的變更。 |
|
|
主體註銷 SQL Server 時觸發,追蹤 SQL Server 的登出操作。 |
|
|
訪問架構對象時觸發,用於監控架構對象的訪問情況。 |
|
|
對架構對象執行 CREATE、ALTER 或 DROP 語句時觸發,追蹤架構對象的創建、修改和刪除操作。 |
|
|
架構對象所有權發生變更時觸發,監控架構對象所有權的變化。 |
|
|
對架構對象發出 GRANT、REVOKE 或 DENY 語句時觸發,追蹤架構對象權限的變更。 |
|
|
對服務器對象(如數據庫、端點)執行 CREATE、ALTER 或 DROP 語句時觸發,追蹤服務器對象的創建、修改和刪除操作。 |
|
|
服務器對象所有權發生變更時觸發,監控服務器對象所有權的變化。 |
|
|
對服務器對象發出 GRANT、REVOKE 或 DENY 語句時觸發,追蹤服務器對象權限的變更。 |
|
|
服務器級別的操作發生時觸發,用於監控服務器的各類操作。 |
|
|
服務器級別的權限(如 GRANT、REVOKE、DENY)發生變更時觸發,監控服務器權限的變化。 |
|
|
服務器主體(如登錄名、服務器角色)發生創建、修改或刪除時觸發,追蹤服務器主體的變更。 |
|
|
服務器主體模擬操作發生時觸發,監控服務器主體的模擬行為。 |
|
|
服務器角色成員發生變更時觸發,追蹤服務器角色成員的添加或刪除。 |
|
|
服務器狀態發生變更時觸發,用於監控服務器的啓動、停止等狀態變化。 |
|
|
跟蹤(Trace)發生創建、修改或刪除時觸發,追蹤跟蹤的變更操作。 |
|
|
事務開始時觸發,用於監控事務的開始操作。 |
|
|
事務提交時觸發,追蹤事務的提交操作。 |
|
|
事務回滾時觸發,監控事務的回滾操作。 |
|
|
用户密碼發生變更時觸發,追蹤用户密碼的變更操作。 |
|
|
主體成功登錄數據庫時觸發,追蹤數據庫登錄成功的事件。 |
|
|
主體成功登錄 SQL Server 時觸發,用於追蹤 SQL Server 登錄成功的事件。 |
在 SQL Server 中,數據庫審核規範的審核操作類型豐富多樣,以下是主要的類型及解釋:
|
審核操作類型 |
解釋 |
|
|
應用程序角色密碼被更改時觸發,用於追蹤應用程序角色密碼的變更操作。 |
|
|
數據庫審核或審核規範被創建、修改或刪除時觸發,監控審核自身的變更。 |
|
|
執行數據庫備份或還原操作時觸發,追蹤數據庫的備份和還原行為。 |
|
|
數據庫被創建、修改或刪除時觸發,用於監控數據庫的生命週期變更。 |
|
|
訪問數據庫對象(如消息類型、程序集、協定等)時觸發,可監控數據庫對象的訪問情況(注意可能產生大量審計記錄)。 |
|
|
對數據庫對象(如架構)執行 CREATE、ALTER 或 DROP 語句時觸發,追蹤數據庫對象的創建、修改和刪除操作。 |
|
|
數據庫對象所有權發生變更時觸發,監控數據庫對象所有權的變化。 |
|
|
對數據庫對象(如程序集、架構)發出 GRANT、REVOKE 或 DENY 語句時觸發,追蹤數據庫對象權限的變更。 |
|
|
數據庫中發生操作(如檢查點、訂閲查詢通知等)時觸發,用於監控數據庫的各類操作。 |
|
|
數據庫所有權發生變更時觸發,追蹤數據庫所有權的變化。 |
|
|
數據庫級別的權限(如 GRANT、REVOKE、DENY)發生變更時觸發,監控數據庫權限的變化。 |
|
|
數據庫主體(如用户、角色)被創建、修改或刪除時觸發,追蹤數據庫主體的變更。 |
|
|
數據庫主體模擬操作發生時觸發,監控數據庫主體的模擬行為。 |
|
|
數據庫角色成員發生變更時觸發,追蹤數據庫角色成員的添加或刪除。 |
|
|
執行 DBCC 命令時觸發,用於監控 DBCC 命令的執行。 |
|
|
主體嘗試登錄數據庫失敗時觸發,追蹤數據庫登錄失敗的事件。 |
|
|
訪問架構對象時觸發,用於監控架構對象的訪問情況。 |
|
|
對架構對象執行 CREATE、ALTER 或 DROP 語句時觸發,追蹤架構對象的創建、修改和刪除操作。 |
|
|
架構對象所有權發生變更時觸發,監控架構對象所有權的變化。 |
|
|
對架構對象發出 GRANT、REVOKE 或 DENY 語句時觸發,追蹤架構對象權限的變更。 |
|
|
主體成功登錄數據庫時觸發,追蹤數據庫登錄成功的事件。 |
|
|
用户密碼發生變更時觸發,追蹤用户密碼的變更操作。 |
|
|
對指定數據庫對象執行刪除操作時觸發,用於細粒度監控數據刪除行為。 |
|
|
對指定數據庫對象執行插入操作時觸發,用於細粒度監控數據插入行為。 |
|
|
對指定數據庫對象執行更新操作時觸發,用於細粒度監控數據更新行為。 |