Я перечислил определения, взятые из MSDN, но я хотел бы узнать разницу между ними с примером программы (процесса), который может понадобиться для их использования в различных сценариях.

ТОКЕН ДОСТУПА

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

SID

Идентификатор безопасности (SID) - это уникальное значение переменной длины, используемое для идентификации доверенного лица. Каждая учетная запись имеет уникальный SID, выданный органом, таким как контроллер домена Windows, и сохраненным в базе данных безопасности. Каждый раз, когда пользователь входит в систему, система извлекает SID для этого пользователя из базы данных и помещает его в маркер доступа для этого пользователя. Система использует SID в маркере доступа для идентификации пользователя во всех последующих взаимодействиях с безопасностью Windows.

СИМВОЛ ОГРАНИЧЕНИЯ

Токен доступа, созданный для сбора информации о безопасности клиентского процесса, позволяющий серверу "подражать" клиентскому процессу в операциях безопасности.

Судя по определению, все они кажутся мне довольно похожими. Может кто-нибудь объяснить, пожалуйста, различия между ними, приведя пример?

1 ответ1

4

"SID" - это статический идентификатор, прикрепленный к учетной записи пользователя. Это просто последовательность чисел, например, SSN / NIN человека или "первичный ключ" записи базы данных. Поскольку он никогда не изменяется, его цель - найти конкретную учетную запись, даже если она была переименована; по этой причине он хранится вместо имени пользователя в токенах, ACL и других подобных структурах.

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

"Токен" - это объект ядра, содержащий списки идентификаторов безопасности и привилегий. Ядро имеет очень строгие правила для их получения и манипулирования ими (это может быть сделано только с помощью системных вызовов, а не прямого доступа к памяти), поэтому наличие токена означает, что процессу разрешено действовать от имени любого пользователя, которого описывает этот токен.

(В Unix-подобных системах, если вы знакомы с ними, у процесса есть набор "учетных данных" - "настоящий UID", "эффективный UID", "настоящий GID", "эффективный GID", "дополнительные GID", и несколько других вещей. SID является расширением UID/GID, а токен представляет собой набор этих учетных данных. Вместо вызова capset()+setgroups()+setgid()+setuid() , вы получаете токен и вызываете SetToken() .)

Существует два вида токенов - "первичные", которые могут быть сгенерированы только при входе в систему, и « олицетворение » - временные токены, которые любая служба может создать для действий от имени клиента.

Вот полный список всей информации, хранящейся в токене.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .