제한된 토큰

제한된 토큰은 CreateRestrictedToken 함수에 의해 수정된 기본 또는 가장 액세스 토큰입니다. 제한된 토큰의 보안 컨텍스트에서 실행되는 프로세스 또는 가장 스레드는 보안 개체에 액세스하거나 권한 있는 작업을 수행하는 기능이 제한됩니다. CreateRestrictedToken 함수는 다음과 같은 방법으로 토큰을 제한할 수 있습니다.

시스템은 보안 개체에 대한 토큰의 액세스를 검사할 때 SID 제한 목록을 사용합니다. 제한된 프로세스 또는 스레드가 보안 개체에 액세스하려고 하면 시스템은 두 가지 액세스 검사를 수행합니다. 하나는 토큰의 활성화된 SID를 사용하고 다른 하나는 SID 제한 목록을 사용합니다. 두 액세스 검사 모두 요청된 액세스 권한을 허용하는 경우에만 액세스 권한이 부여됩니다. 액세스 검사에 대한 자세한 내용은 DACLs가 개체에 대한 액세스를 제어하는 방법을 참조하세요.

CreateProcessAsUser 함수를 호출할 때 제한된 기본 토큰을 사용할 수 있습니다. 일반적으로 CreateProcessAsUser 를 호출하는 프로세스에는 일반적으로 시스템 코드 또는 LocalSystem 계정에서 실행되는 서비스에 의해서만 유지되는 SE_ASSIGNPRIMARYTOKEN_NAME 권한이 있어야 합니다. 그러나 CreateProcessAsUser 호출이 호출자의 기본 토큰의 제한된 버전을 지정하는 경우 이 권한이 필요하지 않습니다. 이렇게 하면 일반 애플리케이션에서 제한된 프로세스를 만들 수 있습니다.

ImpersonateLoggedOnUser 함수에서 제한된 기본 또는 가장 토큰을 사용할 수도 있습니다.

토큰에 제한 SID 목록이 있는지 확인하려면 IsTokenRestricted 함수를 호출합니다.

참고

제한된 토큰을 사용하는 애플리케이션은 기본 데스크톱이 아닌 데스크톱에서 제한된 애플리케이션을 실행해야 합니다. 이는 기본 데스크톱의 무제한 애플리케이션에 대해 SendMessage 또는 PostMessage를 사용하는 제한된 애플리케이션의 공격을 방지하기 위해 필요합니다. 필요한 경우 애플리케이션을 위해 데스크톱 간을 전환합니다.