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


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

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

Система использует маркер доступа для идентификации пользователя, когда поток взаимодействует с защищаемым объектом или пытается выполнить системную задачу, требующую привилегий. Маркеры доступа содержат следующие сведения:

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

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

Для управления маркерами доступа можно использовать следующие функции.

Функция Описание
AdjustTokenGroups Изменяет сведения о группе в маркере доступа.
AdjustTokenPrivileges Включает или отключает привилегии в маркере доступа. Он не предоставляет новые привилегии и не отменяет существующие.
CheckTokenMembership Определяет, включен ли указанный идентификатор безопасности в указанном маркере доступа.
CreateRestrictedToken Создает новый маркер, который является ограниченной версией существующего маркера. Ограниченный маркер может иметь отключенные идентификаторы БЕЗОПАСНОСТИ, удаленные привилегии и список ограниченных идентификаторов БЕЗОПАСНОСТИ.
DuplicateToken Создает новый токен олицетворения, дублирующий существующий маркер.
DuplicateTokenEx Создает новый основной маркер или маркер олицетворения, который дублирует существующий маркер.
GetTokenInformation Извлекает сведения о маркере.
IsTokenRestricted Определяет, содержит ли маркер список ограничивающих идентификаторов безопасности.
OpenProcessToken Извлекает дескриптор основного маркера доступа для процесса.
OpenThreadToken Извлекает дескриптор маркера доступа олицетворения для потока.
SetThreadToken Назначает или удаляет токен олицетворения для потока.
SetTokenInformation Изменяет владельца маркера, основную группу или daCL по умолчанию.

 

Функции маркера доступа используют следующие структуры для описания частей маркера доступа.

Структура Описание
TOKEN_CONTROL Сведения, определяющие маркер доступа.
TOKEN_DEFAULT_DACL DaCL по умолчанию, используемый системой в дескрипторов безопасности новых объектов, созданных потоком.
TOKEN_GROUPS Указывает идентификаторы безопасности и атрибуты идентификаторов безопасности группы в маркере доступа.
TOKEN_OWNER Идентификатор безопасности владельца по умолчанию для дескрипторов безопасности новых объектов.
TOKEN_PRIMARY_GROUP Идентификатор безопасности основной группы по умолчанию для дескрипторов безопасности новых объектов.
TOKEN_PRIVILEGES Привилегии, связанные с маркером доступа. Также определяет, включены ли привилегии.
TOKEN_SOURCE Источник маркера доступа.
TOKEN_STATISTICS Статистика, связанная с маркером доступа.
TOKEN_USER Идентификатор безопасности пользователя, связанного с маркером доступа.

 

Функции маркера доступа используют следующие типы перечисления.

Тип перечисления Что определяет
TOKEN_INFORMATION_CLASS Определяет тип сведений, которые задаются или извлекаются из маркера доступа.
TOKEN_TYPE Определяет маркер доступа как основной маркер или маркер олицетворения.