Datenbanken

Privilegien, Rollen und Auditing

Objektprivilegien, Systemprivilegien, GRANT, REVOKE, Rollen und Auditing in Datenbanken.

Privilegien, Rollen und Auditing

Datenbanken enthalten oft sensible Daten. Deshalb muss klar geregelt sein, wer was tun darf und welche Aktionen protokolliert werden.

Grundsatz

Jede Tabelle, View und jedes Synonym gehört dem Benutzer, der das Objekt erzeugt hat.

Sollen andere Benutzer darauf zugreifen, müssen Berechtigungen vergeben werden.

Objektprivilegien

Objektprivilegien beziehen sich auf konkrete Datenbankobjekte.

Beispiele:

  • SELECT auf eine Tabelle
  • INSERT auf eine Tabelle
  • UPDATE auf eine Tabelle
  • DELETE auf eine Tabelle
GRANT SELECT ON dept TO adams;
GRANT INSERT, UPDATE ON dept TO adams, jones;
GRANT ALL ON dept TO adams;

PUBLIC

GRANT SELECT ON dept TO PUBLIC;

PUBLIC bedeutet, dass alle Benutzer das Privileg erhalten.

Das sollte man vorsichtig einsetzen.

WITH GRANT OPTION

GRANT SELECT ON emp TO adams WITH GRANT OPTION;

Damit darf adams das erhaltene Recht weitergeben.

Das ist mächtig und muss bewusst entschieden werden.

REVOKE

Mit REVOKE werden Rechte entzogen.

REVOKE ALL ON dept FROM adams;

Systemprivilegien

Systemprivilegien erlauben bestimmte Aktionen im Datenbanksystem.

Beispiele:

  • Tabellen erstellen
  • Rollen erstellen
  • beliebige Rollen vergeben
GRANT CREATE ROLE TO user1;
GRANT GRANT ANY ROLE TO user2;

Systemprivilegien sind oft kritischer als Objektprivilegien.

Rollen

Eine Rolle ist eine Sammlung von Privilegien.

Rolle erstellen:

CREATE ROLE reporting_role;

Privileg an Rolle vergeben:

GRANT SELECT ON emp TO reporting_role;

Benutzer einer Rolle zuordnen:

GRANT reporting_role TO user1;

Vorteile:

  • Rechte sind leichter zu verwalten
  • Benutzer bekommen Rechte passend zur Aufgabe
  • Änderungen können zentral an der Rolle erfolgen

Synonyme

Ein Synonym ist ein alternativer Name für ein Datenbankobjekt.

SELECT *
FROM scott.dept;
CREATE SYNONYM s_dept FOR scott.dept;
SELECT *
FROM s_dept;

Synonyme erleichtern Zugriffe, ersetzen aber keine Berechtigungen.

Auditing

Auditing bedeutet, ausgewählte Datenbankaktionen zu überwachen und aufzuzeichnen.

Auditing hilft bei:

  • Untersuchung verdächtiger Aktivitäten
  • Nachvollziehbarkeit
  • Kontrolle von Änderungen
  • Sicherheitsüberwachung
  • Compliance

Typische Fragen:

  • Wer hat sich wann eingeloggt?
  • Wer hat welche Tabelle gelesen?
  • Wer hat Daten geändert?
  • Welche Aktionen waren erfolgreich oder fehlgeschlagen?

Audit-Typen

Auditing kann sich beziehen auf:

  • SQL-Statements
  • Systemprivilegien
  • Schemaobjekte
  • Fine-grained Auditing

Beispiel:

AUDIT SELECT TABLE, UPDATE TABLE;

Für bestimmte Benutzer:

AUDIT SELECT TABLE, UPDATE TABLE BY user1, user2;

Login-Audit:

AUDIT SESSION BY scott;

Auditing beenden:

NOAUDIT SESSION BY scott;

Audit Trail

Der Audit Trail speichert Audit Records.

Typische Inhalte:

  • Benutzer
  • Operationstyp
  • Objekt
  • Datum
  • Uhrzeit
  • Erfolg oder Fehler

In Oracle gibt es dafür unter anderem Data-Dictionary-Views wie DBA_AUDIT_TRAIL.

Fine-grained Auditing

Fine-grained Auditing erlaubt sehr genaue Regeln, zum Beispiel abhängig von Spalten oder Bedingungen.

Beispielidee: Ein Audit-Eintrag entsteht nur, wenn Bücher mit einem Preis über 50 abgefragt werden.

Merksatz

Rechte verhindern unbefugte Aktionen. Auditing sorgt dafür, dass wichtige Aktionen nachvollziehbar bleiben.

Zuletzt aktualisiert: 6. Juni 2026