Databaseactiviteit bijhouden met auditlogboeken in Azure Database for MySQL - Flexibele server
Azure Database for MySQL Flexibele server biedt gebruikers de mogelijkheid om auditlogboeken te configureren. Auditlogboeken kunnen worden gebruikt om activiteiten op databaseniveau bij te houden, waaronder verbindingen, beheerders, DDL en DML-gebeurtenissen. Deze typen logboeken worden vaak gebruikt voor nalevingsdoeleinden.
Auditlogboekregistratie configureren
Belangrijk
Het wordt aanbevolen om alleen de gebeurtenistypen en gebruikers te registreren die nodig zijn voor uw controledoeleinden om ervoor te zorgen dat de prestaties van uw server niet zwaar worden beïnvloed en dat er een minimale hoeveelheid gegevens wordt verzameld.
Auditlogboeken zijn standaard uitgeschakeld. Als u deze wilt inschakelen, stelt u de audit_log_enabled
serverparameter in op AAN. Dit kan worden geconfigureerd met behulp van Azure Portal of Azure CLI.
Andere parameters die u kunt aanpassen om het gedrag van auditlogboekregistratie te beheren, zijn onder andere:
audit_log_events
: bepaalt de gebeurtenissen die moeten worden vastgelegd. Zie de onderstaande tabel voor specifieke controlegebeurtenissen.audit_log_include_users
: MySQL-gebruikers die moeten worden opgenomen voor logboekregistratie. De standaardwaarde voor deze parameter is leeg, inclusief alle gebruikers voor logboekregistratie. Dit heeft een hogere prioriteit danaudit_log_exclude_users
. De maximale lengte van de parameter is 512 tekens. De jokertekenwaarde bevatdev*
bijvoorbeeld alle gebruikers met vermeldingen die beginnen met het trefwoorddev
'dev1,dev_user,dev_2'. Een ander voorbeeld voor jokertekenvermelding voor het opnemen van de gebruiker is*dev
in dit voorbeeld dat alle gebruikers die eindigen op waarde 'dev' zoals 'stage_dev,prod_dev,user_dev' zijn opgenomen in de vermeldingen in het auditlogboek. Daarnaast is het gebruik van een vraagteken(?)
als jokerteken toegestaan in patronen.audit_log_exclude_users
: MySQL-gebruikers die moeten worden uitgesloten van logboekregistratie. De maximale lengte van de parameter is 512 tekens. Vermeldingen met jokertekens voor de gebruiker worden ook geaccepteerd om gebruikers uit te sluiten in auditlogboeken. Met jokertekens wordenstage*
bijvoorbeeld alle gebruikers uitgesloten van vermeldingen die beginnen met trefwoordenstage
zoals 'stage1,stage_user,stage_2'. Een ander voorbeeld voor jokertekenvermelding voor het uitsluiten van de gebruiker is*com
in dit voorbeeld dat alle gebruikers die eindigen met waardecom
worden uitgesloten van de vermeldingen in het auditlogboek. Daarnaast is het gebruik van een vraagteken(?)
als jokerteken toegestaan in patronen.
Notitie
audit_log_include_users
heeft een hogere prioriteit dan audit_log_exclude_users
. Als enaudit_log_exclude_users
= demouser
, wordt de gebruiker bijvoorbeeld = audit_log_include_users
demouser
opgenomen in de auditlogboeken omdat audit_log_include_users
deze een hogere prioriteit heeft.
Gebeurtenis | Beschrijving |
---|---|
CONNECTION |
- Start van verbinding - Beëindiging van verbinding |
CONNECTION_V2 |
- Verbindingsinitiatie (foutcode geslaagde of mislukte poging) - Beëindiging van verbinding |
DML_SELECT |
SELECT-query's |
DML_NONSELECT |
INSERT/DELETE/UPDATE-query's |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
Query's zoals 'DROP DATABASE' |
DCL |
Query's zoals 'MACHTIGING VERLENEN' |
ADMIN |
Query's zoals 'SHOW STATUS' |
GENERAL |
Alles in DML_SELECT, DML_NONSELECT, DML, DDL, DCL en ADMIN |
TABLE_ACCESS |
- Leesinstructies voor tabellen, zoals SELECT of INSERT INTO ... SELECTEREN - Instructies voor tabel verwijderen, zoals DELETE of TRUNCATE TABLE - Instructies voor invoegen van tabellen, zoals INSERT of REPLACE - Instructies voor het bijwerken van tabellen, zoals UPDATE |
Auditlogboeken inzien
Auditlogboeken zijn geïntegreerd met diagnostische instellingen van Azure Monitor. Zodra u auditlogboeken op uw flexibele server hebt ingeschakeld, kunt u ze verzenden naar Azure Monitor-logboeken, Azure Event Hubs of Azure Storage. Zie de documentatie voor diagnostische logboeken voor meer informatie over diagnostische instellingen. Zie het artikel in de auditlogboekportal voor meer informatie over het inschakelen van diagnostische instellingen in Azure Portal.
Notitie
Premium Storage-accounts worden niet ondersteund als u de logboeken naar Azure Storage verzendt via diagnostische gegevens en instellingen.
In de volgende secties wordt de uitvoer van MySQL-auditlogboeken beschreven op basis van het gebeurtenistype. Afhankelijk van de uitvoermethode kunnen de velden en de volgorde waarin ze worden weergegeven variëren.
Connection
Eigenschappen | Beschrijving |
---|---|
TenantId |
Uw tenant-id |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Tijdstempel waarop het logboek is vastgelegd in UTC |
Type |
Type van het logboek. Altijd AzureDiagnostics |
SubscriptionId |
GUID voor het abonnement waartoe de server behoort |
ResourceGroup |
De naam van de resourcegroep waartoe de server behoort |
ResourceProvider |
Naam van de resourceprovider. Altijd MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Resource-URI |
Resource |
Naam van de server in hoofdletters |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Naam van de server |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , , DISCONNECT CHANGE USER |
connection_id_d |
Unieke verbindings-id gegenereerd door MySQL |
host_s |
Leeg |
ip_s |
IP-adres van client die verbinding maakt met MySQL |
user_s |
Naam van de gebruiker die de query uitvoert |
db_s |
Naam van de database die is verbonden met |
\_ResourceId |
Resource-URI |
status_d |
Vermelding van verbindingsfout voor CONNECTIONS_V2 gebeurtenis. |
Algemeen
Het onderstaande schema is van toepassing op gebeurtenistypen GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL en ADMIN.
Notitie
Logboek sql_text_s
wordt afgekapt als het langer is dan 2048 tekens.
Eigenschappen | Beschrijving |
---|---|
TenantId |
Uw tenant-id |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Tijdstempel waarop het logboek is vastgelegd in UTC |
Type |
Type van het logboek. Altijd AzureDiagnostics |
SubscriptionId |
GUID voor het abonnement waartoe de server behoort |
ResourceGroup |
De naam van de resourcegroep waartoe de server behoort |
ResourceProvider |
Naam van de resourceprovider. Altijd MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Resource-URI |
Resource |
Naam van de server in hoofdletters |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Naam van de server |
event_class_s |
general_log |
event_subclass_s |
LOG , , ERROR RESULT (alleen beschikbaar voor MySQL 5.6) |
event_time |
Begintijd van query in UTC-tijdstempel |
error_code_d |
Foutcode als de query is mislukt. 0 betekent geen fout |
thread_id_d |
Id van thread die de query heeft uitgevoerd |
host_s |
Leeg |
ip_s |
IP-adres van client die verbinding maakt met MySQL |
user_s |
Naam van de gebruiker die de query uitvoert |
sql_text_s |
Volledige querytekst |
\_ResourceId |
Resource-URI |
Toegang tot tabellen
Notitie
Logboek sql_text_s
wordt afgekapt als het langer is dan 2048 tekens.
Eigenschappen | Beschrijving |
---|---|
TenantId |
Uw tenant-id |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Tijdstempel waarop het logboek is vastgelegd in UTC |
Type |
Type van het logboek. Altijd AzureDiagnostics |
SubscriptionId |
GUID voor het abonnement waartoe de server behoort |
ResourceGroup |
De naam van de resourcegroep waartoe de server behoort |
ResourceProvider |
Naam van de resourceprovider. Altijd MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Resource-URI |
Resource |
Naam van de server in hoofdletters |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Naam van de server |
event_class_s |
table_access_log |
event_subclass_s |
READ , , INSERT of UPDATE DELETE |
connection_id_d |
Unieke verbindings-id gegenereerd door MySQL |
db_s |
Naam van de database die wordt geopend |
table_s |
Naam van tabel die wordt geopend |
sql_text_s |
Volledige querytekst |
\_ResourceId |
Resource-URI |
Logboeken analyseren in Azure Monitor-logboeken
Zodra uw auditlogboeken zijn doorgesluisd naar Azure Monitor-logboeken via diagnostische logboeken, kunt u verdere analyse van uw gecontroleerde gebeurtenissen uitvoeren. Hieronder vindt u enkele voorbeeldquery's om u te helpen aan de slag te gaan. Zorg ervoor dat u het onderstaande bijwerkt met de servernaam.
Algemene gebeurtenissen op een bepaalde server vermelden
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
Vermeld CONNECTION_V2 gebeurtenissen op een bepaalde server,
status_d
kolom geeft de foutcode van de clientverbinding aan waarmee de clienttoepassing wordt geconfronteerd tijdens het verbinden.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
CONNECTION-gebeurtenissen op een bepaalde server weergeven
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
Gecontroleerde gebeurtenissen op een bepaalde server samenvatten
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
Grafiek van de distributie van het controlegebeurtenistype op een bepaalde 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
Gecontroleerde gebeurtenissen weergeven in alle exemplaren van Azure Database for MySQL Flexible Server waarvoor diagnostische logboeken zijn ingeschakeld voor auditlogboeken
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