Auditing
Das beste Mittel gegen die unerlaubte Nutzung von Daten besteht in präventiven Maßnahmen wie zum Beispiel
- eine Benutzerverwaltung, die zwischen Administrator und Benutzer unterscheidet,
- ein umfassendes Berechtigungssystem,
- die Vergabe der Berechtigungen nach dem Prinzip der Erfordernis,
- die Beschränkung und Absicherung von Fernzugriffen,
- die Trennung von Daten und Views, so dass die Daten separat abgespeichert sind und die Zugriffe nur auf die getrennt gespeicherten Views erfolgen.
Hinzu kommt die Protokollierung und Auditierung der Datenzugriffe, um unerlaubte Zugriffe frühzeitig zu identifizieren. Dabei dürfen auch Datenschutzaspekte nicht außer Acht gelassen werden, da die Protokolle personenbezogene Daten enthalten.
Datenbankauditing Methoden
Es gibt 3 wesentlich unterschiedliche DB-Auditing-Methoden.
- Trace-based
Diese Technik ist in der Regel direkt in der Datenbank eingebaut. Es muss definiert werden, welche Objekte der Protokollierung unterliegen, so dass meistens Datenbankmodelländerung erforderlich sind. Zu Nachteilen dieser Technik zählen unter anderem Einbuße bei Performance und ungenügende Granularität der Auditierung insbesondere bei Leseoperationen. - Scan Transaction Logs
Eine Software liest und wertet Transaktionsprotokolle aus. Wird Transaktionsprotokollierung abgeschaltet, gehen Änderungen verloren. Transaktionsprotokolle werden in der Regel nur kurze Zeit vorgehalten, wobei Auditing-Daten langfristig aufbewahrt werden soll. Erstellung von Transaktionsprotokollen an sich kann auch zu Verlangsamung der Datenbank führen.
- Pro-aktives Monitoring von Datenbankoperationen
Bei dieser Technik werden ALLE SQL-Zugriffe auf die Datenbank server-seitig protokolliert. Somit wird keine Software benötigt, um Transaktionsprotolle auszuwerten. Keine Schemaänderungen sind erforderlich und die Performance leidet in der Regel nicht unter dieser Art der Auditierung.
Auditing in EXASolution
Wir haben uns für die dritte Methode entschieden, da EXASolution explizit auf High Performance Data Warehousing fokussiert ist. Typischerweise treffen wir folgende Rahmenbedingungen in Data Warehouses:
- Performance eine entscheidende Rolle spielt und darf nicht gefährdet werden.
- Umfangreiches Berechtigungssystem wird so eingesetzt, dass die Nutzer lediglich eigene Daten ändern dürfen.
- Der Zugriff erfolgt bevorzugt über Views, wobei die dazugehörigen Daten für die Nutzer nicht bzw. nur lesend erreichbar sind.
- Änderung in der Datenbank erfolgen über einen zentralisierten Prozess, der die Änderungen selbst für Reportingzwecke protokolliert.
Das Auditing wird über EXAoperation eingeschaltet. Dies kann zu jedem Zeitpunkt erfolgen.
Die Protokollierung erfolgt mit Hilfe von statistischer Systemtabellen, so dass das Auditing-Daten bequem in der Datenbank ausgewertet werden können.
- EXA_SYSTEM_EVENTS
protolliert Systemereignisse wie Start und Stop der Datenbank, Backuperstellung, usw. Dies geschieht unabhängig davon, ob das Auditing ein- oder ausgeschaltet ist. - EXA_DBA_AUDIT_SESSIONS
enthält Informationen zu allen Sessions in die Datenbank, sofern das Auditing in EXAoperation eingeschaltet ist- SESSION_ID Id der Session
- LOGIN_TIME Zeitpunkt des Login
- LOGOUT_TIME Zeitpunkt des Logout
- SUCCESS
true Login-Versuch war erfolgreich
false Login-Versuch schlug fehl (z.B. aufgrund eines falschen Passworts) - USER_NAME Nutzername
- OS_USER Betriebssystem-Nutzer auf dem System, von dem sich der Nutzer einloggt
- OS_NAME Betriebssystem-Info des Systems, von dem sich der Nutzer einloggt
- HOST Hostname des Systems, von dem sich der Nutzer einloggt
- CLIENT Client-Applikation, mit dem sich der Nutzer einloggt
- DRIVER Benutzter Datenbanktreiber des Nutzers/der Applikation
- EXA_DBA_AUDIT_SQL
listet alle ausgeführten SQL-Statements auf, sofern das Auditing in EXAoperation eingeschaltet ist.- SESSION_ID Eindeutige Session-ID (siehe auch EXA_DBA_AUDIT_SESSIONS)
- STMT_ID Fortlaufende ID des Statements innerhalb der Session
- START_TIME Startzeitpunkt des Statements
- STOP_TIME Endzeitpunkt des Statements
- SUCCESS
true Statement wurde erfolgreich ausgeführt
false Statement ist fehlgeschlagen (z.B. mit einer DataException) - COMMAND_NAME Name des Statements (z.B. SELECT, COMMIT, MERGE usw.)
- COMMAND_CLASS Klasse des Statements (z.B. DQL, TRANSACTION, DML usw.)
- SQL_TEXT Ausgeführter SQL-Text (begrenzt auf maximal 20.000 Zeichen)
- ERROR_CODE Fehler-Code bei Fehlschlag des Statements
- ERROR_TEXT Fehler-Text bei Fehlschlag des Statements
- SCOPE_SCHEMA Schema, in dem sich der Nutzer befand















