Log di controllo in Database di Azure per MySQL
SI APPLICA A: Database di Azure per MySQL - Server singolo
Importante
Database di Azure per MySQL - Server singolo si trova nel percorso di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per MySQL - Server flessibile. Per altre informazioni sulla migrazione a Database di Azure per MySQL - Server flessibile, vedere Che cosa accade 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 delle 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. La priorità è maggiore rispetto aaudit_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 la priorità più alta rispetto a audit_log_exclude_users
. 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.
Event | Descrizione |
---|---|
CONNECTION |
- Avvio della connessione (esito positivo o negativo) - Autenticazione dell'utente con un utente/password diverso 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 portale dei log di controllo.
Nota
Archiviazione Premium account non sono supportati se si inviano i log ad 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 della 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 di connessione univoco generato da MySQL |
host_s |
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 della risorsa |
Generale
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 della 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 viene visualizzato alcun errore |
thread_id_d |
ID del thread che ha eseguito la query |
host_s |
Vuoto |
ip_s |
Indirizzo IP del client che si connette a MySQL |
user_s |
Nome dell'utente che esegue la query |
sql_text_s |
Full query text |
\_ResourceId |
URI della risorsa |
Accesso alla tabella
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 della 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 di 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 |
Full query text |
\_ResourceId |
URI della 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 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 server specifico
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 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 event_class_s, event_subclass_s, user_s, ip_s
Grafico della distribuzione del tipo di evento di controllo 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 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