使用適用於 MySQL 的 Azure 資料庫 - 彈性伺服器中的稽核記錄來追蹤資料庫活動
適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器
適用於 MySQL 的 Azure 資料庫彈性伺服器可讓使用者設定稽核記錄。 可使用稽核記錄來追蹤資料庫等級活動,包括連線、管理員、DDL 和 DML 事件。 這些記錄類型通常用於合規性用途。
設定稽核記錄
重要
建議只記錄稽核所需的事件類型和使用者,以確保伺服器的效能不會受到嚴重影響並收集最少量的資料。
稽核記錄預設為停用。 若要啟用記錄,請將 audit_log_enabled
伺服器參數設為 [開啟]。 這可使用 Azure 入口網站或 Azure CLI 進行設定。
您可以調整其他參數,以控制稽核記錄行為,包括:
audit_log_events
:控制要記錄的事件。 如需特定稽核事件,請參閱下表。audit_log_include_users
:要納入記錄的 MySQL 使用者。 此參數的預設值是空的,其中包含所有要記錄的使用者。 此參數的優先順序高於audit_log_exclude_users
。 參數的長度上限為 512 個字元。audit_log_exclude_users
:要從記錄中排除的 MySQL 使用者。 參數的長度上限為 512 個字元。
注意
audit_log_include_users
的優先順序高於 audit_log_exclude_users
。 例如,如果 audit_log_include_users
= demouser
和 audit_log_exclude_users
= demouser
,使用者將會包含在稽核記錄中,因為 audit_log_include_users
的優先順序較高。
事件 | 說明 |
---|---|
CONNECTION |
- 連線初始化 (成功或失敗) - 工作階段期間使用不同的使用者/密碼重新驗證使用者 - 連線終止 |
DML_SELECT |
SELECT 查詢 |
DML_NONSELECT |
INSERT/DELETE/UPDATE 查詢 |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
查詢,例如「DROP DATABASE」 |
DCL |
查詢,例如「GRANT PERMISSION」 |
ADMIN |
查詢,例如「SHOW STATUS」 |
GENERAL |
都在 DML_SELECT、DML_NONSELECT、DML、DDL、DCL 和 ADMIN 中 |
TABLE_ACCESS |
- 資料表讀取陳述式,例如 SELECT 或 INSERT INTO ...SELECT - 資料表刪除陳述式,例如 DELETE 或 TRUNCATE TABLE - 資料表插入陳述式,例如 INSERT 或 REPLACE - 資料表更新陳述式,例如 UPDATE |
存取稽核記錄
稽核記錄會與 Azure 監視器診斷設定整合。 一旦您已在彈性伺服器上啟用稽核記錄,就可以將其發出至 Azure 監視器記錄、Azure 事件中樞或 Azure 儲存體。 若要深入瞭解診斷設定,請參閱診斷記錄文件。 若要深入瞭解如何在 Azure 入口網站中啟用診斷設定,請參閱稽核記錄入口網站文章。
注意
如果透過診斷和設定將記錄傳送至 Azure 儲存體,則不支援進階儲存體帳戶。
下列各節說明 MySQL 稽核記錄根據事件類型產生的輸出。 視輸出方法而定,包含的欄位及其出現的順序可能有所不同。
連線
屬性 | 說明 |
---|---|
TenantId |
您的租用戶識別碼 |
SourceSystem |
Azure |
TimeGenerated [UTC] |
以 UTC 記錄記錄時的時間戳記 |
Type |
記錄的類型。 一律為 AzureDiagnostics |
SubscriptionId |
伺服器所屬訂用帳戶的 GUID |
ResourceGroup |
伺服器所屬資源群組的名稱 |
ResourceProvider |
資源提供者名稱。 一律為 MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
資源 URI |
Resource |
大寫的伺服器名稱 |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
伺服器的名稱 |
event_class_s |
connection_log |
event_subclass_s |
CONNECT 、DISCONNECT 、CHANGE USER |
connection_id_d |
MySQL 所產生的唯一連線識別碼 |
host_s |
Blank |
ip_s |
連線到 MySQL 的用戶端 IP 位址 |
user_s |
執行查詢的使用者名稱 |
db_s |
連線的目的地資料庫名稱 |
\_ResourceId |
資源 URI |
一般
下列結構描述適用於 GENERAL、DML_SELECT、DML_NONSELECT、DML、DDL、DCL 和 ADMIN 事件類型。
注意
對於 sql_text_s
,如果記錄超過 2048 個字元,將會遭到截斷。
屬性 | 說明 |
---|---|
TenantId |
您的租用戶識別碼 |
SourceSystem |
Azure |
TimeGenerated [UTC] |
以 UTC 記錄記錄時的時間戳記 |
Type |
記錄的類型。 一律為 AzureDiagnostics |
SubscriptionId |
伺服器所屬訂用帳戶的 GUID |
ResourceGroup |
伺服器所屬資源群組的名稱 |
ResourceProvider |
資源提供者名稱。 一律為 MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
資源 URI |
Resource |
大寫的伺服器名稱 |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
伺服器的名稱 |
event_class_s |
general_log |
event_subclass_s |
LOG 、ERROR 、RESULT (只適用於 MySQL 5.6) |
event_time |
UTC 時間戳記中的查詢開始時間 |
error_code_d |
查詢失敗時的錯誤碼。 0 表示沒有錯誤 |
thread_id_d |
執行查詢的執行緒識別碼 |
host_s |
Blank |
ip_s |
連線到 MySQL 的用戶端 IP 位址 |
user_s |
執行查詢的使用者名稱 |
sql_text_s |
完整查詢文字 |
\_ResourceId |
資源 URI |
資料表存取
注意
對於 sql_text_s
,如果記錄超過 2048 個字元,將會遭到截斷。
屬性 | 說明 |
---|---|
TenantId |
您的租用戶識別碼 |
SourceSystem |
Azure |
TimeGenerated [UTC] |
以 UTC 記錄記錄時的時間戳記 |
Type |
記錄的類型。 一律為 AzureDiagnostics |
SubscriptionId |
伺服器所屬訂用帳戶的 GUID |
ResourceGroup |
伺服器所屬資源群組的名稱 |
ResourceProvider |
資源提供者名稱。 一律為 MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
資源 URI |
Resource |
大寫的伺服器名稱 |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
伺服器的名稱 |
event_class_s |
table_access_log |
event_subclass_s |
READ 、INSERT 、UPDATE 或 DELETE |
connection_id_d |
MySQL 所產生的唯一連線識別碼 |
db_s |
存取的資料庫名稱 |
table_s |
存取的資料表名稱 |
sql_text_s |
完整查詢文字 |
\_ResourceId |
資源 URI |
分析 Azure 監視器記錄中的記錄
透過診斷記錄將稽核記錄輸送至 Azure 監視器記錄後,您即可對稽核事件執行進一步分析。 以下是可協助您開始使用的樣本查詢。 務必以您的伺服器名稱更新以下內容。
列出特定伺服器上的 GENERAL 事件
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' and event_class_s == "general_log" | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
列出特定伺服器上的 CONNECTION 事件
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log" | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
摘要說明特定伺服器上的稽核事件
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | summarize count() by event_class_s, event_subclass_s, user_s, ip_s
繪製圖表呈現特定伺服器上的稽核事件類型分佈
AzureDiagnostics | where Resource == '<your server name>' //Server name must be in Upper case | where Category == 'MySqlAuditLogs' | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | summarize count() by Resource, bin(TimeGenerated, 5m) | render timechart
針對所有已啟用診斷記錄以取得稽核記錄、適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體,列出在其上稽核到的事件
AzureDiagnostics | where Category == 'MySqlAuditLogs' | project TimeGenerated, Resource, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s | order by TimeGenerated asc nulls last
下一步
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應