# Discretionary Access Control

Discretionary Access Control (DAC) oder Benutzerbestimmbare Zugriffskontrolle ist ein Sicherheitskonzept für IT-Systeme. Hierbei wird die Entscheidung, ob auf eine Ressource zugegriffen werden darf, allein auf der Basis der Identität des Akteurs getroffen. Das heißt, die Zugriffsrechte für (Daten-)Objekte werden pro Benutzer festgelegt. Eine Abschwächung dieses Konzeptes stellt die Verwendung von Benutzerrollen und -Gruppen dar (siehe Role Based Access Control).
Die Discretionary Access Control bildet das Gegenteil der Mandatory Access Control, die den Zugriff aufgrund von allgemeinen Regeln und zusätzlicher Informationen über den Akteur treffen.

## Verwaltung

Formal können Zugriffsrechte in einem System mit Discretionary Access Control als eine Relation von Subjekt, Objekt und Recht beschrieben werden: (S,O,R) → {ja,nein}; Das entspricht einer Matrix von S×O Einträgen (ein Eintrag pro Subjekt-Objekt-Paar), wobei jeder Eintrag die Menge von Rechten ist, die das Subjekt an dem Objekt hat, also: r(o,s) → R*.
Eine Besonderheit ist, dass Subjekte ihre eigenen Rechte an andere Subjekte weitergeben können, während bei Mandatory Access Control ausschließlich eine zentrale Verwaltungsinstanz Rechte vergeben kann.
Subjekte sind in diesem Zusammenhang Akteure, also zum Beispiel Benutzer, Prozesse oder Programme. Objekte sind Daten oder Ressourcen (wie Dateien, Drucker etc.), auf denen ein Subjekt Operationen ausführen kann. Dabei ist zu beachten, dass Subjekte zugleich Objekte sein können: Ein Administrator (Subjekt) hat zum Beispiel das Recht, einen Benutzer zu löschen (in diesem Zusammenhang ein Objekt). Umgekehrt kann aus einem Objekt ein Subjekt werden, zum Beispiel wenn man ein Programm „startet“, also aus einer Datei einen Prozess erzeugt.
Eine Möglichkeit zur Darstellung der Zugriffsrechte, die diesem Faktor Rechnung trägt, ist die Darstellung als Graph mit gerichteten, beschrifteten Kanten: Jeder Knoten im Graph entspricht einem Subjekt oder Objekt, jede Kante einer „hat-Recht“-Beziehung.
Unter Unix und Windows erfolgt die Rechtezuweisung über eine vom Administrator verwaltete freigegebene Zugriffssteuerungsliste, auch DACL (Discretionary Access Control List) genannt. Die Einträge in dieser Liste werden mit ACE (Access Control Entry) abgekürzt. Überwachungseinstellungen werden über die SACL (System Access Control List) gesteuert, die sämtliche Sicherheits-Rollen enthält und die Ereignisse bei Zugriff auf die DACL generiert.

## Nachteile

Unter Umständen ist es notwendig, für bestimmte eingeschränkte Operationen dem Benutzer erweiterte Zugriffsrechte zu gewähren. Ein Beispiel hierfür ist das Ändern des eigenen Passwortes durch den Benutzer unter Unix.
Um solche Operationen zu ermöglichen, wird unter Unix das entsprechende Programm mit dem sogenannten SUID-Flag versehen, sodass das Programm unter der Benutzeridentifikation des Eigentümers der Programmdatei ausgeführt wird. Häufig ist dies der Benutzer root, der auf einem Unix-System Zugriff auf alle Systemressourcen besitzt.
Dadurch entsteht die Gefahr, dass ein Unbefugter durch die Ausnutzung einer Sicherheitslücke die volle Kontrolle über das System erlangen könnte.
Daher wurden für bestimmte Betriebssysteme, wie Linux oder FreeBSD Erweiterungen entwickelt, die auf einem anderen Sicherheitskonzept beruhen. Unter diesen Erweiterungen werden die Entscheidungen über Zugriffsrechte nicht mehr allein auf der Basis der Benutzeridentifikation getroffen, unter der ein Unix-Programm ausgeführt wird. Dadurch wird verhindert, dass ein Angreifer durch Ausnutzen einer Sicherheitslücke die vollständige Kontrolle über ein System erlangen kann.