# Tiefer Einblick in ACLs in Active Directory: ACE-Typen, ACCESS_MASK und Control Access Rights
Active Directory verwendet 22 ACE-Typen, die in 4 Kategorien für das Zugriffsmanagement gruppiert sind. Der erste Typ umfasst ACCESS_ALLOWED_ACE_TYPE, ACCESS_DENIED_ACE_TYPE, SYSTEM_AUDIT_ACE_TYPE, SYSTEM_MANDATORY_LABEL_ACE_TYPE und SYSTEM_SCOPED_POLICY_ID_ACE_TYPE. Diese ACEs arbeiten mit ACCESS_MASK und der SID des Subjekts und wenden grundlegende Berechtigungen und Verweigerungen an.
Der zweite Typ – ACCESS_ALLOWED_OBJECT_ACE_TYPE und ACCESS_DENIED_OBJECT_ACE_TYPE – erweitert die Möglichkeiten. Er unterstützt ACCESS_MASK, GUIDs für erweiterte Rechte sowie Vererbung an untergeordnete Objekte. Dieser Typ dominiert in AD aufgrund seiner Flexibilität.
Der dritte Typ (ACCESS_ALLOWED_CALLBACK_ACE_TYPE, ACCESS_DENIED_CALLBACK_ACE_TYPE, SYSTEM_AUDIT_CALLBACK_ACE_TYPE, SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE) fügt bedingte Ausdrücke zu ACCESS_MASK und SID hinzu. Logische Regeln bewerten das Access Token – etwa um den Zugriff basierend auf Device Claims einzuschränken.
Der vierte Typ kombiniert Object-ACEs mit bedingten Ausdrücken: ACCESS_ALLOWED_CALLBACK_OBJECT_ACE, ACCESS_DENIED_CALLBACK_OBJECT_ACE, SYSTEM_AUDIT_CALLBACK_OBJECT_ACE, SYSTEM_AUDIT_OBJECT_ACE_TYPE. Allerdings werden bedingte Ausdrücke hier von den Verifizierungsmechanismen ignoriert.
Fehlen von GENERIC-Rechten in Sicherheitsdeskriptoren
ACCESS_MASK ist ein 32-Bit-Feld, in dem einzelne Bits Rechte definieren. Standardzuordnungen umfassen GENERIC_READ, GENERIC_WRITE und GENERIC_ALL, doch diese Bits sind in Sicherheitsdeskriptoren verboten. Ihre Setzung führt zu unvorhersehbarem Verhalten, und sie werden vom Autorisierungsalgorithmus ignoriert.
GENERIC-Bits spielen bei Zugriffsprüfungen via AccessCheckByTypeResultListAndAuditAlarmByHandle mit GenericMapping eine Rolle. Dieser Parameter ordnet GENERIC-Rechte objektbezogenen Rechten zu. AD definiert eigene Zuordnungen, die von denen für Dateisysteme oder Dienste abweichen.
Beim Erstellen eines ACE werden GENERIC-Bits blockiert. In der Praxis ist GENERIC_ALL lediglich eine Kombination aus objektbezogenen Bits basierend auf der Standardzuordnung von AD.
ACCESS_MASK-Flags und Control Access Rights
Wichtige Flags:
- RIGHT_DS_CREATE_CHILD / RIGHT_DS_DELETE_CHILD: objectGUID ist die schemaID des Kind-Typs (z. B. Computer in OU=Computers). Ohne GUID – gilt für alle Typen.
- RIGHT_DS_LIST_CONTENTS: Lesen von Kindern; objectGUID ignoriert.
- RIGHT_DS_WRITE_PROPERTY_EXTENDED: objectGUID für validierte Schreibvorgänge, aber Prüfung per Attributname.
- RIGHT_DS_READ_PROPERTY / RIGHT_DS_WRITE_PROPERTY: objectGUID ist ein Property Set oder schemaID. Ohne GUID – alle Eigenschaften.
- RIGHT_DS_DELETE_TREE: Löschen von Objektbäumen.
- RIGHT_DS_LIST_OBJECT: Objekt-Sichtbarkeit im List Object-Modus (dSHeuristics).
- RIGHT_DS_CONTROL_ACCESS: objectGUID für erweiterte Rechte. Ohne GUID – alle.
Control Access Rights: Erweiterte Rechte, Validated Writes, Property Sets
Control Access Rights gliedern sich in drei Kategorien:
- Erweiterte Rechte – Rechte zur Ausführung von Aktionen (z. B. Domain-Synchronisation).
- Validated Writes – Änderung spezifischer Attribute mit Validierungsprüfungen.
- Property Sets – Zugriff auf Attributgruppen für kompaktere ACLs.
AllExtendedRights auf einem Computer-Objekt gewährt keinen Schreibzugriff auf msDS-AllowedToActOnBehalfOfOtherIdentity (RBCD). Dies ist ein Validated Write aus dem User-Account-Restrictions-Property Set (GUID=4c164200-20c0-11d0-a768-00aa006e0529). Es erfordert separate WRITE_PROPERTY- oder Property-Set-Rechte.
ACE-Vererbung in der AD-Hierarchie
ACEs mit Flags wie OBJECT_INHERIT_ACE, CONTAINER_INHERIT_ACE, NO_PROPAGATE_INHERIT_ACE, INHERIT_ONLY_ACE und INHERITED_ACE werden an Kinder weitervererbt. Einfache Typen vererben an alle Container. Object-ACEs (mit GUID) werden durch InheritedObjectType eingeschränkt.
Wichtige Erkenntnisse
- 22 ACE-Typen in 4 Kategorien: basic, object, callback und object callback.
- GENERIC-*-Bits werden nicht im SD gespeichert; sie dienen nur der Zuordnung bei Prüfungen.
- Control Access Rights umfassen erweiterte Rechte (Aktionen), Validated Writes (Attribute) und Property Sets (Gruppen).
- RBCD erfordert Validated-Write-Rechte, die nicht durch AllExtendedRights abgedeckt sind.
- ACE-Vererbung wird durch Flags und InheritedObjectType präzise gesteuert.
— Editorial Team
Noch keine Kommentare.