Поделиться через


Олицетворение клиента именованного канала

Олицетворение — это способность потока выполняться в контексте безопасности, отличном от того, который является владельцем потока. Олицетворение позволяет потоку сервера выполнять действия от имени клиента, но в пределах контекста безопасности клиента. Как правило, клиент имеет более меньший уровень прав доступа. Дополнительные сведения см. в разделе Олицетворение.

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

Уровень олицетворения определяет операции, которые сервер может выполнять при олицетворении клиента. По умолчанию сервер олицетворение выполняется на уровне олицетворения SecurityImpersonation. Однако, когда клиент вызывает функцию CreateFile , чтобы открыть дескриптор клиентского конца канала, клиент может использовать флаг SECURITY_SQOS_PRESENT для управления уровнем олицетворения сервера.