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 工作區、具有類別 SQLSecurityAuditEvents
的 AzureDiagnostics
資料表,以及具有類別 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 稽核。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應