Plongée approfondie dans les ACL d'Active Directory : types d'ACE, ACCESS_MASK et droits de contrôle d'accès
Active Directory utilise 22 types d'ACE, regroupés en 4 catégories pour la gestion des accès. Le premier type inclut ACCESS_ALLOWED_ACE_TYPE, ACCESS_DENIED_ACE_TYPE, SYSTEM_AUDIT_ACE_TYPE, SYSTEM_MANDATORY_LABEL_ACE_TYPE et SYSTEM_SCOPED_POLICY_ID_ACE_TYPE. Ces ACE agissent sur ACCESS_MASK et le SID du sujet, en appliquant des autorisations et des refus de base.
Le deuxième type — ACCESS_ALLOWED_OBJECT_ACE_TYPE et ACCESS_DENIED_OBJECT_ACE_TYPE — étend les capacités. Il prend en charge ACCESS_MASK, des GUID pour les droits étendus, et l'héritage vers les objets enfants. Ce type domine dans AD en raison de sa flexibilité.
Le troisième type (ACCESS_ALLOWED_CALLBACK_ACE_TYPE, ACCESS_DENIED_CALLBACK_ACE_TYPE, SYSTEM_AUDIT_CALLBACK_ACE_TYPE, SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE) ajoute des expressions conditionnelles à ACCESS_MASK et au SID. Des règles logiques évaluent le jeton d'accès — par exemple, en restreignant l'accès en fonction des revendications de l'appareil.
Le quatrième type combine les ACE d'objet avec des expressions conditionnelles : ACCESS_ALLOWED_CALLBACK_OBJECT_ACE, ACCESS_DENIED_CALLBACK_OBJECT_ACE, SYSTEM_AUDIT_CALLBACK_OBJECT_ACE, SYSTEM_AUDIT_OBJECT_ACE_TYPE. Cependant, les expressions conditionnelles sont ignorées par les mécanismes de vérification dans ce cas.
Absence des droits GENERIC dans les descripteurs de sécurité
ACCESS_MASK est un champ de 32 bits où des bits individuels définissent les droits. Les mappages standards incluent GENERIC_READ, GENERIC_WRITE et GENERIC_ALL, mais ces bits sont interdits dans les descripteurs de sécurité. Les définir entraîne des résultats imprévisibles et ils sont ignorés par l'algorithme d'autorisation.
Les bits GENERIC sont importants lors des vérifications d'accès via AccessCheckByTypeResultListAndAuditAlarmByHandle avec GenericMapping. Ce paramètre mappe les droits GENERIC vers des droits spécifiques à l'objet. AD définit ses propres mappages séparément, qui diffèrent de ceux pour le système de fichiers ou les services.
Lors de la création d'un ACE, les bits GENERIC sont bloqués. En pratique, GENERIC_ALL est simplement une combinaison de bits spécifiques à l'objet basée sur le mappage standard d'AD.
Drapeaux ACCESS_MASK et droits de contrôle d'accès
Drapeaux clés :
- RIGHT_DS_CREATE_CHILD / RIGHT_DS_DELETE_CHILD : objectGUID est le schemaID du type d'enfant (par ex., computer dans OU=Computers). Sans GUID — s'applique à tous les types.
- RIGHT_DS_LIST_CONTENTS : lecture des enfants ; objectGUID ignoré.
- RIGHT_DS_WRITE_PROPERTY_EXTENDED : objectGUID pour les écritures validées, mais vérifié par nom d'attribut.
- RIGHT_DS_READ_PROPERTY / RIGHT_DS_WRITE_PROPERTY : objectGUID est un ensemble de propriétés ou schemaID. Sans GUID — toutes les propriétés.
- RIGHT_DS_DELETE_TREE : suppression d'arbres d'objets.
- RIGHT_DS_LIST_OBJECT : visibilité de l'objet en mode List Object (dSHeuristics).
- RIGHT_DS_CONTROL_ACCESS : objectGUID pour les droits étendus. Sans GUID — tous.
Droits de contrôle d'accès : droits étendus, écritures validées, ensembles de propriétés
Les droits de contrôle d'accès se divisent en trois catégories :
- Droits étendus — droits pour effectuer des actions (par ex., synchronisation de domaine).
- Écritures validées — modification d'attributs spécifiques avec contrôles de validation.
- Ensembles de propriétés — accès à des groupes d'attributs pour des ACL plus compactes.
AllExtendedRights sur un objet computer n'accorde pas l'accès en écriture à msDS-AllowedToActOnBehalfOfOtherIdentity (RBCD). Il s'agit d'une écriture validée de l'ensemble de propriétés User-Account-Restrictions (GUID=4c164200-20c0-11d0-a768-00aa006e0529). Elle nécessite des droits WRITE_PROPERTY ou d'ensemble de propriétés séparés.
Héritage des ACE dans la hiérarchie AD
Les ACE avec des drapeaux comme OBJECT_INHERIT_ACE, CONTAINER_INHERIT_ACE, NO_PROPAGATE_INHERIT_ACE, INHERIT_ONLY_ACE et INHERITED_ACE se propagent vers les enfants. Les types simples héritent vers n'importe quels conteneurs. Les ACE d'objet (avec GUID) sont restreints par InheritedObjectType.
Points clés
- 22 types d'ACE regroupés en 4 catégories : de base, d'objet, callback et callback d'objet.
- Les bits GENERIC-* ne sont pas stockés dans le SD ; ils ne servent qu'au mappage lors des vérifications.
- Les droits de contrôle d'accès incluent les droits étendus (actions), les écritures validées (attributs) et les ensembles de propriétés (groupes).
- RBCD nécessite des droits d'écriture validée, non couverts par AllExtendedRights.
- L'héritage des ACE est géré par des drapeaux et InheritedObjectType pour un contrôle précis.
— Editorial Team
Aucun commentaire pour le moment.