다음을 통해 공유


제한된 토큰

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

  • 토큰에서 권한 제거합니다.
  • 토큰의 SID에 거부 전용 특성을 적용하여 보안 개체에 액세스하는 데 사용할 수 없도록 합니다. 거부 전용 특성에 대한 자세한 내용은 액세스 토큰 SID 특성을 참조하세요.
  • 보안 개체에 대한 액세스를 제한할 수 있는 SID 제한 목록을 지정합니다.

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

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

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

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

메모

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