Ordre des ACL dans une liste de contrôle d’accès

Lorsqu’un processus tente d’accéder à un objet sécurisable, le système passe en revue les entrées de contrôle d’accès (ACA) dans la liste de contrôle d’accès discrétionnaire (DACL) de l’objet jusqu’à ce qu’il trouve des ACL qui autorisent ou refusent l’accès demandé. Les droits d’accès qu’une liste DACL autorise un utilisateur peuvent varier en fonction de l’ordre des ACL dans le DACL. Par conséquent, le système d’exploitation Windows XP définit un ordre préféré pour les ACL dans la liste DACL d’un objet sécurisable. L’ordre préféré fournit un framework simple qui garantit qu’un ACE d’accès refusé refuse réellement l’accès. Pour plus d’informations sur l’algorithme du système pour la vérification de l’accès, consultez Comment les DACL contrôlent l’accès à un objet.

Pour Windows Server 2003 et Windows XP, le bon ordre des ACL est compliqué par l’introduction d’ACL spécifiques aux objets et de l’héritage automatique.

Les étapes suivantes décrivent l’ordre par défaut :

  1. Toutes les ACÉ explicites sont placées dans un groupe avant les ACÉ héritées.
  2. Dans le groupe d’ACL explicites, les ACÉ avec accès refusé sont placés avant les ACÉ autorisés.
  3. Les ACL hérités sont placés dans l’ordre dans lequel ils sont hérités. Les ACL héritées du parent de l’objet enfant viennent en premier, puis les ACL héritées du grand-parent, et ainsi de suite dans l’arborescence des objets.
  4. Pour chaque niveau d’ACL hérité, les ACÉ avec refus d’accès sont placés avant les ACÉ autorisés.

Bien sûr, tous les types ACE ne sont pas requis dans une liste de contrôle d’accès.

Des fonctions telles que AddAccessAllowedAceEx et AddAccessAllowedObjectAce ajoutent un ACE à la fin d’une liste de contrôle d’accès. Il incombe à l’appelant de s’assurer que les ACE sont ajoutés dans l’ordre approprié.