Protokoly auditu v Azure Database for MySQL
PLATÍ PRO: Azure Database for MySQL – jednoúčelový server
Důležité
Azure Database for MySQL – Jednoúčelový server je na cestě vyřazení z provozu. 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 Azure Database for MySQL jednoúčelovým serverem?
V Azure Database for MySQL je protokol auditu k dispozici uživatelům. Protokol auditu se dá 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čuje se protokolovat pouze typy událostí a uživatele potřebné pro účely auditování, aby se zajistilo, že výkon vašeho serveru nebude výrazně ovlivněn a bude shromažďováno minimální množství 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 tohoto parametru je prázdná, což bude zahrnovat všechny uživatele pro protokolování. To má vyšší prioritu předaudit_log_exclude_users
. Maximální délka parametru je 512 znaků.audit_log_exclude_users
: Uživatelé MySQL, kteří mají být vyloučeni z protokolování. Maximální délka parametru je 512 znaků.
Poznámka
audit_log_include_users
má vyšší prioritu před audit_log_exclude_users
. Pokud například audit_log_include_users
= demouser
ademouser
audit_log_exclude_users
= , uživatel bude zahrnut do protokolů auditu, protože audit_log_include_users
má vyšší prioritu.
Událost | Popis |
---|---|
CONNECTION |
– Zahájení 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 |
Dotazy SELECT |
DML_NONSELECT |
DOTAZY INSERT,DELETE/UPDATE |
DML |
DML = DML_SELECT + DML_NONSELECT |
DDL |
Dotazy jako "DROP DATABASE" |
DCL |
Dotazy jako "UDĚLIT OPRÁVNĚNÍ" |
ADMIN |
Dotazy jako "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í tabulek, například SELECT nebo INSERT INTO ... VYBERTE – Příkazy pro odstranění tabulky, například DELETE nebo TRUNCATE TABLE - Příkazy vložení tabulky, jako je INSERT nebo REPLACE – Příkazy aktualizace tabulky, například 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 tom, jak povolit diagnostické protokoly v Azure Portal, najdete v článku portálu protokolů auditu.
Poznámka
Premium Storage účty se nepodporují, pokud odesíláte protokoly do úložiště Azure 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 mohou zahrnutá pole a pořadí, ve kterém se zobrazují, lišit.
Připojení
Vlastnost | Popis |
---|---|
TenantId |
ID vašeho tenanta |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Časové razítko, kdy byl protokol zaznamenán v UTC |
Type |
Typ protokolu. Vždy AzureDiagnostics |
SubscriptionId |
GUID předplatného, do kterého 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 |
Identifikátor URI prostředku |
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 |
Funkce Blank |
ip_s |
IP adresa klienta, který se připojuje k MySQL |
user_s |
Název uživatele provádějícího dotaz |
db_s |
Název databáze připojené k |
\_ResourceId |
Identifikátor URI prostředku |
Obecné
Následující schéma platí pro typy událostí OBECNÉ, DML_SELECT, DML_NONSELECT, DML, DDL, DCL a ADMIN.
Poznámka
Pokud sql_text
protokol překročí 2048 znaků, protokol se zkrátí.
Vlastnost | Popis |
---|---|
TenantId |
ID vašeho tenanta |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Časové razítko, kdy byl protokol zaznamenán v UTC |
Type |
Typ protokolu. Vždy AzureDiagnostics |
SubscriptionId |
GUID předplatného, do kterého 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 |
Identifikátor URI prostředku |
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é dotaz spustilo |
host_s |
Funkce Blank |
ip_s |
IP adresa klienta, který se připojuje k MySQL |
user_s |
Název uživatele provádějícího dotaz |
sql_text_s |
Úplný text dotazu |
\_ResourceId |
Identifikátor URI prostředku |
Přístup k tabulce
Poznámka
Protokoly přístupu k tabulce jsou výstupem pouze pro MySQL 5.7.
Pokud sql_text
protokol překročí 2048 znaků, protokol se zkrátí.
Vlastnost | Popis |
---|---|
TenantId |
ID vašeho tenanta |
SourceSystem |
Azure |
TimeGenerated [UTC] |
Časové razítko, kdy byl protokol zaznamenán v UTC |
Type |
Typ protokolu. Vždy AzureDiagnostics |
SubscriptionId |
GUID předplatného, do kterého 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 |
Identifikátor URI prostředku |
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 |
Identifikátor URI prostředku |
Analýza protokolů v protokolech služby Azure Monitor
Jakmile se protokoly auditu přes diagnostické protokoly předají do protokolů služby Azure Monitor, 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íže uvedený 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