Имитирование клиента именованного канала
Имперсонация — это способность потока выполняться в контексте безопасности, отличном от контекста безопасности процесса, которому принадлежит поток. Имперсонация позволяет потоку сервера выполнять действия от имени клиента, но в пределах контекста безопасности клиента. Клиент обычно имеет более меньший уровень прав доступа. Дополнительные сведения см. в Имитация.
Поток сервера именованных каналов может вызывать функцию ImpersonateNamedPipeClient, чтобы принять маркер доступа пользователя, подключенного к клиентскому концу канала. Например, именованный сервер канала может предоставить доступ к базе данных или файловой системе, к которой у сервера канала есть привилегированный доступ. Когда клиент канала отправляет запрос серверу, сервер олицетворяет клиента и пытается получить доступ к защищенной базе данных. Затем система предоставляет или запрещает доступ сервера на основе уровня безопасности клиента. После завершения задачи сервер использует функцию RevertToSelf для восстановления исходного маркера безопасности.
Уровень олицетворения определяет операции, которые сервер может выполнять при олицетворении клиента. По умолчанию сервер имитирует на уровне олицетворения SecurityImpersonation. Однако, когда клиент вызывает функцию CreateFile для открытия хэндла на клиентской стороне канала, он может использовать флаг SECURITY_SQOS_PRESENT для управления уровнем выдачи полномочий сервером.