Учетные данные безопасности для доступа к ресурсам или службам с сервера
В компьютерных системах токен доступа содержит учетные данные безопасности для сеанса входа в систему и идентифицирует пользователя , группы пользователя, привилегии пользователя и, в некоторых случаях, конкретное приложение. [1] В некоторых случаях может быть предложено ввести токен доступа (например, 40 случайных символов) вместо обычного пароля (поэтому его следует хранить в секрете, как и пароль).
Обзор
Токен доступа — это объект, инкапсулирующий идентификатор безопасности процесса или потока . [ 2] Токен используется для принятия решений по безопасности и хранения защищенной от несанкционированного доступа информации о некоторой системной сущности. Хотя токен обычно используется для представления только информации о безопасности, он способен содержать дополнительные данные в свободной форме, которые могут быть присоединены во время создания токена. Токены можно дублировать без специальных привилегий, например, для создания нового токена с более низкими уровнями прав доступа для ограничения доступа запущенного приложения. Токен доступа используется Windows, когда процесс или поток пытается взаимодействовать с объектами, имеющими дескрипторы безопасности ( защищаемые объекты ). [2] В Windows токен доступа представлен системным объектом типа Token
.
Токен доступа генерируется службой входа в систему , когда пользователь входит в систему, и предоставленные пользователем учетные данные аутентифицируются в базе данных аутентификации. База данных аутентификации содержит информацию об учетных данных, необходимую для создания начального токена для сеанса входа в систему, включая идентификатор пользователя, идентификатор основной группы, все другие группы, в которые он входит, и другую информацию. Токен прикрепляется к начальному процессу, созданному в сеансе пользователя, и наследуется последующими процессами, созданными начальным процессом. [2] Всякий раз, когда такой процесс открывает дескриптор любого ресурса, для которого включен контроль доступа , Windows согласовывает данные в дескрипторе безопасности целевого объекта с содержимым текущего эффективного токена доступа. [3] Результатом этой оценки проверки доступа является указание на то, разрешен ли какой-либо доступ, и если да, то какие операции (чтение, запись/изменение и т. д.) разрешено выполнять вызывающему приложению.
Типы токенов
Доступны два типа токенов:
- Первичный токен
- Первичные токены могут быть связаны только с процессами , и они представляют собой субъект безопасности процесса. Создание первичных токенов и их связь с процессами являются привилегированными операциями, требующими двух различных привилегий во имя разделения привилегий — типичный сценарий предполагает, что служба аутентификации создает токен, а служба входа связывает его с оболочкой операционной системы пользователя . Процессы изначально наследуют копию первичного токена родительского процесса.
- Токен олицетворения
- Олицетворение — это концепция безопасности, реализованная в Windows NT, которая позволяет серверному приложению временно «быть» клиентом с точки зрения доступа к защищенным объектам. Олицетворение имеет четыре возможных уровня: анонимный , предоставляющий серверу доступ анонимного/неидентифицированного пользователя, идентификация , позволяющий серверу проверять личность клиента, но не использовать эту личность для доступа к объектам, олицетворение , позволяющее серверу действовать от имени клиента, и делегирование , то же самое, что и олицетворение, но расширенное на удаленные системы, к которым подключается сервер (через сохранение учетных данных). Клиент может выбрать максимальный уровень олицетворения (если таковой имеется), доступный серверу в качестве параметра соединения. Делегирование и олицетворение являются привилегированными операциями (олицетворение изначально не было, но историческая небрежность в реализации клиентских API, не ограничившая уровень по умолчанию «идентификацией», позволив непривилегированному серверу олицетворять нежелающего привилегированного клиента, потребовала этого). Токены олицетворения могут быть связаны только с потоками , и они представляют собой субъект безопасности клиентского процесса. Токены олицетворения обычно создаются и связываются с текущим потоком неявно с помощью механизмов IPC , таких как DCE RPC , DDE и именованные каналы .
Содержание токена
Токен состоит из различных полей, включая: [4]
- идентификатор.
- идентификатор соответствующего сеанса входа в систему. Сеанс поддерживается службой аутентификации и заполняется пакетами аутентификации с набором всей информации (учетных данных ) , которую пользователь предоставил при входе в систему. Учетные данные используются для доступа к удаленным системам без необходимости повторной аутентификации пользователя ( единый вход ), при условии, что все задействованные системы совместно используют центр аутентификации (например, сервер билетов Kerberos )
- идентификатор пользователя. Это поле самое важное и оно строго только для чтения.
- идентификаторы групп, в которые входит пользователь (или, точнее, субъект). Идентификаторы групп не могут быть удалены, но их можно отключить или сделать «только для запрета». Максимум одна из групп обозначается как идентификатор сеанса , изменчивая группа, представляющая сеанс входа в систему, разрешающая доступ к изменчивым объектам, связанным с сеансом, таким как дисплей.
- идентификаторы ограничивающих групп (необязательно). Этот дополнительный набор групп не предоставляет дополнительный доступ, но еще больше ограничивает его: доступ к объекту разрешен только в том случае, если он разрешен также одной из этих групп. Ограничивающие группы нельзя удалить или отключить. Ограничивающие группы — это недавнее дополнение, и они используются при реализации песочниц .
- привилегии, т. е. особые возможности, которыми обладает пользователь. Большинство привилегий отключены по умолчанию, чтобы предотвратить ущерб от программ, не заботящихся о безопасности. Начиная с Windows XP Service Pack 2 и Windows Server 2003 привилегии могут быть навсегда удалены из токена вызовом
AdjustTokenPrivileges()
с SE_PRIVILEGE_REMOVED
атрибутом . - владелец по умолчанию, основная группа и ACL для токена, созданные субъектом, связанным с токеном.
Смотрите также
Ссылки
- ^ "Токен доступа: определение, архитектура, использование и многое другое". Okta . Получено 2022-06-08 .
- ^ abc "Токены доступа". MSDN . Получено 2007-10-08 .
- ^ "AccessCheck". MSDN . Получено 2014-02-13 .
- ^ "Как работают токены доступа". MSDN . 8 октября 2009 г. Получено 13 февраля 2014 г.