Маркеры доступа
Маркер доступа — это объект, описывающий контекст безопасностипроцесса или потока. Сведения в маркере включают удостоверение и привилегии учетной записи пользователя, связанной с процессом или потоком. Когда пользователь входит в систему, система проверяет пароль пользователя, сравнивая его с информацией, хранящейся в базе данных безопасности. Если пароль прошел проверку подлинности, система создает маркер доступа. Каждый процесс, выполняемый от имени этого пользователя, имеет копию этого маркера доступа.
Система использует маркер доступа для идентификации пользователя, когда поток взаимодействует с защищаемым объектом или пытается выполнить системную задачу, требующую привилегий. Маркеры доступа содержат следующие сведения:
- Идентификатор безопасности (SID) для учетной записи пользователя
- Идентификаторы безопасности для групп, членом которых является пользователь
- Идентификатор безопасности входа, который идентифицирует текущий сеанс входа в систему.
- Список привилегий , которыми пользовались пользователи или группы пользователей.
- Идентификатор безопасности владельца
- Идентификатор безопасности для основной группы
- DaCL по умолчанию, используемый системой, когда пользователь создает защищаемый объект без указания дескриптора безопасности.
- Источник маркера доступа
- Является ли маркер основным или маркером олицетворения
- Необязательный список ограничений идентификаторов безопасности
- Текущие уровни олицетворения
- Другая статистика
Каждый процесс имеет основной маркер , описывающий контекст безопасности учетной записи пользователя, связанной с процессом. По умолчанию система использует первичный маркер, когда поток процесса взаимодействует с защищаемым объектом. Кроме того, поток может олицетворять учетную запись клиента. Олицетворение позволяет потоку взаимодействовать с защищаемыми объектами с помощью контекста безопасности клиента. Поток, олицетворяющий клиента, имеет как основной маркер, так и маркер олицетворения.
Используйте функцию 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 | Определяет маркер доступа как основной маркер или маркер олицетворения. |