SQL Database 稽核記錄格式

適用于:Azure SQL Database Azure SQL 受控執行個體 Azure Synapse Analytics

Azure SQL Database 稽核 會追蹤資料庫事件並將其寫入您 Azure 儲存體帳戶內的稽核記錄,或將事件傳送至事件中樞或 Log Analytics 以進行下游處理和分析。

命名規範

Blob 稽核

儲存在 Azure Blob 儲存體中的稽核記錄會儲存在 Azure 儲存體帳戶中名為 sqldbauditlogs 的容器中。 容器內目錄階層的形式為 <ServerName>/<DatabaseName>/<AuditName>/<Date>/。 Blob 檔案名稱格式為 <CreationTime>_<FileNumberInSession>.xel,其中 CreationTime 為 UTC hh_mm_ss_ms 格式,而 FileNumberInSession 則是執行中的索引,其可因應工作階段記錄跨多個 Blob 檔案的情形。

舉例來說,針對 Server1 上的資料庫 Database1 而言,以下是可能的有效路徑:

Server1/Database1/SqlDbAuditing_ServerAudit_NoRetention/2019-02-03/12_23_30_794_0.xel

唯讀複本稽核記錄會儲存在相同的容器中。 容器內目錄階層的形式為 <ServerName>/<DatabaseName>/<AuditName>/<Date>/RO/。 Blob 檔案名稱的格式都相同。 唯讀複本的稽核記錄會儲存在相同的容器中。

事件中樞

稽核事件會寫入在稽核設定期間所定義的命名空間和事件中樞,而且在 Apache Avro 事件主體中擷取,並使用 UTF-8 編碼的 JSON 格式來儲存。 若要讀取稽核記錄,您可以使用 Avro Tools 或類似工具來處理這種格式。

Log Analytics

稽核事件會寫入在稽核設定期間定義的 Log Analytics 工作區,並寫入具有類別 SQLSecurityAuditEventsAzureDiagnostics 資料表。 如需 Log Analytics 搜尋語言和命令的其他實用資訊,請參閱 Log Analytics 搜尋參考

稽核記錄欄位

名稱 (blob) 名稱 (事件中樞/Log Analytics) Description Blob 類型 事件中樞/Log Analytics 類型
action_id action_id_s 動作的識別碼 varchar(4) 字串
action_name action_name_s 動作的名稱 N/A 字串
additional_information additional_information_s 有關儲存為 XML 之事件的任何其他資訊 nvarchar(4000) 字串
affected_rows affected_rows_d 查詢所影響的資料列數 BIGINT int
application_name application_name_s 用戶端應用程式的名稱 nvarchar(128) 字串
audit_schema_version audit_schema_version_d 一律為 1 int int
class_type class_type_s 稽核發生所在之可稽核的實體類型 varchar(2) 字串
class_type_desc class_type_description_s 稽核發生所在之可稽核的實體描述 N/A 字串
client_ip client_ip_s 用戶端應用程式的來源 IP nvarchar(128) 字串
connection_id N/A 伺服器中的連線識別碼 GUID N/A
data_sensitivity_information data_sensitivity_information_s 根據資料庫中以分類的資料行,由稽核的查詢所傳回的資訊類型與敏感度標籤。 深入了解 Azure SQL Database 資料探索與分類 nvarchar(4000) 字串
database_name database_name_s 動作發生所在的資料庫環境 sysname 字串
database_principal_id database_principal_id_d 動作執行所在之資料庫使用者環境的識別碼 int int
database_principal_name database_principal_name_s 動作執行所在之資料庫使用者環境的名稱 sysname 字串
duration_milliseconds duration_milliseconds_d 查詢執行持續時間 (毫秒) BIGINT int
event_time event_time_t 可稽核的動作引發時的日期和時間 datetime2 Datetime
host_name N/A 用戶端主機名稱 字串 N/A
is_column_permission is_column_permission_s 指出這是否為資料行層級權限的旗標。 1 = true,0 = false bit 字串
N/A is_server_level_audit_s 指出此稽核是否在伺服器層級的旗標 N/A 字串
object_ id object_id_d 稽核發生所在之實體的識別碼。 這包括:伺服器物件、資料庫、資料庫物件和結構描述物件。 如果此實體為伺服器本身或是稽核並未在物件層級上執行,則為 0 int int
object_name object_name_s 稽核發生所在之實體的名稱。 這包括:伺服器物件、資料庫、資料庫物件和結構描述物件。 如果此實體為伺服器本身或是稽核並未在物件層級上執行,則為 0 sysname 字串
permission_bitmask permission_bitmask_s 當適用時,顯示已授與、拒絕或撤銷的權限 varbinary(16) 字串
response_rows response_rows_d 結果集中傳回的資料列數 BIGINT int
schema_name schema_name_s 動作發生所在的結構描述環境。 如果是發生在結構描述外部的稽核,則為 NULL sysname 字串
N/A securable_class_type_s 對應到正在稽核之 class_type 的安全性實體物件 N/A 字串
sequence_group_id sequence_group_id_g 唯一識別碼 varbinary GUID
sequence_number sequence_number_d 追蹤單一稽核記錄中太長而無法納入稽核寫入緩衝區內的記錄順序 int int
server_instance_name server_instance_name_s 稽核發生所在的伺服器執行個體名稱 sysname 字串
server_principal_id server_principal_id_d 動作執行所在之登入環境的識別碼 int int
server_principal_name server_principal_name_s 目前的登入 sysname 字串
server_principal_sid server_principal_sid_s 目前的登入 SID varbinary 字串
session_id session_id_d 事件發生所在之工作階段的識別碼 SMALLINT int
session_server_principal_name session_server_principal_name_s 工作階段的伺服器主體 sysname 字串
陳述式 statement_s 執行的 T-SQL 陳述式 (如果有的話) nvarchar(4000) 字串
成功 succeeded_s 指示觸發此事件的動作是否成功。 若為登入和批次以外的事件,這只會報告權限檢查成功或失敗,而不會報告作業成功或失敗。 1 = 成功,0 = 失敗 bit 字串
target_database_principal_id target_database_principal_id_d GRANT/DENY/REVOKE 作業執行所在的資料庫主體。如果不適用,則為 0 int int
target_database_principal_name target_database_principal_name_s 動作的目標使用者。 如果不適用,則為 NULL 字串 字串
target_server_principal_id target_server_principal_id_d GRANT/DENY/REVOKE 作業執行所在的伺服器主體。 如果不適用,則傳回 0 int int
target_server_principal_name target_server_principal_name_s 動作的目標登入。 如果不適用,則為 NULL sysname 字串
target_server_principal_sid target_server_principal_sid_s 目標登入的 SID。 如果不適用,則為 NULL varbinary 字串
transaction_id transaction_id_d 僅限 SQL Server (2016 開始) - Azure SQL Database 為 0 BIGINT int
user_defined_event_id user_defined_event_id_d 使用者定義的事件識別碼會當做引數傳遞給 sp_audit_write。 如果是系統事件則為 NULL (預設值),使用者定義的事件則為非零值。 如需詳細資訊,請參閱 sp_audit_write (Transact-SQL) SMALLINT int
user_defined_information user_defined_information_s 使用者定義的資訊會當作引數傳遞給 sp_audit_write。 如果是系統事件則為 NULL (預設值),使用者定義的事件則為非零值。 如需詳細資訊,請參閱 sp_audit_write (Transact-SQL) nvarchar(4000) 字串

後續步驟

深入了解 Azure SQL Database 稽核