共用方式為


使用適用於 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 = demouseraudit_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 CONNECTDISCONNECTCHANGE 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 LOGERRORRESULT (只適用於 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 READINSERTUPDATEDELETE
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
    

下一步