Firebird-Auditing

Seit Version 2.5 erlaubt das Datenbank-Management-System Firebird das Auditing von allen oder einzelnen Datenbanken, also das Überwachen der serverseitigen Ereignisse von Firebird. Dieser Blog-Artikel erklärt, wie Du Firebird konfigurieren musst, um das Auditing für Deine Zwecke zu nutzen. Wir arbeiten dabei unter Windows mit Firebird 4 oder höher.

Einführung

Das Auditing (zu Deutsch: Überwachen) einer Firebird-Instanz oder einer einzelnen Datenbank umfasst das Nachverfolgen und Protokollieren von Ereignissen, die innerhalb der Firebird-Engine auftreten.

Eine Audit-Sitzung wird von der Firebird-Engine selbst gestartet. Um zu bestimmen, welche Ereignissen von Interesse sind, liest sie den Inhalt einer Konfigurationsdatei. Diese Konfigurationsdatei enthält eine Liste von möglichen Ereignissen, deren Überwachung Du an- oder ausschalten kannst.

Eine Firebird-Installation liefert eine Vorlage für diese Konfigurationsdatei bereits mit. Sie heisst fbtrace.conf und befindet sich im Installationsordner Deines Firebird-Servers.

Für die 32-Bit Version von Firebird unter Windows 64-bit wäre dies standardmäßig dieser Dateipfad:

C:\Program Files (x86)\Firebird\Firebird_4_0\fbtrace.conf

Bevor Du mit der Konfiguration beginnst, musst Du in der Hauptkonfigurationsdatei firebird.conf die Eigenschaft AuditTraceConfigFile auf den Dateipfad von fbtrace.conf setzen, damit Firebird Bescheid weiß.

Noch ein paar Anmerkungen, bevor wir uns ein konkretes Beispiel anschauen werden:

  • Die Dokumentation von fbtrace.conf findest Du in der ausdokumentierten Vorlage.

  • Dateipfade und einige Eigenschaften wie z.B. include_filter verstehen reguläre Ausdrücke. Der spezielle Syntax für reguläre Ausdrücke unter Firebird findet sich in der Firebird-Sprachreferenz

  • Änderungen in den Konfigurationsdateien von Firebird bedürfen stets einen Neustart des Firebird-Dienstes.

  • Achtung! Der Konfigurationssyntax für fbtrace.conf hat sich beim Wechsel von Firebird Version 2.5 auf Version 3 leicht geändert, siehe unter Firebird 3.0.6 Release Notes → Compatibility Issues.

Beispiel

Wir wollen nun folgendes tun:

  • Das Auditing für eine Datenbank namens C:\Datenbanken\MeineDB.FDB einschalten.

  • Die Auditing-Resultate sollen unter C:\Datenbanken\Audit\Log\MeinLog.txt gespeichert werden.

  • Es sollen die Anmeldung, die Abmeldung sowie Mutationsbefehle (also Daten hinzufügen, ändern oder löschen) überwacht werden.

Los geht’s:

  1. Wechsele in den Installationsordner von Firebird 4.

  2. Kopiere die Datei fbtrace.conf in den Ordner C:\Datenbanken\Audit.

  3. Öffne im Installationsordner von Firebird die Datei firebird.conf in einem Texteditor (Achtung: Zum Speichern brauchst Du in der Regel Windows-Administrationsrechte).

  4. Führe folgende Änderung in der Datei durch und speichere das Ergebnis:

    Ersetze die Zeile

    #AuditTraceConfigFile =
    

    durch

    AuditTraceConfigFile = "C:\Datenbanken\Audit\fbtrace.conf"
    
  5. Öffne nun die kopierte Datei C:\Datenbanken\Audit\fbtrace.conf in einem Texteditor.

  6. Führe folgende Änderungen in der Datei durch und speichere das Ergebnis (Bitte in dieser Datei den Backslash in Dateipfaden doppeln, also \\ statt \):

    Ersetze den Textblock

    database = %[\\/]my_database.fdb
    {
        enabled = true
    }
    

    durch

    database = "C:\\Datenbanken\\MeineDB.FDB"
    {
        enabled = true
        log_filename = "C:\\Datenbanken\\Audit\\Log\\MeinLog.txt"
    	include_filter = (INSERT|UPDATE|DELETE)%
    	exclude_filter = %RDB$%
    	log_connections = true
    	log_statement_start = true
    }
    

    Der reguläre Ausdruck (INSERT|UPDATE|DELETE)% bedeutet, dass wir die SQL-Befehle INSERT, UPDATE und DELETE verfolgen wollen (SELECT aber z.B. nicht). Der reguläre Ausdruck %RDB$% bedeutet, dass wir Änderungen in Firebird-Systemtabellen nicht mitverfolgen wollen.

  7. Starte den Firebird-Server neu, in dem Du die Eingabeaufforderung als Administrator öffnest und die folgenden beiden Befehle ausführst:

    net stop FirebirdServerDefaultInstance
    net start FirebirdServerDefaultInstance
    

Wenn Du Dich jetzt mit Deiner Datenbank verbindest und beispielsweise einen SQL-Update-Befehl absetzt, wird in etwa folgendes in Deine Log-Datei geschrieben:

2023-09-15T14:22:14.2750 (36592:0000000006105D40) TRACE_INIT
	SESSION_1 Firebird Audit
	

2023-09-15T14:22:14.2760 (36592:0000000006105D40) ATTACH_DATABASE
	C:\DATENBANKEN\MEINEDB.FDB (ATT_294, SYSDBA:NONE, UTF8, TCPv6:::1/57376)
	C:\Program Files\FlameRobin\flamerobin.exe:34296

2023-09-15T14:22:21.7470 (36592:0000000006105D40) EXECUTE_STATEMENT_START
	C:\DATENBANKEN\MEINEDB.FDB (ATT_294, SYSDBA:NONE, UTF8, TCPv6:::1/57376)
	C:\Program Files\FlameRobin\flamerobin.exe:34296
		(TRA_51871, CONCURRENCY | WAIT | READ_WRITE)

Statement 69:
-------------------------------------------------------------------------------
UPDATE "Tabelle" SET "Name" = 'Neu' WHERE "Name" = 'Alt'
Das könnte dich auch interessieren:
  1. ADO.NET Connection Strings
Teile diesen Artikel
comments powered by Disqus