SeImpersonateClientEx 함수(ntifs.h)

SeImpersonateClientEx 루틴으로 인해 스레드가 사용자를 가장합니다.

구문

NTSTATUS SeImpersonateClientEx(
  [in]           PSECURITY_CLIENT_CONTEXT ClientContext,
  [in, optional] PETHREAD                 ServerThread
);

매개 변수

[in] ClientContext

사용자의 보안 클라이언트 컨텍스트에 대한 포인터입니다.

[in, optional] ServerThread

사용자를 가장할 스레드에 대한 포인터입니다. 지정하지 않으면 호출 스레드가 사용됩니다.

반환 값

SeImpersonateClientEx 는 다음과 같은 적절한 NTSTATUS 값을 반환합니다.

반환 코드 설명
STATUS_SUCCESS
가장 시도가 성공했습니다.
STATUS_ACCESS_DENIED
ServerThread 매개 변수에 지정된 스레드에 ClientContext 매개 변수에 보안 클라이언트 컨텍스트가 지정된 사용자를 가장하기에 충분한 액세스 권한이 없습니다.
STATUS_NO_MEMORY
SeImpersonateClientEx 는 가장 정보 구조에 대한 메모리를 할당할 때 풀 할당 오류가 발생했습니다.

설명

SeImpersonateClientEx 는 스레드가 사용자를 가장하도록 하는 데 사용됩니다. ClientContext의 클라이언트 보안 컨텍스트는 최신 상태로 간주됩니다.

신뢰할 수 없는 사용자 스레드의 권한 상태를 높이는 것은 매우 안전하지 않습니다(예: 사용자의 스레드를 가져와 LocalSystem을 가장). 신뢰할 수 없는 사용자 스레드의 권한이 발생한 경우 사용자는 상승된 후 스레드 토큰을 잡고 전체 시스템의 보안을 전복할 수 있습니다.

더 높은 권한 상태가 필요한 경우 작업을 시스템 작업자 스레드에서 안전하게 처리할 수 있는 작업 큐로 디스패치해야 합니다. 이렇게 하면 가장이 필요하지 않습니다.

사용자의 가장을 종료하려면 SeStopImpersonatingClient 루틴을 호출합니다.

PsImpersonateClient 루틴을 사용하여 서버 스레드가 클라이언트를 가장하도록 할 수 있습니다.

보안 및 액세스 제어에 대한 자세한 내용은 드라이버 개발자를 위한 Windows 보안 모델 및 Windows SDK의 이러한 topics 대한 설명서를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000
대상 플랫폼 유니버설
헤더 ntifs.h(Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

추가 정보

PsImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

SeStopImpersonatingClient