Олицетворение

Олицетворение — это способность потока выполняться в контексте безопасности, отличном от контекста процесса, который владеет потоком. При выполнении в контексте безопасности клиента сервер "является" клиентом в некоторой степени. Поток сервера использует маркер доступа, представляющий учетные данные клиента для получения доступа к объектам, к которым имеет доступ клиент.

Основная причина олицетворения заключается в том, чтобы проверка доступа выполнялись с удостоверением клиента. Использование удостоверения клиента для доступа проверка может привести к ограничению или расширению доступа в зависимости от того, что у клиента есть разрешение. Например, предположим, что файловый сервер содержит файлы, содержащие конфиденциальную информацию, и что каждый из этих файлов защищен ACL. Чтобы предотвратить несанкционированный доступ клиента к данным в этих файлах, сервер может олицетворить клиента перед доступом к файлам.

Маркеры доступа для олицетворения

Маркеры доступа — это объекты, описывающие контекст безопасности процесса или потока. Они предоставляют сведения, в том числе удостоверение учетной записи пользователя и подмножество привилегий, доступных для учетной записи пользователя. Каждый процесс имеет первичный маркер доступа, описывающий контекст безопасности учетной записи пользователя, связанной с процессом. По умолчанию система использует первичный маркер, когда поток процесса взаимодействует с защищаемым объектом. Однако при олицетворении клиента поток имеет как первичный маркер доступа, так и маркер олицетворения. Маркер олицетворения представляет контекст безопасности клиента, и этот маркер доступа используется для доступа проверка во время олицетворения. При олицетворении поток отменить изменения использовать только первичный маркер доступа.

Функцию OpenProcessToken можно использовать для получения дескриптора основного маркера процесса. Используйте функцию OpenThreadToken, чтобы получить дескриптор маркера олицетворения потока.

Маркеры доступа

Делегирование и олицетворение