SQL Database 稽核記錄格式
適用於:Azure SQL 資料庫 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 工作區、具有類別 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 | 字串 |
obo_middle_tier_app_id | obo_middle_tier_app_id_s | 使用 OBO 存取連線到 SQL Database 的中介層應用程式的應用程式識別碼。 | varchar(120) | 字串 |
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 稽核。