Олицетворение
Олицетворение — это способность потока выполняться в контексте безопасности, отличном от контекста процесса, который владеет потоком. При выполнении в контексте безопасности клиента сервер "является" клиентом в некоторой степени. Поток сервера использует маркер доступа, представляющий учетные данные клиента для получения доступа к объектам, к которым имеет доступ клиент.
Основная причина олицетворения заключается в том, чтобы проверки доступа выполнялись в отношении удостоверения клиента. Использование удостоверения клиента для проверок доступа может привести к ограничению или расширению доступа в зависимости от того, что у клиента есть разрешение. Например, предположим, что файловый сервер содержит файлы, содержащие конфиденциальную информацию, и что каждый из этих файлов защищен ACL. Чтобы предотвратить несанкционированный доступ клиента к данным в этих файлах, сервер может олицетворить клиента перед доступом к файлам.
Маркеры доступа для олицетворения
Маркеры доступа — это объекты, описывающие контекст безопасности процесса или потока. Они предоставляют сведения, в том числе удостоверение учетной записи пользователя и подмножество привилегий, доступных для учетной записи пользователя. Каждый процесс имеет первичный маркер доступа, описывающий контекст безопасности учетной записи пользователя, связанной с процессом. По умолчанию система использует первичный маркер, когда поток процесса взаимодействует с защищаемым объектом. Однако при олицетворении клиента поток имеет как основной маркер доступа, так и маркер олицетворения олицетворения. Маркер олицетворения представляет контекст безопасности клиента, и этот маркер доступа используется для проверки доступа во время олицетворения. При олицетворении поток возвращается к использованию только основного маркера доступа.
Функцию OpenProcessToken можно использоватьдля получения дескриптора основного маркера процесса. Используйте функцию OpenThreadToken, чтобы получить дескриптор маркера олицетворения потока.
Связанные разделы