# Głęboka analiza ACL w Active Directory: typy ACE, ACCESS_MASK i control access rights
Active Directory wykorzystuje 22 typy ACE, pogrupowane w 4 kategorie do zarządzania dostępem. Pierwszy typ obejmuje ACCESS_ALLOWED_ACE_TYPE, ACCESS_DENIED_ACE_TYPE, SYSTEM_AUDIT_ACE_TYPE, SYSTEM_MANDATORY_LABEL_ACE_TYPE oraz SYSTEM_SCOPED_POLICY_ID_ACE_TYPE. Te ACE operują na ACCESS_MASK i SID podmiotu, stosowane do podstawowych zezwoleń i zakazów.
Drugi typ — ACCESS_ALLOWED_OBJECT_ACE_TYPE i ACCESS_DENIED_OBJECT_ACE_TYPE — rozszerza możliwości. Obsługuje ACCESS_MASK, GUID praw rozszerzonych oraz dziedziczenie dla obiektów podrzędnych. Ten typ dominuje w AD dzięki elastyczności.
Trzeci typ (ACCESS_ALLOWED_CALLBACK_ACE_TYPE, ACCESS_DENIED_CALLBACK_ACE_TYPE, SYSTEM_AUDIT_CALLBACK_ACE_TYPE, SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE) dodaje wyrażenia warunkowe do ACCESS_MASK i SID. Logiczne reguły oceniają token dostępu, na przykład ograniczając dostęp na podstawie device claims.
Czwarty typ łączy obiektowe ACE z wyrażeniami warunkowymi: ACCESS_ALLOWED_CALLBACK_OBJECT_ACE, ACCESS_DENIED_CALLBACK_OBJECT_ACE, SYSTEM_AUDIT_CALLBACK_OBJECT_ACE, SYSTEM_AUDIT_OBJECT_ACE_TYPE. Jednak wyrażenia warunkowe są tu ignorowane przez mechanizmy weryfikacji.
Brak praw GENERIC w deskryptorze zabezpieczeń
ACCESS_MASK to 32-bitowe pole, w którym bity określają prawa. Standardowe opisy obejmują GENERIC_READ, GENERIC_WRITE, GENERIC_ALL, ale w deskryptorze zabezpieczeń te bity są zabronione. Ustawienie ich prowadzi do nieprzewidywalnych rezultatów i jest ignorowane w algorytmie autoryzacji.
Bity GENERIC są istotne przy sprawdzaniu dostępu za pomocą AccessCheckByTypeResultListAndAuditAlarmByHandle z GenericMapping. Ten parametr mapuje GENERIC na prawa specyficzne dla obiektu. W AD mapowania są zdefiniowane oddzielnie i różnią się od systemu plików czy usług.
Podczas tworzenia ACE bity GENERIC są blokowane. Faktycznie 'GENERIC_ALL' to kombinacja bitów specyficznych dla obiektu według standardowego mapowania AD.
Flagowe ACCESS_MASK i control access rights
Kluczowe flagi:
- RIGHT_DS_CREATE_CHILD / RIGHT_DS_DELETE_CHILD: objectGUID — schemaID typu podrzędnego (np. computer w OU=Computers). Bez GUID — wszystkie typy.
- RIGHT_DS_LIST_CONTENTS: odczyt podrzędnych, objectGUID jest ignorowane.
- RIGHT_DS_WRITE_PROPERTY_EXTENDED: objectGUID dla validated writes, ale weryfikacja po nazwie atrybutu.
- RIGHT_DS_READ_PROPERTY / RIGHT_DS_WRITE_PROPERTY: objectGUID — property set lub schemaID. Bez GUID — wszystkie właściwości.
- RIGHT_DS_DELETE_TREE: usuwanie drzewa obiektów.
- RIGHT_DS_LIST_OBJECT: widoczność obiektu w trybie List Object (dSHeuristics).
- RIGHT_DS_CONTROL_ACCESS: objectGUID — extended rights. Bez GUID — wszystkie.
Control access rights: extended rights, validated writes, property sets
Control access rights dzielą się na:
- Extended Rights — prawa do działań (synchronizacja domeny).
- Validated Writes — modyfikacja konkretnych atrybutów z weryfikacją.
- Property Sets — dostęp do grup atrybutów dla kompaktowości ACL.
AllExtendedRights na komputerze nie daje prawa zapisu do msDS-AllowedToActOnBehalfOfOtherIdentity (RBCD). To validated write z property set User-Account-Restrictions (GUID=4c164200-20c0-11d0-a768-00aa006e0529). Wymagane są oddzielne prawa WRITE_PROPERTY lub property set.
Dziedziczenie ACE w hierarchii AD
ACE z flagami OBJECT_INHERIT_ACE, CONTAINER_INHERIT_ACE, NO_PROPAGATE_INHERIT_ACE, INHERIT_ONLY_ACE, INHERITED_ACE są kopiowane na podrzędne. Proste typy dziedziczone są na dowolne kontenery. Obiektowe ACE (z GUID) ograniczane są przez InheritedObjectType.
Co ważne
- 22 typy ACE grupowane w 4 rodzaje: podstawowe, obiektowe, callback, obiektowe callback.
- Bity GENERIC-* nie są przechowywane w SD, używane tylko do mapowania przy weryfikacji.
- Control access rights — extended rights (działania), validated writes (atrybuty), property sets (grupy).
- RBCD wymaga praw do validated write, nie obejmuje AllExtendedRights.
- Dziedziczenie ACE sterowane flagami i InheritedObjectType dla precyzyjnej kontroli.
— Editorial Team
Brak komentarzy.