Sledování databázové aktivity s využitím protokolů auditu na flexibilním serveru Azure Database for MySQL
Flexibilní server Azure Database for MySQL poskytuje uživatelům možnost konfigurovat protokoly auditu. Protokoly auditu se dají použít ke sledování aktivit na úrovni databáze, včetně událostí připojení, správce, DDL a DML. Tyto typy protokolů se běžně používají pro účely 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í množství dat.
Ve výchozím nastavení jsou protokoly auditu zakázané. Pokud je chcete povolit, nastavte audit_log_enabled
parametr serveru na ZAPNUTO. Můžete ho nakonfigurovat pomocí webu Azure Portal nebo Azure CLI.
Mezi další parametry, které můžete upravit pro řízení chování protokolování auditu, 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ů. Například hodnota zástupného znakudev*
zahrnuje všechny uživatele s položkami začínajícími klíčovým slovemdev
jako "dev1,dev_user,dev_2". Další příklad pro položku se zástupnými znaky pro zahrnutí uživatele je*dev
v tomto příkladu, že všichni uživatelé končící hodnotou "dev", jako je "stage_dev,prod_dev,user_dev", jsou zahrnuti v položkách protokolu auditu. Použití otazníku(?)
jako zástupného znaku je navíc povolené ve vzorech.audit_log_exclude_users
: Uživatelé MySQL, kteří se mají vyloučit z protokolování. Maximální délka parametru je 512 znaků. Položky se zástupným znakem pro uživatele jsou také přijímány k vyloučení uživatelů v protokolech auditu. Například hodnota zástupnýchstage*
znaků vyloučí všechny uživatele s položkami začínajícími klíčovým slovemstage
jako "stage1,stage_user,stage_2". Dalším příkladem položky se zástupným znakem pro vyloučení uživatele je*com
v tomto příkladu, že všichni uživatelé končící hodnotoucom
budou vyloučeni z položek protokolu auditu. Použití otazníku(?)
jako zástupného znaku je navíc povolené ve vzorech.
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í - Ukončení připojení |
CONNECTION_V2 |
- Inicializace připojení (kód chyby úspěšného nebo neúspěšného pokusu) - 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 |
- 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 jsou integrované s nastavením diagnostiky služby Azure Monitor. Jakmile na flexibilním serveru povolíte protokoly auditu, můžete je generovat do protokolů služby Azure Monitor, Azure Event Hubs nebo Azure Storage. Další informace o nastavení diagnostiky najdete v dokumentaci k diagnostickým protokolům. Další informace o povolení nastavení diagnostiky na webu Azure Portal najdete v článku o portálu protokolu auditování.
Poznámka:
Účty Premium Storage se nepodporují, pokud protokoly odesíláte do úložiště Azure prostřednictvím diagnostiky a nastavení.
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 velkými písmeny |
Category |
MySqlAuditLogs |
OperationName |
LogEvent |
LogicalServerName_s |
Název serveru |
event_class_s |
connection_log |
event_subclass_s |
CONNECT , , DISCONNECT CHANGE USER |
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 |
status_d |
Položka kódu chyby připojení pro událost CONNECTIONS_V2 |
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_s
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 velkými písmeny |
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:
Protokol sql_text_s
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 velkými písmeny |
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 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
Vypíše CONNECTION_V2 události na konkrétním serveru,
status_d
sloupec označuje kód chyby připojení klienta, kterému klientská aplikace čelí při připojování.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
Výpis událostí připojení na konkrétním serveru
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
Shrnutí auditovaných událostí na konkrétním serveru
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
Graf distribuce typu události auditu na konkrétním serveru
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
Výpis auditovaných událostí ve všech instancích flexibilního serveru Azure Database for MySQL s povolenými diagnostickými protokoly pro protokoly auditu
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