DAC

Das DAC (Discretionary Access Control) besteht aus fest definierten Regeln, welche zu einem Subjekt s die möglichen Zugriffsregeln t auf ein Objekt o definieren. Zusätzlich wird über das Prädikat p ein Zugriffsfenster auf den Daten erzeugt. Dies kann zum Beispiel dadurch implementiert werden, dass automatisch vom DBMS bestimmte Abfragen an die Where-Klausel angehängt werden, so dass ein Subjekt niemals die Möglichkeit hat Daten zu ändern. Ein boolescher Wert f gibt an, ob das Subjekt dieses Recht an ein zweites Subjekt weitergeben darf.

Daraus ergibt sich folgendes Quintupel an Informationen für ein Zugriffsrecht:

Zugriffsrecht = Quintupel (o, s, t, p f)

  • o – Menge der Objekte, die dieses Recht betrifft
  • s – Menge der Subjekte, die dieses Recht in Anspruch nehmen dürfen
  • t – Menge der Zugriffsrechte (lesen, schreiben, löschen), die dem Subjekt zugewiesen wird
  • p – Zugriffsfenster auf o
  • f – Darf Rechte weitergeben

Eine Tabelle mit Zugriffsinformationen könnte beispielsweise so aussehen:

Subjekte/ObjekteTabelle 1Tabelle 3 Spalte 1
Benutzer DieterR, W, D, FR
Benutzer HelmutR, WR, W, D, F
Prozess XRR, W, D, F
Prozess YR, W, DR, W, D

Wobei R das Recht zum Lesen, W das Recht zum Schreiben, D das Recht zum Löschen und F das Recht bedeutet, dieses Recht an weitere Subjekte weiterzugeben.

Das große Problem beim DAC ist es, dass im Normalfall das Subjekt, welches die Daten erzeugt hat, auch dasjenige ist, welches die Rechte auf diesen Daten definiert und administriert. Im Firmenumfeld wird also der Mitarbeiter, der diese Daten generiert auch dafür zuständig sein, die Rechte für diese Daten zu verwalten, was in vielen Fällen nicht sinnvoll ist.

Dadurch, dass die Vergabe von Rechten nicht an zentraler Stelle durchgeführt wird, ergibt sich zusätzlich das Problem, dass nicht klar ersichtlich ist, was passiert, wenn ein Subjekt einem anderen Subjekt ein Recht wieder nimmt. Was passiert, wenn das zweite (jetzt ohne Recht) Subjekt, dieses Recht bereits an ein weiteres Subjekt weitergegeben hatte? Was passiert wenn ein Subjekt s2 welches vom Subjekt s1 ein Recht bekam versucht, s1 dieses Recht zu nehmen?

Das DAC wird in SQL durch die Befehle GRANT und REVOKE abgebildet.

Kategorie Sicherheit, D

Quellen: Kemper/Eickler - Datenbanksysteme - ISBN: 3-486-57690-9