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 oproti audit_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_usersaudit_log_exclude_usersdemouser = = demouserprotož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, ( DISCONNECTCHANGE 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_textbude 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_textbude 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, UPDATEnebo 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
    

Další kroky