Protokoly auditu ve službě Azure Database for MySQL
PLATÍ PRO: Jednoúčelový server Azure Database for MySQL
Důležité
Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?
Ve službě Azure Database for MySQL je protokol auditu dostupný uživatelům. Protokol auditu lze použít ke sledování aktivit na úrovni databáze a běžně se používá pro dodržování předpisů.
Konfigurace protokolování auditu
Důležité
Doporučujeme protokolovat pouze typy událostí a uživatele vyžadované pro účely auditování, aby se zajistilo, že výkon vašeho serveru není silně ovlivněný a shromažďuje se minimální objem dat.
Ve výchozím nastavení je protokol auditu zakázaný. Pokud ho chcete povolit, nastavte audit_log_enabled
na zapnuto.
Mezi další parametry, které můžete upravit, patří:
audit_log_events
: řídí události, které se mají protokolovat. Konkrétní události auditu najdete v následující tabulce.audit_log_include_users
: Uživatelé MySQL, kteří mají být zahrnuti pro protokolování. Výchozí hodnota pro tento parametr je prázdná, která bude obsahovat všechny uživatele pro protokolování. To má vyšší prioritu oprotiaudit_log_exclude_users
. Maximální délka parametru je 512 znaků.audit_log_exclude_users
: Uživatelé MySQL, kteří se mají vyloučit z protokolování. Maximální délka parametru je 512 znaků.
Poznámka:
audit_log_include_users
má vyšší prioritu než audit_log_exclude_users
. Pokud a uživatel bude například zahrnut do protokolů auditu, audit_log_include_users
audit_log_exclude_users
demouser
= = demouser
protože audit_log_include_users
má vyšší prioritu.
Událost | Popis |
---|---|
CONNECTION |
- Inicializace připojení (úspěšná nebo neúspěšná) – Opětovné ověření uživatele s jiným uživatelem nebo heslem během relace - Ukončení připojení |
DML_SELECT |
VÝBĚR dotazů |
DML_NONSELECT |
DOTAZY INSERT/DELETE/UPDATE |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
Dotazy jako DROP DATABASE |
DCL |
Dotazy, jako je UDĚLENÍ OPRÁVNĚNÍ |
ADMIN |
Dotazy, jako je ZOBRAZIT STAV |
GENERAL |
Vše v DML_SELECT, DML_NONSELECT, DML, DDL, DCL a ADMIN |
TABLE_ACCESS |
– K dispozici pro MySQL 5.7 a MySQL 8.0 - Příkazy pro čtení tabulky, například SELECT nebo INSERT INTO ... VYBRAT - Příkazy delete tabulky, například DELETE nebo TRUNCATE TABLE - Příkazy insert tabulky, například INSERT nebo REPLACE – Příkazy Update tabulky, jako je UPDATE |
Přístup k protokolům auditu
Protokoly auditu se integrují s diagnostickými protokoly služby Azure Monitor. Po povolení protokolů auditu na serveru MySQL je můžete posílat do protokolů služby Azure Monitor, služby Event Hubs nebo služby Azure Storage. Další informace o povolení diagnostických protokolů na webu Azure Portal najdete v článku o portálu protokolu auditu.
Poznámka:
Účty Premium Storage se nepodporují, pokud odesíláte protokoly do služby Azure Storage prostřednictvím diagnostiky a nastavení.
Schémata diagnostických protokolů
Následující části popisují výstup protokolů auditu MySQL na základě typu události. V závislosti na výstupní metodě se pole zahrnutá a pořadí, ve kterém se zobrazují, se mohou lišit.
Connection
Vlastnost | Popis |
---|---|
TenantId |
ID vašeho tenanta |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Časové razítko, kdy se protokol zaznamenal v UTC |
Type |
Typ protokolu Vždy AzureDiagnostics |
SubscriptionId |
IDENTIFIKÁTOR GUID předplatného, ke kterému server patří |
ResourceGroup |
Název skupiny prostředků, do které server patří |
ResourceProvider |
Název poskytovatele prostředků Vždy MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Adresa URI zdroje |
Resource |
Název serveru |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Název serveru |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , ( DISCONNECT CHANGE USER k dispozici pouze pro MySQL 5.7) |
connection_id_d |
Jedinečné ID připojení vygenerované mySQL |
host_s |
prázdnou |
ip_s |
IP adresa klienta, který se připojuje k MySQL |
user_s |
Jméno uživatele, který dotaz spouští |
db_s |
Název databáze připojené k |
\_ResourceId |
Adresa URI zdroje |
OBECNÉ
Následující schéma platí pro typy událostí OBECNÉ, DML_SELECT, DML_NONSELECT, DML, DDL, DCL a ADMIN.
Poznámka:
Protokol sql_text
bude zkrácen, pokud přesahuje 2048 znaků.
Vlastnost | Popis |
---|---|
TenantId |
ID vašeho tenanta |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Časové razítko, kdy se protokol zaznamenal v UTC |
Type |
Typ protokolu Vždy AzureDiagnostics |
SubscriptionId |
IDENTIFIKÁTOR GUID předplatného, ke kterému server patří |
ResourceGroup |
Název skupiny prostředků, do které server patří |
ResourceProvider |
Název poskytovatele prostředků Vždy MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Adresa URI zdroje |
Resource |
Název serveru |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Název serveru |
event_class_s |
general_log |
event_subclass_s |
LOG , ERROR ( RESULT k dispozici pouze pro MySQL 5.6) |
event_time |
Čas zahájení dotazu v časovém razítku UTC |
error_code_d |
Kód chyby, pokud dotaz selhal. 0 znamená, že žádná chyba |
thread_id_d |
ID vlákna, které spustilo dotaz |
host_s |
prázdnou |
ip_s |
IP adresa klienta, který se připojuje k MySQL |
user_s |
Jméno uživatele, který dotaz spouští |
sql_text_s |
Úplný text dotazu |
\_ResourceId |
Adresa URI zdroje |
Přístup k tabulce
Poznámka:
Protokoly přístupu k tabulce jsou pouze výstupem pro MySQL 5.7.
Protokol sql_text
bude zkrácen, pokud přesahuje 2048 znaků.
Vlastnost | Popis |
---|---|
TenantId |
ID vašeho tenanta |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Časové razítko, kdy se protokol zaznamenal v UTC |
Type |
Typ protokolu Vždy AzureDiagnostics |
SubscriptionId |
IDENTIFIKÁTOR GUID předplatného, ke kterému server patří |
ResourceGroup |
Název skupiny prostředků, do které server patří |
ResourceProvider |
Název poskytovatele prostředků Vždy MICROSOFT.DBFORMYSQL |
ResourceType |
Servers |
ResourceId |
Adresa URI zdroje |
Resource |
Název serveru |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Název serveru |
event_class_s |
table_access_log |
event_subclass_s |
READ , INSERT , UPDATE nebo DELETE |
connection_id_d |
Jedinečné ID připojení vygenerované mySQL |
db_s |
Název databáze, ke které se přistupuje |
table_s |
Název tabulky, ke které se přistupuje |
sql_text_s |
Úplný text dotazu |
\_ResourceId |
Adresa URI zdroje |
Analýza protokolů v protokolech služby Azure Monitor
Jakmile se protokoly auditu předávají do protokolů služby Azure Monitor prostřednictvím diagnostických protokolů, můžete provádět další analýzu auditovaných událostí. Níže najdete několik ukázkových dotazů, které vám pomůžou začít. Nezapomeňte aktualizovat následující název serveru.
Výpis obecných událostí na konkrétním serveru
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
Výpis událostí připojení na konkrétním serveru
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
Shrnutí auditovaných událostí na konkrétním serveru
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
Graf distribuce typu události auditu na konkrétním serveru
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
Výpis auditovaných událostí na všech serverech MySQL s povolenými diagnostickými protokoly pro protokoly auditu
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