Dela via


Begränsade token

En begränsad token är en primär eller personifiering åtkomsttoken som har ändrats av funktionen CreateRestrictedToken. En process eller personifiera tråd som körs i säkerhetskontext av en begränsad token begränsas i dess möjlighet att komma åt skyddsbara objekt eller utföra privilegierade åtgärder. Funktionen CreateRestrictedToken kan begränsa en token på följande sätt:

  • Ta bort privilegier från token.
  • Använd attributet neka endast för SID:er i token så att de inte kan användas för att komma åt skyddade objekt. Mer information om attributet neka endast finns i SID-attribut i en åtkomsttoken.
  • Ange en lista över begränsning av SID:er, vilket kan begränsa åtkomsten till skyddsbara objekt.

Systemet använder listan över begränsning av SID:er när det kontrollerar tokens åtkomst till ett skyddsbart objekt. När en begränsad process eller tråd försöker komma åt ett skyddsbart objekt utför systemet två åtkomstkontroller: en med tokens aktiverade SID:er och en annan med hjälp av listan över begränsning av SID:er. Åtkomst beviljas endast om båda åtkomstkontrollerna tillåter de begärda åtkomsträttigheterna. Mer information om åtkomstkontroller finns i How DACLs Control Access to an Object.

Du kan använda en begränsad primär token i ett anrop till funktionen CreateProcessAsUser. Vanligtvis måste processen som anropar CreateProcessAsUser ha SE_ASSIGNPRIMARYTOKEN_NAME behörighet, som vanligtvis endast innehas av systemkod eller av tjänster som körs i LocalSystem-kontot. Men om CreateProcessAsUser-anropet anger en begränsad version av anroparens primära token krävs inte den här behörigheten. Detta gör det möjligt för vanliga program att skapa begränsade processer.

Du kan också använda en begränsad primär token eller personifieringstoken i funktionen ImpersonateLoggedOnUser.

Om du vill avgöra om en token har en lista över begränsning av SID:er anropar du funktionen IsTokenRestricted.

Not

Program som använder begränsade token ska köra det begränsade programmet på andra datorer än standardskrivbordet. Detta är nödvändigt för att förhindra angrepp från ett begränsat program, med hjälp av SendMessage eller PostMessage, till obegränsade program på standardskrivbordet. Om det behövs växlar du mellan skrivbord för dina programändamål.