SQL Server 稽核功能可讓您稽核伺服器層級和資料庫層級的事件群組和個別事件。 如需詳細資訊,請參閱 SQL Server 稽核 (資料庫引擎)。
SQL Server 稽核是由零或多個稽核動作項目所組成。 這些稽核行動項目可以是一組動作,如Server_Object_Change_Group,或是單一動作,如表格上的 SELECT 操作。
Note
Server_Object_Change_Group包含任何伺服器物件(資料庫或端點)的 CREATE、ALTER 和 DROP。
稽核的動作可以歸於以下類別:
伺服器層級。 這些動作包含伺服器作業,例如管理變更及登入和登出作業。
資料庫層級。 這些動作包括資料操作語言 (DML) 及資料定義語言 (DDL) 作業。
稽核層級。 這些動作包含稽核程序中的動作。
在 SQL Server 稽核元件上執行的某些動作會在特定稽核中進行內部稽核,而且在這些情況下,稽核事件會自動發生,因為此事件發生在父物件上。
本質上會被稽核的動作如下:
- 伺服器審核狀態變更(將狀態設定為開啟或關閉)
以下事件本身不被審計:
CREATE SERVER AUDIT SPECIFICATION
ALTER SERVER AUDIT SPECIFICATION
DROP SERVER AUDIT SPECIFICATION
CREATE DATABASE AUDIT SPECIFICATION
ALTER DATABASE AUDIT SPECIFICATION
DROP DATABASE AUDIT SPECIFICATION
所有稽核在初次建立時會被停用。
Server-Level 審計行動小組
伺服器層級的稽核動作群組是類似於 SQL Server 安全性稽核事件類別的動作。 如需詳細資訊,請參閱 SQL Server Event Class Reference。
下表說明伺服器層級的稽核動作群組,並提供適用的同等 SQL Server 事件類別。
| 動作群組名稱 | Description |
|---|---|
| APPLICATION_ROLE_CHANGE_PASSWORD_GROUP | 每當變更應用程式角色的密碼時,就會引發這個事件。 相當於Audit App Role Change Password Event Class。 |
| AUDIT_CHANGE_GROUP | 每當任何稽核被建立、修改或刪除時,此事件都會被觸發。 每當建立、修改或刪除任何稽核規格時,就會引發這個事件。 對稽核的任何變更都會在該稽核中記錄。 等於< Audit Change Audit Event Class>。 |
| BACKUP_RESTORE_GROUP | 每當發出備份或還原命令時,就會引發這個事件。 相當於 Audit Backup 和 Restore 事件類別。 |
| BROKER_LOGIN_GROUP | 觸發事件以報告與 Service Broker 傳輸安全性相關的稽核訊息。 等於< Audit Broker Login Event Class>。 |
| DATABASE_CHANGE_GROUP | 當建立、改變或卸除資料庫時,就會引發這個事件。 每當任何資料庫被建立、修改或丟棄時,此事件都會被觸發。 等同於 Audit Database Management Event Class。 |
| DATABASE_LOGOUT_GROUP | 當包含的資料庫使用者登出資料庫時,會觸發此事件。 相當於審計資料庫的登出事件類別。 |
| DATABASE_MIRRORING_LOGIN_GROUP | 事件被觸發,以報告與資料庫鏡像傳輸安全機制相關的稽核訊息。 等於 Audit Database Mirroring Login Event Class。 |
| DATABASE_OBJECT_ACCESS_GROUP | 每當存取類似訊息類型、組件和合約等資料庫物件時,就會引發這個事件。 任何對任何資料庫的存取都會引發此事件。 註: 這可能導致大量審計紀錄。 等於Audit Database Object Access Event Class。 |
| DATABASE_OBJECT_CHANGE_GROUP | 當對資料庫物件(如結構)執行 CREATE、ALTER 或 DROP 語句時,會觸發此事件。 每當任何資料庫物件被建立、修改或丟棄時,此事件都會被觸發。
註: 這可能導致大量審計紀錄。 等於 Audit Database Object Management Event Class。 |
| DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP | 當資料庫範圍內的物件擁有者發生變更時,就會引發這個事件。 伺服器上任何資料庫的任何物件擁有權變更都會引發這個事件。 等同於「Audit Database Object Take Ownership Event Class」。 |
| DATABASE_OBJECT_PERMISSION_CHANGE_GROUP | 當 GRANT資料庫物件(如組件與結構)已發出 , REVOKE, 或 DENY 時,會觸發此事件。 伺服器上任何資料庫的任何物件權限變更都會引發這個事件。 等同於Audit Database Object GDR Event Class。 |
| DATABASE_OPERATION_GROUP | 當發生資料庫中的作業 (如檢查點或訂閱查詢通知) 時,將會引發這個事件。 資料庫的任何操作都會觸發此事件。 等同於「Audit Database Operation Event Class」。 |
| DATABASE_OWNERSHIP_CHANGE_GROUP | 當您使用 ALTER AUTHORIZATION 語句來變更資料庫的擁有者,以及檢查該動作所需的許可權時,就會引發此事件。 伺服器上任何資料庫的擁有權變更都會引發這個事件。 相當於 Audit Change Database Owner Event Class。 |
| DATABASE_PERMISSION_CHANGE_GROUP | 每當 SQL Server 中的任何主體針對語句許可權發出GRANT、REVOKE或DENY時,就會引發此事件(這適用於僅限資料庫的事件,例如授與資料庫的許可權)。 伺服器上任何資料庫的任何資料庫權限變更 (GDR) 都會引發此事件。 此等同於 Audit Database Scope GDR Event Class。 |
| DATABASE_PRINCIPAL_CHANGE_GROUP | 當從資料庫建立、修改或刪除使用者等主體時,會引發這個事件。 相當於「Audit Database Principal Management Event Class」的事件類別。 (也相當於 Audit Add DB 主事件類別,該類別發生在已棄用的 sp_grantdbaccess、sp_revokedbaccess、sp_addPrincipal 和 sp_dropPrincipal 儲存程序上。) 每當使用sp_addrole、sp_droprole儲存程序新增或移除資料庫角色時,此事件都會被觸發。 每當從任何資料庫建立、改變或卸除任何資料庫主體時,就會引發這個事件。 相當於 Audit Add Role Event Class。 |
| DATABASE_PRINCIPAL_IMPERSONATION_GROUP | 當資料庫範圍內存在模擬操作(如 EXECUTE AS<principal> 或 SETPRINCIPAL)時,會觸發此事件。 此事件會因在任何資料庫中進行的身份模仿而引發。 相當於 Audit Database Principal Impersonation Event Class。 |
| DATABASE_ROLE_MEMBER_CHANGE_GROUP | 每當從資料庫角色中加入或移除登入時,就會引發這個事件。 此事件類別用於sp_addrolemember、sp_changegroup 及 sp_droprolemember 儲存程序。 任何資料庫中的任何資料庫角色成員變更都會引發這個事件。 等於Audit Add Member to DB Role 事件類別。 |
| DBCC_GROUP | 每當任何主體發出 DBCC 命令時,就會引發這個事件。 等同於 Audit DBCC Event Class。 |
| FAILED_DATABASE_AUTHENTICATION_GROUP | 表示某個主體嘗試登入具限制的資料庫卻失敗。 此類別中的事件是由新連接引發,或是由連接集區中重複使用的連接所引發。 等同於Audit Login Failed Event Class。 |
| 登錄失敗組侖 | 表示主體嘗試登入 SQL Server 但失敗。 此類別中的事件是由新連接引發,或是由連接集區中重複使用的連接所引發。 等同於Audit Login Failed Event Class。 |
| FULLTEXT_GROUP | 表示發生全文檢索事件。 等於「Audit Fulltext Event Class」。 |
| LOGIN_CHANGE_PASSWORD_GROUP | 每當登入密碼透過語句或sp_password儲存程序變更 ALTER LOGIN 時,此事件都會被觸發。 等同於 Audit Login Change Password Event Class。 |
| LOGOUT_GROUP | 表示主體已登出 SQL Server。 此類別中的事件是由新連接引發,或是由連接集區中重複使用的連接所引發。 等同於Audit Logout Event Class。 |
| SCHEMA_OBJECT_ACCESS_GROUP | 每當在模式中使用物件的權限時,都會引發這個事件。 等於< Audit Schema Object Access Event Class>。 |
| SCHEMA_OBJECT_CHANGE_GROUP | 當對結構執行 CREATE、ALTER 或 DROP 操作時,會觸發此事件。 等於<Audit Schema Object Management Event Class>。 這個事件會在模式物件上觸發。 等於Audit Object Derived Permission Event Class。 每當任何資料庫的任何結構描述變更時,就會引發這個事件。 等於《Audit Statement Permission Event Class》。 |
| SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP | 當檢查是否有變更結構描述物件 (例如,資料表、程序或函數) 之擁有者的權限時,就會引發這個事件。 當語句用來將擁有者指派給物件時 ALTER AUTHORIZATION ,就會發生這種情況。 伺服器上任何資料庫的任何結構描述擁有權變更都會引發這個事件。 相當於稽核結構描述物件取得擁有權的事件類別。 |
| SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP | 針對結構描述物件執行 grant、deny、revoke 時,就會引發這個事件。 等於 Audit Schema Object GDR Event Class。 |
| SERVER_OBJECT_CHANGE_GROUP | 此事件用於伺服器物件的 CREATE、ALTER 或 DROP 操作。 等於< Audit Server Object Management Event Class>。 |
| SERVER_OBJECT_OWNERSHIP_CHANGE_GROUP | 當伺服器範圍內的物件擁有者改變時,就會引發這個事件。 相當於Audit Server Object Take Ownership Event Class。 |
| SERVER_OBJECT_PERMISSION_CHANGE_GROUP | 每當 SQL Server 中的任何主體對伺服器物件許可權發出 GRANT、REVOKE 或 DENY 時,就會引發這個事件。 等同於Audit Server Object GDR Event Class。 |
| SERVER_OPERATION_GROUP | 當使用安全稽核操作(如更改設定、資源、外部存取或授權)時,會觸發此事件。 等於< Audit Server Operation Event Class>。 |
| 伺服器權限變更群組 | 當 GRANT伺服器範圍內的權限(例如建立登入)被發出 , REVOKE, 或 DENY 時,會觸發此事件。 等同於「Audit Server Scope GDR Event Class」。 |
| SERVER_PRINCIPAL_CHANGE_GROUP | 當建立、改變或卸除伺服器主體時,就會引發這個事件。 等於< Audit Server Principal Management Event Class>。 當主體發出sp_defaultdb或sp_defaultlanguage儲存程序或 ALTER LOGIN 語句時,會觸發此事件。 等於Audit Addlogin Event Class。 此事件在sp_addlogin及sp_droplogin儲存程序中被提出。 也等同於 Audit Login Change Property Event Class。 此事件會為sp_grantlogin或sp_revokelogin儲存程序所觸發。 等於 Audit Login GDR Event Class。 |
| SERVER_PRINCIPAL_IMPERSONATION_GROUP | 當伺服器範圍內存在冒充行為(例如 EXECUTE AS<登入>)時,會觸發此事件。 相當於Audit Server Principal Impersonation Event Class。 |
| SERVER_ROLE_MEMBER_CHANGE_GROUP | 每當從固定伺服器角色中加入或移除登入時,就會引發這個事件。 此事件用於sp_addsrvrolemember,sp_dropsrvrolemember儲存程序。 等同於 Audit Add Login to Server Role 事件類別。 |
| SERVER_STATE_CHANGE_GROUP | 當修改 SQL Server 服務狀態時,就會引發這個事件。 等同於 Audit Server Starts and Stops Event Class。 |
| SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP | 表示主體已成功登入封閉資料庫。 相當於審計成功資料庫認證事件類別。 |
| 成功登入群組 | 表示主體已成功登入 SQL Server。 此類別中的事件是由新連接引發,或是由連接集區中重複使用的連接所引發。 等於< Audit Login Event Class>。 |
| TRACE_CHANGE_GROUP | 此事件會針對所有檢查 ALTER TRACE 權限的語句所觸發。 等於< Audit Server Alter Trace Event Class>。 |
| USER_CHANGE_PASSWORD_GROUP | 每當使用 ALTER USER 語句變更自主資料庫用戶的密碼時,就會引發此事件。 |
| USER_DEFINED_AUDIT_GROUP | 該小組透過使用 sp_audit_write(Transact-SQL)來監測事件。 通常觸發程式或預存程式會呼叫 sp_audit_write 來啟用重要事件的稽核。 |
考慮事項
伺服器層級的動作群組涵蓋了跨 SQL Server 執行個體的動作。 例如,如果將適當的動作群組加入伺服器稽核規格,就會記錄任何資料庫中的任何結構描述物件存取檢查。 在資料庫稽核規格中,只會記錄該資料庫中的結構描述物件存取。
伺服器層級的動作不允許對資料庫層級的動作進行詳細篩選。 需要進行資料庫層級的稽核,例如對員工群組中客戶資料表的 SELECT 行動進行審計,以實現詳細的動作過濾。 在使用者資料庫稽核規範中,請勿包含伺服器範圍物件,如系統視圖。
Database-Level 審計行動小組
Database-Level 稽核行動群組是類似SQL Server安全稽核事件類別的行動。 如需有關事件類別的詳細資訊,請參閱< SQL Server Event Class Reference>。
下表說明資料庫層級的稽核動作群組,並提供適用的同等 SQL Server 事件類別。
| 動作群組名稱 | Description |
|---|---|
| APPLICATION_ROLE_CHANGE_PASSWORD_GROUP | 每當變更應用程式角色的密碼時,就會引發這個事件。 相當於Audit App Role Change Password Event Class。 |
| AUDIT_CHANGE_GROUP | 每當任何稽核被建立、修改或刪除時,此事件都會被觸發。 每當建立、修改或刪除任何稽核規格時,就會引發這個事件。 對稽核的任何變更都會在該稽核中記錄。 等於< Audit Change Audit Event Class>。 |
| BACKUP_RESTORE_GROUP | 每當發出備份或還原命令時,就會引發這個事件。 相當於 Audit Backup 和 Restore 事件類別。 |
| DATABASE_CHANGE_GROUP | 當建立、改變或卸除資料庫時,就會引發這個事件。 等同於 Audit Database Management Event Class。 |
| DATABASE_LOGOUT_GROUP | 當包含的資料庫使用者登出資料庫時,會觸發此事件。 相當於 Audit Backup 和 Restore 事件類別。 |
| DATABASE_OBJECT_ACCESS_GROUP | 每當存取類似憑證和非對稱金鑰等資料庫物件時,就會引發這個事件。 等於Audit Database Object Access Event Class。 |
| DATABASE_OBJECT_CHANGE_GROUP | 當對資料庫物件(如結構)執行 CREATE、ALTER 或 DROP 語句時,會觸發此事件。 等於 Audit Database Object Management Event Class。 |
| DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP | 當資料庫範圍內的物件擁有者發生變更時,就會引發這個事件。 等同於「Audit Database Object Take Ownership Event Class」。 |
| DATABASE_OBJECT_PERMISSION_CHANGE_GROUP | 當 GRANT資料庫物件(如組件與結構)已發出 , REVOKE, 或 DENY 時,會觸發此事件。 等同於Audit Database Object GDR Event Class。 |
| DATABASE_OPERATION_GROUP | 當發生資料庫中的作業 (如檢查點或訂閱查詢通知) 時,將會引發這個事件。 等同於「Audit Database Operation Event Class」。 |
| DATABASE_OWNERSHIP_CHANGE_GROUP | 當您使用 ALTER AUTHORIZATION 語句來變更資料庫的擁有者,以及檢查該動作所需的許可權時,就會引發此事件。 相當於 Audit Change Database Owner Event Class。 |
| DATABASE_PERMISSION_CHANGE_GROUP | 每當 SQL Server 中的任何使用者針對僅限資料庫的事件(例如授與資料庫許可權)發出 GRANT、REVOKE 或 DENY 語句許可權時,就會引發此事件。 此等同於 Audit Database Scope GDR Event Class。 |
| DATABASE_PRINCIPAL_CHANGE_GROUP | 當從資料庫建立、修改或刪除使用者等主體時,會引發這個事件。 相當於「Audit Database Principal Management Event Class」的事件類別。 同時也等同於 Audit Add DB 使用者事件類別,該類別發生在已棄用的 sp_grantdbaccess、sp_revokedbaccess、sp_adduser 及 sp_dropuser 儲存程序上。 每當使用已棄用的sp_addrole和sp_droprole儲存程序新增或移除資料庫角色時,此事件都會被觸發。 相當於 Audit Add Role Event Class。 |
| DATABASE_PRINCIPAL_IMPERSONATION_GROUP | 當資料庫範圍內存在冒充行為(如 EXECUTE AS<user> 或 SETUSER)時,會觸發此事件。 相當於 Audit Database Principal Impersonation Event Class。 |
| DATABASE_ROLE_MEMBER_CHANGE_GROUP | 每當從資料庫角色中加入或移除登入時,就會引發這個事件。 此事件類別用於 sp_addrolemember、sp_changegroup 及 sp_droprolemember 儲存程序。相當於 審計新增成員到 DB 角色事件類別 |
| DBCC_GROUP | 每當任何主體發出 DBCC 命令時,就會引發這個事件。 等同於 Audit DBCC Event Class。 |
| FAILED_DATABASE_AUTHENTICATION_GROUP | 表示某個主體嘗試登入具限制的資料庫卻失敗。 此類別中的事件是由新連接引發,或是由連接集區中重複使用的連接所引發。 此事件被引發。 |
| SCHEMA_OBJECT_ACCESS_GROUP | 每當在模式中使用物件的權限時,都會引發這個事件。 等於< Audit Schema Object Access Event Class>。 |
| SCHEMA_OBJECT_CHANGE_GROUP | 當對結構執行 CREATE、ALTER 或 DROP 操作時,會觸發此事件。 等於<Audit Schema Object Management Event Class>。 這個事件會在模式物件上觸發。 等於Audit Object Derived Permission Event Class。 也等同於Audit Statement Permission Event Class。 |
| SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP | 當檢查變更結構描述物件(如資料表、程序或函數)擁有者的權限時,會引發此事件。 當語句用來將擁有者指派給物件時 ALTER AUTHORIZATION ,就會發生這種情況。 相當於稽核結構描述物件取得擁有權的事件類別。 |
| SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP | 當對結構描述物件執行授予、拒絕或撤銷操作時,會觸發此事件。 等於 Audit Schema Object GDR Event Class。 |
| SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP | 表示主體已成功登入封閉資料庫。 相當於審計成功資料庫認證事件類別。 |
| USER_CHANGE_PASSWORD_GROUP | 每當使用 ALTER USER 語句變更自主資料庫用戶的密碼時,就會引發此事件。 |
| USER_DEFINED_AUDIT_GROUP | 該小組透過使用 sp_audit_write(Transact-SQL)來監測事件。 |
Database-Level 審計行動
資料庫層級動作支援直接稽核資料庫結構與結構物件的特定動作,例如資料表、檢視、儲存程序、函式、擴充儲存程序、佇列、同義詞。 類型、XML 架構集合、資料庫與架構不會被稽核。 結構物件的審核可在 Schema 與資料庫中設定,意即指定結構或資料庫中所有結構物件的事件都會被稽核。 下表說明資料庫層級的稽核動作。
| Action | Description |
|---|---|
| SELECT | 每當發出 SELECT 通知時,此事件都會被提出。 |
| UPDATE | 每當 UPDATE 發出 時,就會引發此事件。 |
| INSERT | 每當 INSERT 發出 時,就會引發此事件。 |
| DELETE | 每當 DELETE 發出 時,就會引發此事件。 |
| EXECUTE | 每當執行命令發出時,此事件都會被觸發。 |
| RECEIVE | 每當 RECEIVE 發出 時,就會引發此事件。 |
| 參考資料 | 每當檢查 REFERENCES 權限時,此事件都會被觸發。 |
考慮事項
資料庫層級的稽核行動不適用於欄位。
當查詢處理器參數化查詢時,此參數可能會顯示在稽核事件記錄而非查詢的資料行值中。
RPC 語句不會被記錄。
Audit-Level 審計行動小組
您也可以在稽核程序中稽核活動。 這可以是伺服器範圍或資料庫範圍。 在資料庫範圍內,只發生於資料庫稽核規範。 下表說明稽核層級的稽核動作群組。
| 動作群組名稱 | Description |
|---|---|
| AUDIT_ CHANGE_GROUP | 當發出以下指令時,此事件會被觸發: - CREATE SERVER AUDIT - ALTER SERVER AUDIT - DROP SERVER AUDIT - CREATE SERVER AUDIT SPECIFICATION - ALTER SERVER AUDIT SPECIFICATION - DROP SERVER AUDIT SPECIFICATION - CREATE DATABASE AUDIT SPECIFICATION - ALTER DATABASE AUDIT SPECIFICATION - DROP DATABASE AUDIT SPECIFICATION |
相關內容
CREATE SERVER AUDIT (Transact-SQL)
ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER AUDIT (Transact-SQL)
CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER AUTHORIZATION (Transact-SQL)
sys.fn_get_audit_file (Transact-SQL)
sys.server_audits (Transact-SQL)
sys.server_file_audits(Transact-SQL)
sys.server_audit_specifications(Transact-SQL)
sys.server_audit_specification_details (Transact-SQL)
sys.database_audit_specifications (Transact-SQL)
sys.database_audit_specification_details(Transact-SQL)
sys.dm_server_audit_status (Transact-SQL)