Share via


Tenere traccia dell'attività del database con i log di controllo in Database di Azure per MySQL - Server flessibile

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

Database di Azure per MySQL server flessibile offre agli utenti la possibilità di configurare i log di controllo. I log di controllo possono essere usati per tenere traccia delle attività a livello di database, inclusi gli eventi di connessione, amministratore, DDL e DML. Questi tipi di log vengono comunemente usati per finalità di conformità.

Configurare la registrazione di controllo

Importante

È consigliabile registrare solo i tipi di evento e gli utenti necessari a scopo di controllo per garantire che le prestazioni del server non siano fortemente interessate e che venga raccolta una quantità minima di dati.

Per impostazione predefinita, i log di controllo sono disabilitati. Per abilitarle, impostare il parametro del audit_log_enabled server su ON. Questa operazione può essere configurata usando il portale di Azure o l'interfaccia della riga di comando di Azure.

Altri parametri che è possibile modificare per controllare il comportamento della registrazione di controllo 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 Connessione ion (esito positivo o negativo)
- Autenticazione utente con utente/password diversi durante la sessione
- terminazione Connessione ion
DML_SELECT query edizione Standard LECT
DML_NONSELECT Query IN edizione Standard RT/DELETE/UPDATE
DML DML = DML_edizione Standard LECT + DML_NONedizione Standard LECT
DDL Query come "DROP DATABA edizione Standard"
DCL Query come "GRANT PERMISSION"
ADMIN Query come "SHOW STATUS"
GENERAL Tutti in DML_edizione Standard LECT, DML_NONedizione Standard LECT, DML, DDL, DCL e ADMIN
TABLE_ACCESS - Istruzioni di lettura tabella, ad esempio edizione Standard LECT o IN edizione Standard RT INTO ... edizione Standard LECT
- Istruzioni delete di tabella, ad esempio DELETE o TRUNCATE TABLE
- Istruzioni insert di tabella, ad esempio IN edizione Standard RT o REPLACE
- Istruzioni di aggiornamento delle tabelle, ad esempio UPDATE

Accedere ai log di controllo

I log di controllo sono integrati con le impostazioni di diagnostica di Monitoraggio di Azure. Dopo aver abilitato i log di controllo nel server flessibile, è possibile generarli nei log di Monitoraggio di Azure, Hub eventi di Azure o Archiviazione di Azure. Per altre informazioni sulle impostazioni di diagnostica, vedere la documentazione dei log di diagnostica. Per altre informazioni su come abilitare le impostazioni di diagnostica nella portale di Azure, vedere l'articolo relativo al 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.

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 in lettere maiuscole
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Nome del server
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT, CHANGE USER
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_edizione Standard LECT, DML_NONedizione Standard LECT, DML, DDL, DCL e ADMIN.

Nota

Per sql_text_s, 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 in lettere maiuscole
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

Per sql_text_s, 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 in lettere maiuscole
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 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
    
  • Elencare gli eventi CONNECTION in un determinato server

    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
    
  • Riepilogare gli eventi controllati in un determinato server

    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
    
  • Creare un grafico della distribuzione del tipo di evento di controllo in un server specifico

    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
    
  • Elencare gli eventi controllati in tutte le istanze del server flessibile Database di Azure per MySQL con i log di diagnostica abilitati per i log di controllo

    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
    

Passaggi successivi