Powrót do strony głównej

ACL w Active Directory: typy ACE i control rights

Artykuł analizuje 22 typy ACE w Active Directory, ich grupowanie, działanie ACCESS_MASK i control access rights. Wyjaśnia brak praw GENERIC, dziedziczenie i ograniczenia AllExtendedRights dla RBCD.

Głęboka analiza ACL i ACE w Active Directory
Advertisement 728x90

# 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.

Google AdInline article slot

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.

Google AdInline article slot

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:

Google AdInline article slot
  • 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

Advertisement 728x90

Czytaj dalej