Jetons restreints

Un jeton restreint est un jeton d’accèsprincipal ou d’emprunt d’identité qui a été modifié par la fonction CreateRestrictedToken. Un processus ou un thread d’emprunt d’identité s’exécutant dans le contexte de sécurité d’un jeton restreint est limité dans sa capacité à accéder aux objets sécurisables ou à effectuer des opérations privilégiées. La fonction CreateRestrictedToken peut restreindre un jeton des manières suivantes :

  • Supprimez les privilèges du jeton.
  • Appliquez l’attribut deny-only aux SID dans le jeton afin qu’ils ne puissent pas être utilisés pour accéder aux objets sécurisés. Pour plus d’informations sur l’attribut de refus uniquement, consultez Attributs SID dans un jeton d’accès.
  • Spécifiez une liste de SID de restriction, qui peuvent limiter l’accès aux objets sécurisables.

Le système utilise la liste des SID de restriction lorsqu’il vérifie l’accès du jeton à un objet sécurisable. Lorsqu’un processus ou un thread restreint tente d’accéder à un objet sécurisable, le système effectue deux vérifications d’accès : l’une à l’aide des SID activés du jeton et l’autre à l’aide de la liste des SID de restriction. L’accès est accordé uniquement si les deux vérifications d’accès autorisent les droits d’accès demandés. Pour plus d’informations sur les vérifications d’accès, consultez Comment les DACL contrôlent l’accès à un objet.

Vous pouvez utiliser un jeton principal restreint dans un appel à la fonction CreateProcessAsUser . En règle générale, le processus qui appelle CreateProcessAsUser doit avoir le privilège SE_ASSIGNPRIMARYTOKEN_NAME, qui est généralement détenu uniquement par le code système ou par les services en cours d’exécution dans le compte LocalSystem. Toutefois, si l’appel CreateProcessAsUser spécifie une version restreinte du jeton principal de l’appelant, ce privilège n’est pas requis. Cela permet aux applications ordinaires de créer des processus restreints.

Vous pouvez également utiliser un jeton principal ou d’emprunt d’identité restreint dans la fonction ImpersonateLoggedOnUser .

Pour déterminer si un jeton a une liste de SID de restriction, appelez la fonction IsTokenRestricted .

Notes

Les applications qui utilisent des jetons restreints doivent exécuter l’application restreinte sur des bureaux autres que le bureau par défaut. Cela est nécessaire pour empêcher une attaque par une application restreinte, à l’aide de SendMessage ou PostMessage, vers des applications non restreintes sur le bureau par défaut. Si nécessaire, basculez entre les bureaux pour les besoins de votre application.