Von ORDIX AG auf Dienstag, 03. Mai 2022
Kategorie: Data Management

Vertrauen ist gut, Kontrolle ist besser: Audit von Db2 LUW Datenbanksystemen – Schritt für Schritt erklärt

Teil 2: Audit der Datenbank

Wie andere Datenbanksysteme auch, stellt Db2 eine Audit Komponente (IBM bezeichnet sie als Audit Facility) bereit, die zum Erkennen von unerwarteten und unbekannten Zugriffen auf die Db2 Instanzen und Datenbanken dient. Im ersten Teil wurde die Einrichtung für die Instanz Schritt für Schritt beschrieben. Im zweiten Teil geht es um die Datenbank an sich.

Beim Auditieren einer Datenbank werden mit Hilfe von definierten Prüfrichtlinien (sogenannten Policies), Prüfprotokolle (Audit Records) generiert und diese dann in Dateien abgelegt.

Mit den "Policies" definiere ich, was ich auditieren möchte. Die Ergebnisse dieser Abfragen werden dann für jede Datenbank in separate Records geschrieben, ähnlich wie bei der Db2 Instanz. Es werden dazu, die innerhalb der Instanz definierten Verzeichnispfade verwendet, beispielsweise:

Audit Data Path: "/auditdata"
Audit Archive Path: "/auditarchive"

Eine Unterscheidung der Audit Dateien von Datenbanken und Instanz ist anhand der Dateinamen möglich, wie im folgenden Beispiel unten erklärt wird. Bei den Datenbanken wird genauso vorgegangen, wie bei der Instanz: Das Abhängen der Datenströme entspricht der Archivierung und dem Versand der Dateien.


Das Versenden erfolgt dann mithilfe einer Sendedatei, wie im Teil 1 (Schritt 3) ausführlich beschrieben wurde. Dabei sollten alle Dateien als ein Packet zur Auswerteeinheit übertragen werden.
Dateinamen der aktiven Dateien:


Dateinamen der archivierten Dateien:

Schritt 1: Was kann auditiert werden? 

Wie oben erwähnt, kann der Sicherheitsadministrator (secadm) mithilfe von Prüfrichtlinien (Policies) die Prüffunktionen so konfigurieren, dass entweder alles oder nur diejenigen Daten, Objekten und Zugriffe erfasst werden, die zur Erfüllung der Auditanforderung benötigt werden.

Folgende Optionen sind möglich:

Schritt 2: Definition der Prüfrichtlinien für die Datenbanken

Die Option "categories" gibt an, aus welchen Kategorien gesammelt werden soll:


Die Option "status" gibt an, ob bei Erfolg oder bei Fehlschlag Audit-Daten gesammelt werden sollen:


Die Option "errortype" gibt an, bei welchen Fehlercodes gesammelt werden sollen:


Hier die allgemeine Syntax zur Definition einer Prüfrichtlinie:

create audit policy <Name> categories <all> status <both> error type <audit>

Schritt 3: Policies in der Datenbank erstellen und nutzen

Mit der Audit Policy definiere ich, was auf Datenbankebene auditiert werden soll. Mit dem Befehl "audit..." starte ich die Datenbank Auditierung, wie die folgenden zwei Beispielen beschreiben:

Beispiel 1: Es sollen alle Aktionen auditiert werden, die durch Personen mit der Berechtigung SYSADM, SECADM oder DBADM vorgenommen werden. Um dies zu realisieren, benötigt man die beiden Kategorien "Sysadm" und "Execute" zum Loggen der SQL-Anweisungen. Es sollen erfolgreiche und fehlerhafte Operationen auditiert werden (Status "both"). Die Policy bekommt den Namen "admins".

Der Sicherheitsadministrator SECADM ordnet im Anschluss dann die Prüfrichtlinie "audit …." den Berechtigungen SYSADM, DBADM, SECADM zu.

Beispiel 2: Es sollen alle erfolgreichen und fehlerhaften Zugriffe auf die Datenbank mitgeloggt werden. Hier benötigt man die Kategorie "context" und "validate". Die Policy bekommt die Bezeichnung "login_logout". Die Rolle "role_users" muss vorher angelegt werden und den jeweiligen Benutzern und Gruppen zugewiesen werden.

Schritt 4: Audit stoppen und Policy entfernen

Wie beim Aufsetzen des Audits, kann ich auch das Audit ganz oder teilweise beenden. Es reicht dabei nicht, ein "db2audit stop" abzusetzen, sondern ich muss auf den Datenbanken die Policys entfernen. Mit "remove policy" wird die Prüfrichtlinie aus dem angegebenen Objekt entfernt. Ab diesem Moment findet die Protokollierung nicht mehr statt. Die Zuordnung wird aus dem Systemkatalog entfernt. Anschließend kann man die "Policy" löschen ("droppen").

Beispiel 1: Anhand des ersten Beispiels aus dem vorigen Abschnitt, wird hier das Entfernen der Audit Policy dargestellt.

Schritt 5: Audit überprüfen und überwachen

Um die Definition der Policies auf Datenbankebene zu überprüfen, stehen im Systemkatalog der Db2 Datenbank die Tabellen "auditpolicies" und "audituse" im Schema "syscat" zur Verfügung. Die Tabellen haben die folgenden Spaltendefinitionen:

Schritt 6: Audit überprüfen und überwachen

Zum Abschluss noch ein Tipp: Sollten wider Erwarten die Auditrecords zu groß werden, so dass es Probleme beim Übertragen der Daten gibt, dann bietet der Support von IBM verschiedene, auf die Auditierung zugeschnittene Umgebungsvariable an, um die Dateigrößen in Grenzen zu halten. Im konkreten Fall aus der Praxis bei einem Kunden, hat die Kategorie "context db2hmon" zu viele Daten geschrieben, die zur Auswertung nicht benötigt wurden. Aus diesem Grund wurde die Ausgabe des db2hmon durch die Umgebungsvariable begrenzt:

db2set DB2_LIMIT_AUDIT_APPS=DB2HMON

Fazit 

Die Db2 Audit Facility ist sehr umfangreich und mächtig. Sie bietet die Möglichkeit, sowohl auf Instanz- wie auch auf Datenbankebene unabhängig zu auditieren. Durch Anlegen von Prüffunktionen, kann das Audit auf die speziellen Erfordernisse angepasst werden. Die Prüfprotokolle sind eindeutig strukturiert, was die Arbeit und das Monitoring angenehm macht.

Kommentare hinterlassen