Spåra databasaktivitet med granskningsloggar i 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 granskningssyfte 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 PÅ. Detta kan konfigureras med hjälp av Azure Portal 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 änaudit_log_exclude_users
. Maxlängden för parametern är 512 tecken. Jokerteckenvärdetdev*
omfattar till exempel alla användare med poster som börjar med nyckelorddev
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ärdetstage*
exkluderar till exempel alla användare med poster som börjar med nyckelordstage
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ärdetcom
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_users
demouser
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 Portal 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
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_s
trunkeras 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_s
trunkeras 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