Fonctionnement d’AccessCheck
Lorsqu’un thread tente d’accéder à un objet sécurisable, le système accorde ou refuse l’accès. Si l’objet n’a pas de liste de contrôle d’accès discrétionnaire (DACL), le système accorde l’accès ; sinon, le système recherche Access Control entrées (ACA) dans la liste dacl de l’objet qui s’applique au thread. Chaque ACE dans la liste DACL de l’objet spécifie les droits d’accès autorisés ou refusés pour un fiduciaire, qui peut être un compte d’utilisateur, un compte de groupe ou une session d’ouverture de session.
DACL
Le système compare le fiduciaire de chaque ACE aux fiduciaires identifiés dans le jeton d’accès du thread. Un jeton d’accès contient des identificateurs de sécurité (SID) qui identifient l’utilisateur et les comptes de groupe auxquels l’utilisateur appartient. Un jeton contient également un SID d’ouverture de session qui identifie la session d’ouverture de session actuelle. Pendant une case activée d’accès, le système ignore les SID de groupe qui ne sont pas activés. Pour plus d’informations sur les SID activés, désactivés et refuser uniquement, consultez Attributs SID dans un jeton d’accès.
En règle générale, le système utilise le jeton d’accès principal du thread qui demande l’accès. Toutefois, si le thread emprunte l’identité d’un autre utilisateur, le système utilise le jeton d’emprunt d’identité du thread.
Le système examine chaque ACE dans l’ordre jusqu’à ce que l’un des événements suivants se produise :
- Un ACE refusé l’accès refuse explicitement l’un des droits d’accès demandés à l’un des administrateurs répertoriés dans le jeton d’accès du thread.
- Un ou plusieurs AE d’accès autorisés pour les fiduciaires répertoriés dans le jeton d’accès du thread accordent explicitement tous les droits d’accès demandés.
- Tous les AE ont été vérifiés et au moins un droit d’accès demandé n’a pas été explicitement autorisé, auquel cas l’accès est implicitement refusé.
L’illustration suivante montre comment la liste DACL d’un objet peut autoriser l’accès à un thread tout en refusant l’accès à un autre.
Pour le thread A, le système lit ACE 1 et refuse immédiatement l’accès, car l’ACE refusé s’applique à l’utilisateur dans le jeton d’accès du thread. Dans ce cas, le système n’case activée pas les AE 2 et 3. Pour le thread B, ACE 1 ne s’applique pas. Le système passe donc à ACE 2, qui autorise l’accès en écriture, et à ACE 3 qui autorise l’accès en lecture et en exécution.
Étant donné que le système cesse de vérifier les DCA lorsque l’accès demandé est explicitement accordé ou refusé, l’ordre des ACÉ dans une liste de contrôle d’accès d’accès est important. Notez que si l’ordre ACE était différent dans l’exemple, le système a peut-être accordé l’accès au thread A. Pour les objets système, le système d’exploitation définit un ordre préféré des AIC dans une liste de contrôle d’accès.