Dela via


Spåra databasaktivitet med granskningsloggar i Azure Database for MySQL – flexibel server

GÄLLER FÖR: Azure Database for MySQL – flexibel server

Azure Database for MySQL – flexibel server ger användarna möjlighet att konfigurera granskningsloggar. Granskningsloggar kan användas för att spåra aktiviteter på databasnivå, inklusive anslutnings-, administratörs-, DDL- och DML-händelser. Den här typen av loggar används ofta för att uppfylla efterlevnadskrav.

Konfigurera granskningsloggning

Viktigt!

Vi rekommenderar att du endast loggar de händelsetyper och användare som krävs för dina granskningsändamål för att säkerställa att serverns prestanda inte påverkas kraftigt och att en minsta mängd data samlas in.

Som standard är granskningsloggar inaktiverade. Om du vill aktivera dem anger du audit_log_enabled serverparametern till . Detta kan konfigureras med hjälp av Azure-portalen eller Azure CLI.

Andra parametrar som du kan justera för att kontrollera granskningsloggningsbeteendet är:

  • audit_log_events: styr de händelser som ska loggas. Se tabellen nedan för specifika granskningshändelser.
  • audit_log_include_users: MySQL-användare som ska inkluderas för loggning. Standardvärdet för den här parametern är tomt, vilket inkluderar alla användare för loggning. Detta har högre prioritet än audit_log_exclude_users. Maxlängden för parametern är 512 tecken. Jokerteckenvärdet dev* omfattar till exempel alla användare med poster som börjar med nyckelord dev som "dev1,dev_user,dev_2". Ett annat exempel för jokerteckenpost för att inkludera användare är *dev i det här exemplet, alla användare som slutar med värdet "dev" som "stage_dev,prod_dev,user_dev" ingår i granskningsloggposterna. Dessutom tillåts användning av ett frågetecken (?) som jokertecken i mönster.
  • audit_log_exclude_users: MySQL-användare som ska undantas från loggning. Maxlängden för parametern är 512 tecken. Jokerteckenposter för användare accepteras också för att exkludera användare i granskningsloggar. Jokerteckenvärdet stage* exkluderar till exempel alla användare med poster som börjar med nyckelord stage som "stage1,stage_user,stage_2". Ett annat exempel för jokerteckenpost för att exkludera användare är *com i det här exemplet att alla användare som slutar med värdet com undantas från granskningsloggposterna. Dessutom tillåts användning av ett frågetecken (?) som jokertecken i mönster.

Kommentar

audit_log_include_users har högre prioritet än audit_log_exclude_users. Om och audit_log_exclude_users = demouser, inkluderas användaren till exempel = audit_log_include_usersdemouser i granskningsloggarna eftersom audit_log_include_users den har högre prioritet.

Händelse Beskrivning
CONNECTION – Anslutningsinitiering
– Anslutningsavslut
CONNECTION_V2 – Anslutningsinitiering (lyckad eller misslyckad felkod)
– Anslutningsavslut
DML_SELECT SELECT-frågor
DML_NONSELECT INFOGA/TA BORT/UPPDATERA frågor
DML DML = DML_SELECT + DML_NONSELECT
DDL Frågor som "DROP DATABASE"
DCL Frågor som "BEVILJA BEHÖRIGHET"
ADMIN Frågor som "SHOW STATUS"
GENERAL Allt i DML_SELECT, DML_NONSELECT, DML, DDL, DCL och ADMIN
TABLE_ACCESS - Tabellläsningssatser, till exempel SELECT eller INSERT INTO ... UTVALD
– Ta bort tabellinstruktioner, till exempel TA BORT eller TRUNKERA TABELL
– Infoga tabellinstruktioner, till exempel INSERT eller REPLACE
– Tabelluppdateringsinstruktioner, till exempel UPDATE

Åtkomst till granskningsloggar

Granskningsloggar är integrerade med Diagnostikinställningar för Azure Monitor. När du har aktiverat granskningsloggar på den flexibla servern kan du skicka dem till Azure Monitor-loggar, Azure Event Hubs eller Azure Storage. Mer information om diagnostikinställningar finns i dokumentationen för diagnostikloggar. Mer information om hur du aktiverar diagnostikinställningar i Azure-portalen finns i artikeln om granskningsloggportalen.

Kommentar

Premium Storage-konton stöds inte om du skickar loggarna till Azure Storage via diagnostik och inställningar.

I följande avsnitt beskrivs utdata från MySQL-granskningsloggar baserat på händelsetypen. Beroende på utdatametoden kan fälten som ingår och i vilken ordning de visas variera.

Connection

Property Beskrivning
TenantId Ditt klientorganisations-ID
SourceSystem Azure
TimeGenerated [UTC] Tidsstämpel när loggen registrerades i UTC
Type Typ av logg. Alltid AzureDiagnostics
SubscriptionId GUID för den prenumeration som servern tillhör
ResourceGroup Namnet på resursgruppen som servern tillhör
ResourceProvider Namnet på resursprovidern. Alltid MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Resurs-URI
Resource Namnet på servern i versaler
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Namnet på servern
event_class_s connection_log
event_subclass_s CONNECT, , DISCONNECTCHANGE USER
connection_id_d Unikt anslutnings-ID som genereras av MySQL
host_s Tom
ip_s IP-adress för klienten som ansluter till MySQL
user_s Namnet på användaren som kör frågan
db_s Namnet på databasen som är ansluten till
\_ResourceId Resurs-URI
status_d Kodpost för anslutningsfel för CONNECTIONS_V2 händelse.

Allmänt

Schemat nedan gäller för händelsetyperna GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL och ADMIN.

Kommentar

För sql_text_strunkeras loggen om den överskrider 2 048 tecken.

Property Beskrivning
TenantId Ditt klientorganisations-ID
SourceSystem Azure
TimeGenerated [UTC] Tidsstämpel när loggen registrerades i UTC
Type Typ av logg. Alltid AzureDiagnostics
SubscriptionId GUID för den prenumeration som servern tillhör
ResourceGroup Namnet på resursgruppen som servern tillhör
ResourceProvider Namnet på resursprovidern. Alltid MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Resurs-URI
Resource Namnet på servern i versaler
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Namnet på servern
event_class_s general_log
event_subclass_s LOG, ERROR, RESULT (endast tillgängligt för MySQL 5.6)
event_time Frågestarttid i UTC-tidsstämpel
error_code_d Felkod om frågan misslyckades. 0 innebär inget fel
thread_id_d ID för tråd som körde frågan
host_s Tom
ip_s IP-adress för klienten som ansluter till MySQL
user_s Namnet på användaren som kör frågan
sql_text_s Fullständig frågetext
\_ResourceId Resurs-URI

Tabellåtkomst

Kommentar

För sql_text_strunkeras loggen om den överskrider 2 048 tecken.

Property Beskrivning
TenantId Ditt klientorganisations-ID
SourceSystem Azure
TimeGenerated [UTC] Tidsstämpel när loggen registrerades i UTC
Type Typ av logg. Alltid AzureDiagnostics
SubscriptionId GUID för den prenumeration som servern tillhör
ResourceGroup Namnet på resursgruppen som servern tillhör
ResourceProvider Namnet på resursprovidern. Alltid MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Resurs-URI
Resource Namnet på servern i versaler
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Namnet på servern
event_class_s table_access_log
event_subclass_s READ, INSERT, UPDATE, eller DELETE
connection_id_d Unikt anslutnings-ID som genereras av MySQL
db_s Namnet på den databas som används
table_s Namnet på den tabell som används
sql_text_s Fullständig frågetext
\_ResourceId Resurs-URI

Analysera loggar i Azure Monitor-loggar

När granskningsloggarna skickas till Azure Monitor-loggar via diagnostikloggar kan du utföra ytterligare analys av dina granskade händelser. Nedan visas några exempelfrågor som hjälper dig att komma igång. Se till att uppdatera nedanstående med servernamnet.

  • Lista ALLMÄNNA händelser på en viss server

    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
    
  • Visa en lista över CONNECTION_V2 händelser på en viss server. status_d Kolumnen anger felkoden för klientanslutningen som klientprogrammet står inför vid anslutning.

    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
    
  • Lista ANSLUTNINGShändelser på en viss 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
    
  • Sammanfatta granskade händelser på en viss 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
    
  • Diagram över granskningshändelsetypens distribution på en viss 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 Resource, bin(TimeGenerated, 5m)
    | render timechart
    
  • Visa en lista över granskade händelser i alla azure database for MySQL-flexibla serverinstanser med diagnostikloggar aktiverade för granskningsloggar

    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
    

Nästa steg