<<
>>

Фундаментальные концепции

Каждый пользователь (и группа) в Windows идентифицируется с использованием идентификатора безопасности (Security ID (SID)). SID — это двоичное число с коротким заголовком, за которым следует длинный случайный компонент.
Каждый SID должен быть глобально-уникальным. Когда пользователь запускает процесс, то этот процесс и его потоки выполняются под пользовательским идентификатором SID. Большая часть системы безопасности спроектирована так, чтобы обеспечить доступ к любому объекту только потоков с авторизованными SID.

Каждый процесс имеет маркер доступа (access token), в котором указаны SID и прочие свойства. Маркер обычно создается модулем winlogon (как описано далее). Формат маркера показан на рис. 11.29. Процессы могут вызвать GetTokenInformation (чтобы получить эту информацию). Заголовок содержит некоторую административную информацию. Поле Срок годности может сказать, когда маркер утрачивает актуальность (в настоящее время оно не используется). Поле Группы указывает группы, которым принадлежит процесс (это нужно для подсистемы POSIX).

DACL (Discretionary ACL) — это список управления доступом, присваиваемый созданным процессом объектам (если не указан другой ACL). Пользовательский SID говорит о том, кто владеет процессом. Ограниченные идентификаторы SID позволяют ненадежным процессам принимать участие в заданиях вместе с надежными процессами (и при этом у них меньше возможностей что-то испортить).

Рис. 11.29. Структура маркера доступа

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

По существу, привилегии делят власть суперпользователя на несколько прав, которые можно присвоить процессам. Таким образом, пользователь может получить некоторую власть суперпользователя (но не всю). Подводя итог: маркер доступа говорит о том, кто владеет процессом, а также какие значения по умолчанию и какие полномочия с ним связаны.

Когда пользователь регистрируется, то winlogon дает начальному процессу маркер доступа. Следующие процессы обычно наследуют этот маркер. Маркер доступа процесса первоначально применяется ко всем потокам процесса. Однако поток при выполнении может получить другой маркер доступа, в этом случае маркер доступа потока замещает маркер доступа процесса. В частности, клиентский поток может передать свои права доступа серверному потоку, чтобы сервер мог обратиться к защищенным файлам (и прочим объектам) клиента. Этот механизм называется олицетворением (impersonation). Он реализован в транспортных слоях (например, ALPC, именованные каналы, TCP/ IP), используемых в RPC для обмена между клиентами и серверами. Транспортные слои используют внутренние интерфейсы монитора безопасности ядра, извлекая контекст безопасности для маркера доступа текущего потока и отправляя его на сервер, где он используется для конструирования маркера, который сервер может использовать для олицетворения клиента.

Еще одна фундаментальная концепция — дескриптор безопасности (security descriptor). Каждый объект имеет связанный с ним дескриптор безопасности, который говорит о том, кто и какие операции может выполнять с ним. Дескрипторы безопасности указываются при создании объектов. Файловая система NTFS и реестр поддерживают постоянную форму дескриптора безопасности, который используется для создания дескриптора безопасности для объектов File и Key (это объекты диспетчера объектов, представляющие открытые экземпляры файлов и ключей).

Дескриптор безопасности состоит из заголовка, за которым следует список DACL с одним (или более) элементом управления доступом ACE (Access Control Entries).

Два основных типа такого элемента — Allow и Deny. Элемент Allow указывает SID и битовый массив, который указывает, какие операции этот SID может выполнять над объектом. Элемент Deny работает аналогично (однако совпадение означает, что вызывающая сторона не может выполнять операцию). Например, Ида имеет файл, в дескрипторе безопасности которого указано, что доступ для чтения имеют все, Элвис доступа не имеет, Кэти имеет доступ для чтения/записи, а сама Ида имеет полный доступ. Этот простой пример показан на рис. 11.30. Идентификатор Все относится к множеству всех пользователей, но он перекрывается всеми (последующими) явными ACE.

Рис. 11.30. Пример дескриптора безопасности для файла

В дополнение к списку DACL дескриптор безопасности имеет также список SACL (System Access Control), который похож на DACL, за исключением того, что он указывает не тех, кто может использовать объект, а то, какие операции над объектом записываются в системный журнал событий безопасности. На рис. 11.30 будет регистрироваться каждая операция, которую Мэрилин выполняет с файлом. SACL также содержит уровень целостности (который мы скоро обсудим).

11.10.2.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Фундаментальные концепции:

  1. 29. Концепция символического интеракционизма. Концепция управления впечатлениями
  2. НАУКА ФУНДАМЕНТАЛЬНАЯ
  3. Постановка фундаментальных вопросов
  4. Правило фундаментальности.
  5. Правило фундаментальности.
  6. ФУНДАМЕНТАЛЬНЫЙ МЕТОД.
  7. НЛП целиком построено на двух фундаментальных принципах:
  8. § 1. ФУНДАМЕНТАЛЬНАЯ (ОБЩАЯ) СОЦИОЛОГИЧЕСКАЯ ТЕОРИЯ КАК СУБЪЕКТ ПРИЛОЖЕНИЯ
  9. 52. Аномическая концепция девиации Опираясь на идею аномии, Роберт Мертон разработал аномическую концепцию девиации.
  10. Я-КОНЦЕПЦИЯ
  11. КОНЦЕПЦИЯ САМООРГАНИЗАЦИИ