Log di controllo in Database di Azure per MySQL

SI APPLICA A: Database di Azure per MySQL - Server singolo

Importante

Il server singolo del Database di Azure per MySQL è in fase di ritiro. È consigliabile eseguire l'aggiornamento al server flessibile del Database di Azure per MySQL. Per altre informazioni sulla migrazione a Database di Azure per MySQL - Server flessibile, vedere Cosa succede a Database di Azure per MySQL - Server singolo?

In Database di Azure per MySQL il log di controllo è disponibile per gli utenti. Il log di controllo può essere usato per tenere traccia dell'attività a livello di database e viene comunemente usato per la conformità.

Configurare la registrazione di controllo

Importante

È consigliabile registrare solo i tipi di evento e gli utenti necessari ai fini del controllo per garantire che le prestazioni del server non siano fortemente influenzate e che venga raccolta la quantità minima di dati.

Per impostazione predefinita, il log di controllo è disabilitato. Per abilitarla, impostare su audit_log_enabled ON.

Altri parametri che è possibile modificare includono:

  • audit_log_events: controlla gli eventi da registrare. Vedere la tabella seguente per eventi di controllo specifici.
  • audit_log_include_users: gli utenti di MySQL da includere per la registrazione. Il valore predefinito per questo parametro è vuoto, che includerà tutti gli utenti per la registrazione. Questa priorità è maggiore rispetto a audit_log_exclude_users. La lunghezza massima del parametro è di 512 caratteri.
  • audit_log_exclude_users: gli utenti di MySQL da escludere dalla registrazione. La lunghezza massima del parametro è di 512 caratteri.

Nota

audit_log_include_users ha una priorità più alta rispetto audit_log_exclude_usersa . Ad esempio, se audit_log_include_users = demouser e audit_log_exclude_users = demouser, l'utente verrà incluso nei log di controllo perché audit_log_include_users ha priorità più alta.

Evento Descrizione
CONNECTION - Avvio della connessione (esito positivo o negativo)
- Autenticazione utente con utente/password diversi durante la sessione
- Terminazione della connessione
DML_SELECT Query SELECT
DML_NONSELECT Query INSERT/DELETE/UPDATE
DML DML = DML_SELECT + DML_NONSELECT
DDL Query come "DROP DATABASE"
DCL Query come "GRANT PERMISSION"
ADMIN Query come "SHOW STATUS"
GENERAL Tutti in DML_SELECT, DML_NONSELECT, DML, DDL, DCL e ADMIN
TABLE_ACCESS - Disponibile per MySQL 5.7 e MySQL 8.0
- Istruzioni di lettura tabella, ad esempio SELECT o INSERT INTO ... SELEZIONARE
- Istruzioni delete di tabella, ad esempio DELETE o TRUNCATE TABLE
- Istruzioni insert di tabella, ad esempio INSERT o REPLACE
- Istruzioni di aggiornamento delle tabelle, ad esempio UPDATE

Accedere ai log di controllo

I log di audit sono integrati con i log di diagnostica di Monitoraggio di Azure. Dopo aver abilitato i log di audit nel server MySQL, è possibile emetterli nei log di Monitoraggio di Azure, Hub eventi o Archiviazione di Azure. Per altre informazioni su come abilitare i log di diagnostica nel portale di Azure, vedere l'articolo sul portale dei log di controllo.

Nota

Archiviazione Premium account non sono supportati se si inviano i log all'archiviazione di Azure tramite diagnostica e impostazioni

Schemi dei log di diagnostica

Le sezioni seguenti descrivono l'output dei log di controllo mySQL in base al tipo di evento. A seconda del metodo di output, è possibile che i campi inclusi e il relativo ordine di visualizzazione siano differenti.

Connessione

Proprietà Descrizione
TenantId ID del tenant.
SourceSystem Azure
TimeGenerated [UTC] Timestamp in cui il log è stato registrato in formato UTC.
Type Tipo di log. Sempre AzureDiagnostics
SubscriptionId GUID per la sottoscrizione a cui appartiene il server.
ResourceGroup Nome del gruppo di risorse a cui appartiene il server.
ResourceProvider Nome del provider di risorse. Sempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI risorsa
Resource Nome del server
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nome del server
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT, CHANGE USER (disponibile solo per MySQL 5.7)
connection_id_d ID connessione univoco generato da MySQL
host_s Spazio vuoto
ip_s Indirizzo IP del client che si connette a MySQL
user_s Nome dell'utente che esegue la query
db_s Nome del database connesso a
\_ResourceId URI risorsa

Generali

Lo schema seguente si applica ai tipi di evento GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL e ADMIN.

Nota

Per sql_text, il log verrà troncato se supera i 2048 caratteri.

Proprietà Descrizione
TenantId ID del tenant.
SourceSystem Azure
TimeGenerated [UTC] Timestamp in cui il log è stato registrato in formato UTC.
Type Tipo di log. Sempre AzureDiagnostics
SubscriptionId GUID per la sottoscrizione a cui appartiene il server.
ResourceGroup Nome del gruppo di risorse a cui appartiene il server.
ResourceProvider Nome del provider di risorse. Sempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI risorsa
Resource Nome del server
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nome del server
event_class_s general_log
event_subclass_s LOG, ERROR, RESULT (disponibile solo per MySQL 5.6)
event_time Ora di inizio query nel timestamp UTC
error_code_d Codice di errore se la query non è riuscita. 0 indica che non si è verificato alcun errore
thread_id_d ID del thread che ha eseguito la query
host_s Spazio vuoto
ip_s Indirizzo IP del client che si connette a MySQL
user_s Nome dell'utente che esegue la query
sql_text_s Testo completo della query
\_ResourceId URI risorsa

Accesso alle tabelle

Nota

I log di accesso alle tabelle sono solo output per MySQL 5.7.
Per sql_text, il log verrà troncato se supera i 2048 caratteri.

Proprietà Descrizione
TenantId ID del tenant.
SourceSystem Azure
TimeGenerated [UTC] Timestamp in cui il log è stato registrato in formato UTC.
Type Tipo di log. Sempre AzureDiagnostics
SubscriptionId GUID per la sottoscrizione a cui appartiene il server.
ResourceGroup Nome del gruppo di risorse a cui appartiene il server.
ResourceProvider Nome del provider di risorse. Sempre MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI risorsa
Resource Nome del server
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nome del server
event_class_s table_access_log
event_subclass_s READ, INSERT, UPDATE o DELETE
connection_id_d ID connessione univoco generato da MySQL
db_s Nome del database a cui si accede
table_s Nome della tabella a cui si accede
sql_text_s Testo completo della query
\_ResourceId URI risorsa

Analizzare i log in Log di Monitoraggio di Azure

Dopo che i log di controllo vengono inviati tramite pipe ai log di Monitoraggio di Azure tramite i log di diagnostica, è possibile eseguire un'ulteriore analisi degli eventi controllati. Di seguito sono riportate alcune query di esempio che consentono di iniziare. Assicurarsi di aggiornare il codice seguente con il nome del server.

  • Elencare gli eventi GENERAL in un server specifico

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlAuditLogs' and event_class_s == "general_log"
    | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
    | order by TimeGenerated asc nulls last 
    
  • Elencare gli eventi CONNECTION in un determinato server

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log"
    | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
    | order by TimeGenerated asc nulls last
    
  • Riepilogare gli eventi controllati in un determinato server

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, LogicalServerName_s, 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
    
  • Creare un grafico della distribuzione del tipo di evento di controllo in un server specifico

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
    | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
    | render timechart 
    
  • Elencare gli eventi controllati in tutti i server MySQL con i log di diagnostica abilitati per i log di controllo

    AzureDiagnostics
    | where Category == 'MySqlAuditLogs'
    | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s 
    | order by TimeGenerated asc nulls last
    

Passaggi successivi