Nachverfolgen der Datenbankaktivität mit Überwachungsprotokollen in Azure Database for MySQL – Flexible Server

GILT FÜR: Azure Database for MySQL – Flexible Server

Azure Database for MySQL – Flexibler Server bietet Benutzern die Möglichkeit, Überwachungsprotokolle zu konfigurieren. Überwachungsprotokolle können dazu verwendet werden, die Aktivität auf Datenbankebene zu überwachen, einschließlich Verbindungs-, Administrator-, DDL- und DML-Ereignisse. Diese Arten von Protokollen werden häufig zu Compliancezwecken verwendet.

Konfigurieren der Überwachungsprotokollierung

Wichtig

Es wird empfohlen, nur die Ereignistypen und Benutzer zu protokollieren, die für Ihre Überwachungszwecke erforderlich sind, um sicherzustellen, dass die Leistung Ihres Servers nicht stark beeinträchtigt und gleichzeitig eine Mindestmenge an Daten erfasst wird.

Überwachungsprotokolle sind standardmäßig deaktiviert. Legen Sie den Serverparameter audit_log_enabled auf ON (EIN) fest, um sie zu aktivieren. Diese Konfiguration kann über das Azure-Portal oder die Azure CLI erfolgen.

Sie können die folgenden anderen Parameter verwenden, um das Verhalten der Überwachungsprotokollierung zu konfigurieren:

  • audit_log_events: steuert die zu protokollierenden Ereignisse. In der nachstehenden Tabelle finden Sie spezifische Überwachungsereignisse.
  • audit_log_include_users: MySQL-Benutzer, die zur Protokollierung einbezogen werden sollen. Der Standardwert für diesen Parameter ist leer, wodurch alle Benutzer zur Protokollierung einbezogen werden. Dies hat eine höhere Priorität als audit_log_exclude_users. Die maximale Länge des Parameters ist 512 Zeichen. Beispielsweise schließt der Platzhalterwert dev* alle Benutzer mit Einträgen ein, die mit dem Schlüsselwort dev beginnen, wie z. B. „dev1,dev_user,dev_2“. Ein weiteres Beispiel für einen Platzhaltereintrag zum Einschließen von Benutzern ist *dev, wobei alle Benutzer, die mit dem Wert „dev“ enden (z. B. „stage_dev,prod_dev,user_dev“), in den Überwachungsprotokolleinträgen eingeschlossen werden. Darüber hinaus ist die Verwendung eines Fragezeichens (?) als Platzhalterzeichen in Mustern zulässig.
  • audit_log_exclude_users: MySQL-Benutzer, die aus der Protokollierung ausgeschlossen werden sollen. Die maximale Länge des Parameters beträgt 512 Zeichen. Platzhaltereinträge für Benutzer werden auch akzeptiert, um Benutzer in Überwachungsprotokollen auszuschließen. Beispielsweise schließt der Platzhalterwert stage* alle Benutzer mit Einträgen aus, die mit dem Schlüsselwort stage beginnen, wie z. B. „stage1,stage_user,stage_2“. Ein weiteres Beispiel für einen Platzhaltereintrag zum Ausschließen von Benutzern ist *com, wobei alle Benutzer, die mit dem Wert com enden, aus den Überwachungsprotokolleinträgen ausgeschlossen werden. Darüber hinaus ist die Verwendung eines Fragezeichens (?) als Platzhalterzeichen in Mustern zulässig.

Hinweis

audit_log_include_users hat eine höhere Priorität als audit_log_exclude_users. Wenn z. B. audit_log_include_users = demouser und audit_log_exclude_users = demouser einbezogen werden, wird der Benutzer in die Überwachungsprotokolle eingeschlossen, da audit_log_include_users eine höhere Priorität hat.

Event Beschreibung
CONNECTION – Initiierung der Verbindung
: Beendigung der Verbindung
CONNECTION_V2 – Initiierung der Verbindung (erfolgreich oder Fehlercode für nicht erfolgreich)
: Beendigung der Verbindung
DML_SELECT SELECT-Abfragen
DML_NONSELECT INSERT/DELETE/UPDATE-Abfragen
DML DML = DML_SELECT + DML_NONSELECT
DDL Abfragen wie DROP DATABASE
DCL Abfragen wie GRANT PERMISSION
ADMIN Abfragen wie SHOW STATUS
GENERAL Alle in DML_SELECT, DML_NONSELECT, DML, DDL, DCL und ADMIN
TABLE_ACCESS - Leseanweisungen für Tabelle, z. B. SELECT oder INSERT INTO... SELECT
- Löschanweisungen für Tabelle, z. B. DELETE oder TRUNCATE TABLE
- Einfügeanweisungen für Tabelle, z. B. INSERT oder REPLACE
- Aktualisierungsanweisungen für Tabelle, z. B. UPDATE

Zugreifen auf Überwachungsprotokolle

Überwachungsprotokolle sind mit den Diagnoseeinstellungen von Azure Monitor integriert. Nachdem Sie Überwachungsprotokolle auf Ihrem flexiblen Server aktiviert haben, können Sie sie an Azure Monitor-Protokolle, Azure Event Hubs oder Azure Storage senden. Weitere Informationen über Diagnoseeinstellungen finden Sie in der Dokumentation zu Diagnoseprotokollen. Weitere Informationen zum Aktivieren von Diagnoseeinstellungen im Azure-Portal finden Sie im Artikel zum Portal für Überwachungsprotokolle.

Hinweis

Storage Premium-Konten werden nicht unterstützt, wenn Sie die Protokolle über Diagnosen und Einstellungen an Azure Storage senden.

In den folgenden Abschnitten wird beschrieben, was von MySQL-Überwachungsprotokollen basierend auf dem Ereignistyp ausgegeben wird. Je nach Ausgabemethode können die enthaltenen Felder und ihre Reihenfolge variieren.

Verbindung

Eigenschaft Beschreibung
TenantId Ihre Mandanten-ID
SourceSystem Azure
TimeGenerated [UTC] Zeitstempel für den Aufzeichnungsbeginn des Protokolls in UTC
Type Typ des Protokolls Immer AzureDiagnostics
SubscriptionId GUID für das Abonnement, zu dem der Server gehört
ResourceGroup Name der Ressourcengruppe, zu der der Server gehört
ResourceProvider Name des Ressourcenanbieters Immer MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Ressourcen-URI
Resource Name des Servers in Großbuchstaben
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Name des Servers
event_class_s connection_log
event_subclass_s CONNECT, DISCONNECT, CHANGE USER
connection_id_d Von MySQL generierte eindeutige Verbindungs-ID
host_s Leer
ip_s IP-Adresse des Clients, der die Verbindung mit MySQL herstellt
user_s Name des Benutzers, der die Abfrage ausführt
db_s Name der Datenbank, mit der die Verbindung besteht
\_ResourceId Ressourcen-URI
status_d Fehlercode-Eintrag der Verbindung für das CONNECTIONS_V2-Ereignis.

Allgemein

Das unten angegebene Schema gilt für die Ereignistypen GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL und ADMIN.

Hinweis

Bei sql_text_s wird das Protokoll abgeschnitten, wenn es länger als 2.048 Zeichen ist.

Eigenschaft Beschreibung
TenantId Ihre Mandanten-ID
SourceSystem Azure
TimeGenerated [UTC] Zeitstempel für den Aufzeichnungsbeginn des Protokolls in UTC
Type Typ des Protokolls Immer AzureDiagnostics
SubscriptionId GUID für das Abonnement, zu dem der Server gehört
ResourceGroup Name der Ressourcengruppe, zu der der Server gehört
ResourceProvider Name des Ressourcenanbieters Immer MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Ressourcen-URI
Resource Name des Servers in Großbuchstaben
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Name des Servers
event_class_s general_log
event_subclass_s LOG, ERROR, RESULT (nur für MySQL 5.6 verfügbar)
event_time Startzeit der Abfrage im UTC-Zeitstempel
error_code_d Fehlercode bei fehlerhafter Abfrage. 0 bedeutet, dass kein Fehler vorliegt
thread_id_d ID des Threads, der die Abfrage ausgeführt hat
host_s Leer
ip_s IP-Adresse des Clients, der die Verbindung mit MySQL herstellt
user_s Name des Benutzers, der die Abfrage ausführt
sql_text_s Vollständiger Abfragetext
\_ResourceId Ressourcen-URI

Tabellenzugriff

Hinweis

Bei sql_text_s wird das Protokoll abgeschnitten, wenn es länger als 2.048 Zeichen ist.

Eigenschaft Beschreibung
TenantId Ihre Mandanten-ID
SourceSystem Azure
TimeGenerated [UTC] Zeitstempel für den Aufzeichnungsbeginn des Protokolls in UTC
Type Typ des Protokolls Immer AzureDiagnostics
SubscriptionId GUID für das Abonnement, zu dem der Server gehört
ResourceGroup Name der Ressourcengruppe, zu der der Server gehört
ResourceProvider Name des Ressourcenanbieters Immer MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Ressourcen-URI
Resource Name des Servers in Großbuchstaben
Category MySqlAuditLogs
OperationName LogEvent
LogicalServerName_s Name des Servers
event_class_s table_access_log
event_subclass_s READ, INSERT, UPDATE oder DELETE
connection_id_d Von MySQL generierte eindeutige Verbindungs-ID
db_s Name der Datenbank, auf die zugegriffen wird
table_s Name der Tabelle, auf die zugegriffen wird
sql_text_s Vollständiger Abfragetext
\_ResourceId Ressourcen-URI

Analysieren von Protokollen in Azure Monitor-Protokollen

Sobald Ihre Überwachungsprotokolle über Diagnoseprotokolle an Azure Monitor-Protokolle weitergeleitet wurden, können Sie weitere Analysen Ihrer überwachten Ereignisse durchführen. Im Folgenden finden Sie einige Beispielabfragen, die Ihnen beim Einstieg helfen. Stellen Sie sicher, dass Sie die Abfragen unten mit Ihrem Servernamen aktualisieren.

  • Auflisten von allgemeinen (GENERAL) Ereignissen auf einem bestimmten Server

    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
    
  • Auflisten von CONNECTION_V2-Ereignissen auf einem bestimmten Server. Die Spalte status_d kennzeichnet den Fehlercode der Clientverbindung, der in der Clientanwendung beim Herstellen der Verbindung ausgegeben wird.

    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
    
  • Auflisten von Verbindungsereignissen (CONNECTION) auf einem bestimmten Server

    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
    
  • Zusammenfassen von überwachten Ereignissen auf einem bestimmten Server

    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
    
  • Erstellen eines Diagramms der Verteilung von Überwachungsereignistypen auf einem bestimmten Server

    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
    
  • Auflisten von überwachten Ereignissen in allen Instanzen von Azure Database for MySQL – Flexibler Server mit aktivierten Diagnoseprotokollen für Überwachungsprotokolle

    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
    

Nächste Schritte