SQL Database 稽核記錄格式

適用於:Azure SQL DatabaseAzure 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 資料表,以及具有類別 DevOpsOperationsAudit 的 Microsoft 支援服務作業資料表。 如需 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 string
obo_middle_tier_app_id obo_middle_tier_app_id_s 使用 OBO 存取連線到 SQL 資料庫 之仲介層應用程式的應用程式識別碼。 varchar(120) string
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 追蹤單一稽核記錄中太長而無法納入稽核寫入緩衝區內的記錄順序。 請注意,Azure SQL Database 和 Azure Synapse 稽核會在稽核記錄中的字元欄位儲存 4000 個字元的資料。 當超過 4000 個字元時,超過前 4000 個字元的任何資料將被截斷 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 稽核