Die Schutztechnik des ORACLE-Datenbanksystems und ihre Nutzung für die betriebliche Regelung

 

1. Überblick

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.

 

2. Audit

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.

 

3. Überwachung das Datenbankzugangs

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.

 

4. Überwachung einzelner Datenbankobjekte

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.

 

5. Vorschlag für die Betriebsvereinbarung

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:

  1. Unmittelbar nach Erzeugung der Datenbank, vor der Definition der ersten Datenbanktabelle, ist ein Benutzer mit dba-Zugriffsrechten (Database Manager) einzurichten; unter diesem Benutzernamen werden alle Datenbankobjekte (Tabellen und Benutzersichten) erzeugt.

     

  2. Alle Benutzersichten, die keine Personalnummer (und auch kein sonstiges die Person des einzelnen Arbeitnehmers identifizierendes Merkmal) enthalten, sind "öffentlich" zugänglich, z.B.

      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).

     

  3. Für alle Benutzersichten, deren Daten eine Individualisierung erlauben, werden getrennte Berechtigungen eingerichtet:

      create user benutzersichtUser identified by benutzersichtPassword

      alter user benutzersichtUser default tablespace ......

      grant SELECT on benutzersichtName to benutzersichtUser

     

  4. Das Audit des Datenbanksystems wird wie folgt eingerichtet: In der Initiierungsdatei INIT.ORA wird der Parameter

      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.

     

  5. Für den Betriebsrat wird eine Benutzerberechtigung eingerichtet, die es erlaubt, den Inhalt der Systemtabellen

      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