Sdílet prostřednictvím


Sledování databázové aktivity s využitím protokolů auditu na flexibilním serveru Azure Database for MySQL

PLATÍ PRO: Flexibilní server 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 oproti audit_log_exclude_users. Maximální délka parametru je 512 znaků. Například hodnota zástupného znaku dev* zahrnuje všechny uživatele s položkami začínajícími klíčovým slovem dev 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ých stage* znaků vyloučí všechny uživatele s položkami začínajícími klíčovým slovem stage 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í hodnotou com 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_usersaudit_log_exclude_usersdemouser = = demouserprotože audit_log_include_users má vyšší prioritu.

Událost Popis
CONNECTION - Připojení zahájení
- ukončení Připojení
CONNECTION_V2 – Připojení inicializace (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 ... VYBERTE
- 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, , DISCONNECTCHANGE 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 Připojení ion Položka kódu chyby 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_sbude 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_sbude 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, 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 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
    

Další kroky