Condividi tramite


Log di controllo in Database di Azure per MariaDB

Importante

Database di Azure per MariaDB è in fase di ritiro. È consigliabile eseguire la migrazione a Database di Azure per MySQL. Per altre informazioni sulla migrazione a Database di Azure per MySQL, vedere Che cosa sta succedendo a Database di Azure per MariaDB?.

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

Configurare la registrazione di controllo

Importante

Si consiglia di 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.

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

Altri parametri che è possibile modificare includono:

  • audit_log_events: controlla gli eventi da registrare. Vedere la tabella seguente per gli eventi di controllo specifici.
  • audit_log_include_users: utenti di MariaDB da includere per la registrazione. Il valore predefinito per questo parametro è vuoto, che includerà tutti gli utenti per la registrazione. Ha una priorità più elevata di audit_log_exclude_users. La lunghezza massima del parametro è di 512 caratteri
  • audit_log_exclude_users: utenti di MariaDB da escludere dalla registrazione. Consente al massimo quattro utenti. La lunghezza massima del parametro è di 256 caratteri.

Nota

audit_log_include_users ha una priorità più elevata di audit_log_exclude_users. Ad esempio, stante 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 una priorità più elevata.

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

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 MariaDB, è 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.

Schemi dei log di diagnostica

Le sezioni seguenti descrivono l'output dei log di controllo di MariaDB 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.DBFORMARIADB
ResourceType Servers
ResourceId URI risorsa
Resource Nome del server
Category MySqlAuditLogs
OperationName LogEvent
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT
connection_id_d ID di connessione univoco generato da MariaDB
host_s Spazio vuoto
ip_s Indirizzo IP del client che si connette a MariaDB
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.DBFORMARIADB
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
event_time Secondi di inizio query nel timestamp UNIX
error_code_d Codice di errore se la query non è riuscita. 0 indica che non sono presenti errori
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 MariaDB
user_s Nome dell'utente che esegue la query
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 MariaDB 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