共用方式為


使用適用於 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 個字元。 例如,的通配符值 dev* 包含所有使用者,其項目開頭為 “ dev dev1,dev_user,dev_2”。 包含使用者的通配符專案的另一個範例在此範例中是 *dev ,以 「stage_dev,prod_dev,user_dev」 等值結尾的所有用戶都會包含在稽核記錄專案中。 此外,模式中允許使用問號 (?) 做為通配符。
  • audit_log_exclude_users:要從記錄中排除的 MySQL 使用者。 參數的最大長度為 512 個字元。 用戶通配符專案也接受以排除稽核記錄中的使用者。 例如,的 stage* 通配符值會排除所有開頭為關鍵詞 stage 的使用者,例如 “stage1,stage_user,stage_2”。 另一個排除使用者的 *com 通配符專案範例在此範例中,以值 com 結尾的所有用戶都會從稽核記錄專案中排除。 此外,模式中允許使用問號 (?) 做為通配符。

注意

audit_log_include_users 的優先順序高於 audit_log_exclude_users。 例如,如果 audit_log_include_users = demouseraudit_log_exclude_users = demouser,使用者將會包含在稽核記錄中,因為 audit_log_include_users 的優先順序較高。

事件 說明
CONNECTION - 聯機起始
- 連線終止
CONNECTION_V2 - 連線起始(成功或失敗的嘗試錯誤碼)
- 連線終止
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、 、 DISCONNECTCHANGE USER
connection_id_d MySQL 所產生的唯一連線識別碼
host_s Blank
ip_s 連線到 MySQL 的用戶端 IP 位址
user_s 執行查詢的使用者名稱
db_s 連線的目的地資料庫名稱
\_ResourceId 資源 URI
status_d CONNECTIONS_V2事件的連線 錯誤碼 專案。

一般

下列結構描述適用於 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_V2事件, status_d 數據行表示用戶端應用程式在連線時所面對的用戶端連線 錯誤碼

    AzureDiagnostics
    | where Resource  == '<your server name>' //Server name must be in Upper case
    | where Category == 'MySqlAuditLogs' and event_subclass_s == "CONNECT"
    | project TimeGenerated, Resource, event_class_s, event_subclass_s, user_s, ip_s, status_d
    | 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