Partager via


Jetons restreints

Un jeton restreint est un principal ou l’emprunt d’identité jeton d’accès qui a été modifié par la fonction CreateRestrictedToken. Un processus ou l’emprunt d’identité de thread 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 de la manière suivante :

  • Supprimez 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 deny-only, consultez attributs SID dans un jeton d’accès.
  • Spécifiez la liste des 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 : une à l’aide des SID activés du jeton, et une 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 How DACLs Control Access to an Object.

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 s’exécutant 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 nécessaire. Cela permet aux applications ordinaires de créer des processus restreints.

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

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

Note

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, pour des applications illimitées sur le bureau par défaut. Si nécessaire, basculez entre les bureaux à des fins de votre application.