Oft wird bei betrieblichen Regelungen insbesondere von datenbankorientierten Anwendungen mit Personaldaten verlangt, die Veränderungen und Erweiterungen der Datenbank oder kritische Benutzungen elektronisch zwangszuprotokollieren. Was man protokollieren könnte bzw. sollte und wie dies technisch zu realisieren ist, wird im folgenden am Beispiel der meistverbreiteten relationalen Datenbank Oracle dargestellt. Wer dies für andere Datenbanken wissen will (z.B. Sybase), kann bei und per e-mail nachfragen.
ORACLE bietet den üblichen Zugang über Benutzernamen und Passwörter. Es bestehen Eigentumsverhältnisse an allen Datenbankobjekten: Wer sie erzeugt hat, dem gehören sie. Nur der Besitzer eines Datenbankobjektes hat Zugang zu diesem, es sei denn, weitere Rechte werden ausdrücklich vereinbart.
ORACLE unterstützt kein Group-Konzept, in dem mehrere Benutzer zu einer Gruppe zusammengefasst werden, denen dann ein gemeinsames Zugriffsrechte-Profil zugewiesen ist. Es ist daher erforderlich, für jeden Benutzer durch explizite Befehle festzulegen, was er darf.
ORACLE verfügt über ein Audit-System, mit dem man den Datenbankzugriff generell und den Zugriff auf einzelne Datenbankobjekte überwachen kann. Das Audit-System wird eingeschaltet, wenn der Parameter
AUDIT_TRAIL = TRUE
in der Initiierungsdatei INIT.ORA gesetzt ist. Das An- und Abschalten des Audit-Systems ist durch einen entsprechenden Eintrag in der Initiierungsdatei möglich. Diese wird immer beim Startup der Datenbank gelesen; die dort enthaltenen Werte gelten bis zum nächsten Shutdown der Datenbank.
Jeder Benutzer kann die Rechte connect, resource oder dba haben. Connect ist erforderlich, um sich überhaupt mit der Datenbank zu verbinden. Resource erlaubt die Erzeugung gewisser Datenbankobjekte wie z.B. neue Datenbanktabellen oder neue Benutzersichten. dba ist das Privileg des Datenbankadministrators (Database Administrator) und erlaubt so ziemlich alles. Man kann mit dem Audit-System nun überwachen:
Die vereinbarten Audit-Optionen kann man in einer Datenbanktabelle mit dem komplizierten Namen
SYS.DBA_SYS_AUDIT_OPTS
nachsehen. Alle protokollierten Ereignisse werden vom Datenbanksystem ebenfalls in eine Datenbanktabelle geschrieben; sie bietet zwei Benutzersichten,
einmal für den Datenbank-Administrator mit allen Eintragungen (systemweit) und einmal für jeden Benutzer nur mit den seine Person betreffenden Eintragungen.
Datenbankobjekte, die überwacht werden können, sind Datenbanktabellen, Benutzersichten und Sequences (Objekte zur automatischen Nummernvergabe, z.B. wenn eine Kundennummer vom System vergeben und laufend hochgezählt wird). Ein Benutzer hat im ORACLE-System normalerweise nur Zugriff auf die Objekte, die ihm "gehören", d.h. die er selber erzeugt hat. Da "normale" Benutzer aber keine Datenbankobjekte erzeugen, sondern nur welche benutzen, müssen ihnen ihre Rechte ausdrücklich zugeteilt werden. Dafür gibt es den Befehl
GRANT Berechtigung ON Datenbankobjekt TO Benutzer.
Berechtigung umfasst die klassischen Dinge wie select, insert, update und delete (lesen, neu eingeben, verändern, löschen), aber auch Aktionen, die die Datenbankobjekte selber verändern (alter, references). Für Datenbanktabellen und Benutzersichten können die Berechtigungen auch spaltenweise vergeben werden, so dass jemand nur bestimmte Datenfelder einer Datenbanktabelle oder Benutzersicht zu sehen bekommt.
Datenbankobjekt kann eine Datenbanktabelle oder Benutzersicht sein.
Es ist möglich, die Operationen, die auf Datenbankobjekte wirken, durch das System automatisch protokollieren zu lassen. Dazu dient der Befehl
AUDIT Operationsliste ON Objektname oder DEFAULT BY SESSION oder BY SUCCESS WHENEVER SUCCESSFUL oder WHENEVER NOT SUCCESSFUL
Operationsliste umfasst die SQL-Befehle ALTER, GRANT, RENAME sowie die "klassischen" Datenmanipulationen INSERT, UPDATE usw. Man kann entweder einzelne Objekte, z.B. eine bestimmte Datenbanktabelle, angeben oder DEFAULT. Bei letzterem gilt der Befehl systemweit, also nicht nur für einzelne Objekte. SESSION oder ACCESS steuert, ob die Protokollierung nur beim ersten Mal einer "Sitzung" am Terminal oder bei jedem Zugriff erfolgt. Man kann die Protokollierung dann noch auf erfolgreiche Aktionen oder Misserfolge begrenzen.
Die Idee der Regelung besteht darin, für spezielle Auswertungszwecke jeweils eine geeignete Benutzersicht zur Verfügung zu stellen, mit deren Hilfe sich Daten vorverarbeiten lassen, um die Enddarstellung dann mit dem Tabellenkalkulationsprogramm Excel vorzunehmen.
Die Daten unterschiedlicher Benutzersichten sollen nicht untereinander verknüpft werden. Dies kann am besten dadurch gewährleistet werden, dass die jeweiligen Dateien keine gemeinsamen eindeutigen Schlüssel enthalten, über die eine Verknüpfung möglich wäre, z.B. die Personalnummer. Eine zweite Schutzmöglichkeit besteht darin, Benutzersichten, die einen verknüpfungsgeeigneten Schlüssel enthalten, an eine spezielle Berechtigung zu binden, die nur den Zugriff auf die eine Benutzersicht, nicht aber auf andere Benutzersichten mit ebenfalls verknüpfungsgeeigneten Schlüsseldatenfeldern gestattet. Die Berechtigungen sind also nicht an den Namen der Benutzer zu orientieren, sondern an den Benutzersichten. Ein und dieselbe Mitarbeiterin kann dann durchaus Zugriff auf mehrere solcher Benutzersichten haben, muss sich dafür aber jeweils mit einem eigenen username für die entsprechende Benutzersicht anmelden. Die zweite Methode gewährt keinen vollständigen Schutz vor einer Verknüpfung mehrerer Dateien; dies wäre z.B. auf der Excel-Ebene technisch durchaus immer noch möglich, ist aber an einen relativ hohen Aufwand gebunden.
Um die vorgenannten Möglichkeiten zu realisieren, könnte wie folgt verfahren werden:
grant SELECT on Benutzersichtname to PUBLIC;
(Lediglich die Select-Berechtigung ist erforderlich, da das System ja nur Daten zu Auswertungszwecken zur Verfügung stellt, die Daten also nicht verändert werden sollen).
create user benutzersichtUser identified by benutzersichtPassword
alter user benutzersichtUser default tablespace ......
grant SELECT on benutzersichtName to benutzersichtUser
audit_trail = TRUE
gesetzt. Ferner werden
AUDIT create, alter, grant ON DEFAULT BY ACCESS
gesetzt. Damit werden die Befehle zur Erzeugung und Änderung von Datenbankobjekten sowie die Vergabe von Rechten durch das Systemprotokoll überwacht.
SYS.DBA_SYS_AUDIT_OPTS und
SYS.DBA_AUDIT_TRAIL
abzufragen (die erste Tabelle enthält die gesetzten Audit-Optionen, die zweite die Protokoll-Eintragungen):
grant connect to user Betriebsrat identified by BR_Password
grant SELECT on SYS.DBA_SYS_AUDIT_OPTS to Betriebsrat grant SELECT on SYS.DBA_AUDIT_TRAIL to Betriebsrat
.