클라이언트 가장(권한 부여)

가장은 스레드를 소유하는 프로세스와 다른 보안 정보를 사용하여 스레드를 실행할 수 있는 기능입니다. 일반적으로 서버 애플리케이션의 스레드는 클라이언트를 가장합니다. 이렇게 하면 서버 스레드가 해당 클라이언트를 대신하여 서버의 개체에 액세스하거나 클라이언트의 자체 개체에 대한 액세스의 유효성을 검사할 수 있습니다.

Microsoft Windows API는 다음 함수를 제공해 가장을 시작합니다.

  • DDE 서버 애플리케이션은 DdeImpersonateClient 함수를 호출하여 클라이언트를 가장할 수 있습니다.
  • 명명된 파이프 서버는 ImpersonateNamedPipeClient 함수를 호출할 수 있습니다.
  • ImpersonateLoggedOnUser 함수를 호출하여 로그온한 사용자의 액세스 토큰의 보안 컨텍스트를 가장할 수 있습니다.
  • ImpersonateSelf 함수를 사용하면 스레드가 자체 액세스 토큰의 복사본을 생성할 수 있습니다. 이는 애플리케이션이 단일 스레드의 보안 컨텍스트를 변경해야 하는 경우에 유용합니다. 예를 들어 프로세스의 스레드 하나만 권한을 사용하도록 설정해야 하는 경우가 있습니다.
  • SetThreadToken 함수를 호출하여 지정된 가장 토큰의 보안 컨텍스트에서 대상 스레드가 실행되도록 할 수 있습니다.
  • Microsoft RPC(원격 프로시저 호출) 서버 애플리케이션은 RpcImpersonateClient 함수를 호출하여 클라이언트를 가장할 수 있습니다.
  • 보안 패키지 또는 애플리케이션 서버는 ImpersonateSecurityContext 함수를 호출하여 클라이언트를 가장할 수 있습니다.

대부분의 가장에서 가장 스레드는 RevertToSelf 함수를 호출하여 자체 보안 컨텍스트로 되돌릴 수 있습니다. RPC 서버 애플리케이션이 RpcRevertToSelf 또는 RpcRevertToSelfEx를 호출하여 자체 보안 컨텍스트로 되돌리기 RPC 가장은 예외입니다.

참고: Win32 서비스에서 사용자를 가장하고 사용자 환경 변수를 사용하는 API를 호출하는 경우 가장을 하기 전에 RegDisablePredefinedCache를 호출해야 할 수 있습니다.