- Система управления доступом
- Введение
- Инструментальные средства управления безопасностью
- Пользователи и группы пользователей
- Создание учетной записи пользователя
- Прогон программы создания новой учетной записи
- Написание, компиляция и прогон программы, удаляющей из системы учетную запись
- Идентификатор безопасности SID
- Система управления доступом операционной системы Microsoft Windows
Система управления доступом
Введение
Известно, что одним из важнейших компонентов системы безопасности ОС Windows является система контроля и управления дискреционным доступом . Для ее описания принято использовать формальные модели. Хотя применение формальных моделей защищенности не позволяет строго обосновать безопасность информационных систем (ИС) для ряда наиболее интересных случаев, они формируют полезный понятийный аппарат, который может быть применен для декомпозиции и анализа исследуемой системы.
Для построения формальных моделей безопасности принято представлять ИС в виде совокупности взаимодействующих сущностей — субъектов (s) и объектов (o).
Защищаемые объекты Windows включают: файлы, устройства , каналы, события, мьютексы , семафоры, разделы общей памяти, разделы реестра ряд других. Сущность, от которой нужно защищать объекты, называется «субъектом». Субъектами в Windows являются процессы и потоки, запускаемые конкретными пользователями. Субъект безопасности — активная системная составляющая, а объект — пассивная.
Помимо дискреционного доступа Windows поддерживает управление привилегированным доступом. Это означает, что в системе имеется пользователь -администратор с неограниченными правами. Кроме того, для упрощения администрирования (а также для соответствия стандарту POSIX ) пользователи Windows объединены в группы. Принадлежность к группе связана с определенными привилегиями, например, привилегия выключать компьютер . Пользователь , как член группы , облекается, таким образом, набором полномочий, необходимых для его деятельности, и играет определенную роль. Подобная стратегия называется управление ролевым доступом.
Для того чтобы выяснить, в какой мере комбинация в виде управления дискреционным и ролевым доступом служит гарантией защиты для выполняемых программ, желательно иметь представление о формальных моделях, используемых при построении системы безопасности ОС Windows . Возможности формальных моделей проанализированы в приложении.
Основной вывод из анализа применяемых в ОС Windows моделей контроля доступа (комбинация дискреционной и ролевой): нельзя формально обосновать безопасность ИС в случаях, представляющих практический интерес. Необходимо обосновывать безопасность конкретной системы путем ее активного исследования.
Ключевая цель системы защиты Windows — следить за тем, кто и к каким объектам осуществляет доступ . Система защиты хранит информацию, относящуюся к безопасности для каждого пользователя, группы пользователей и объекта. Модель защиты ОС Windows требует, чтобы субъект на этапе открытия объекта указывал, какие операции он собирается выполнять в отношении этого объекта. Единообразие контроля доступа к различным объектам (процессам, файлам, семафорам и др.) обеспечивается тем, что с каждым процессом (потоком) связан маркер доступа, а с каждым объектом — дескриптор защиты. Маркер доступа в качестве параметра имеет идентификатор пользователя, а дескриптор защиты — списки прав доступа. ОС может контролировать попытки доступа, которые прямо или косвенно производятся процессами и потоками, инициированными пользователем.
ОС Windows отслеживает и контролирует доступ к разнообразным объектам системы (файлы, принтеры, процессы, именованные каналы и т.д.). Помимо разрешающих записей, списки прав доступа содержат и запрещающие записи, чтобы пользователь , которому доступ к объекту запрещен, не смог получить его как член какой-либо группы, которой этот доступ предоставлен.
Пользователи системы для упрощения администрирования (а также для соответствия стандарту POSIX ) объединены в группы. Пользователей и группы иногда называют участниками безопасности. Пользователи посредством порождаемых ими субъектов (процессов, потоков) осуществляют доступ к объектам (файлам, устройствам и др.). Изучение модели контроля доступа ОС Windows целесообразно начать с анализа характеристик субъектов и объектов, которые существенны для организации дискреционного доступа .
Инструментальные средства управления безопасностью
Прежде чем начать изучение API системы, имеет смысл сказать несколько слов об имеющихся полезных утилитах и инструментальных средствах.
Для управления системой безопасности в ОС Windows имеются разнообразные и удобные инструментальные средства. В частности, в рамках данной темы потребуется умение управлять учетными записями пользователей при помощи панели «Пользователи и пароли». Кроме того понадобится контролировать привилегии пользователей при помощи панели «Назначение прав пользователям». Рекомендуется также освоить работу с утилитой просмотра данных маркера доступа процесса WhoAmI.exe, утилитами просмотра и редактирования списков контроля доступа (cacls.exe, ShowACLs.exe, SubInACL,exe, SvcACL.exe), утилитой просмотра маркера доступа процесса PuList.exe и рядом других.
Обилие интерактивных средств не устраняет необходимости программного управления различными объектами в среде ОС Windows. Применение API системы позволяет лучше изучить ее особенности и создавать приложения, соответствующие сложным требованиям защиты. Примером могут служить различные сценарии ограничения доступа (применение ограниченных маркеров доступа, перевоплощение, создание объектов, не связанных с конкретным пользователем, и т.д.). Тем не менее, встроенные инструментальные возможности системы будут активно использоваться в качестве вспомогательных средств при разработке разнообразных программных приложений.
Пользователи и группы пользователей
Каждый пользователь (и каждая группа пользователей ) системы должен иметь учетную запись ( account ) в базе данных системы безопасности. Учетные записи идентифицируются именем пользователя и хранятся в базе данных SAM ( Security Account Manager ) в разделе HKLM/SAM реестра.
Учетная запись пользователя содержат набор сведений о пользователе, такие, как имя, пароль (или реквизиты), комментарии и адрес . Наиболее важными элементами учетной записи пользователя являются: список привилегий пользователя в отношении данной системы, список групп, в которых состоит пользователь , и идентификатор безопасности SID ( Security IDentifier ). Идентификаторы безопасности генерируются при создании учетной записи. Они (а не имена пользователей, которые могут не быть уникальными) служат основой для идентификации субъектов внутренними процессами ОС Windows .
Учетные записи групп, созданные для упрощения администрирования, содержат список учетных записей пользователей, а также включают сведения, аналогичные сведениям учетной записи пользователя ( SID группы, привилегии члена группы и др.).
Создание учетной записи пользователя
Основным средством создания учетной записи пользователя служит Win32-функция NetUserAdd , принадлежащая семейству сетевых ( Net ) функций ОС Windows, подробное описание которой имеется в MSDN. При помощи Net -функций можно управлять учетными записями пользователей, как на локальной, так и на удаленной системе (более подробно об использовании Net -функций можно прочитать в [ Рихтер ] , [ Рихтер, Кларк ] ).
Для успешного применения Net -функций достаточно знать следующее. Во-первых, Net -функции входят в состав библиотеки NetApi32.Lib, которую нужно явным образом добавить в проект, а прототипы функций объявлены в заголовочном файле Lm.h. Во-вторых, Net -функции поддерживают строки только в формате Unicode (см. «Разработка Win32 приложений. Инструментальные средства изучения системы» ). Наконец, информацию об учетной записи Net -функции нужно передавать с помощью специализированных структур, наименее сложная из которых структура USER_INFO_1 .
Прогон программы создания новой учетной записи
Для иллюстрации рассмотрим несложную программу, задача которой — создать новую учетную запись для пользователя «ExpUser».
Результат работы программы — создание нового пользователя — можно проконтролировать при помощи апплета панели управления «Локальные пользователи». После создания пользователя целесообразно наделить его минимальным набором прав, например, правом входа в систему. Самое разумное — включить пользователя в какую-либо группу, например, в группу обычных пользователей. В этом случае вновь созданный пользователь получит привилегии члена данной группы. Это можно сделать при помощи того же апплета. О том, как обеспечить пользователя необходимыми привилегиями программным образом, будет рассказано ниже.
Для удаления учетной записи пользователя используется функция NetUserDel .
Написание, компиляция и прогон программы, удаляющей из системы учетную запись
На основе предыдущей программы рекомендуется написать программу удаления учетной записи конкретного пользователя.
В заключение данного раздела хотелось бы еще раз подчеркнуть, что, хотя Net -функции позволяют работать с именами учетных записей, остальная часть системы для идентификации учетной записи использует идентификатор безопасности SID.
Идентификатор безопасности SID
Структура идентификатора безопасности
SID пользователя (и группы) является уникальным внутренним идентификатором и представляют собой структуру переменной длины с коротким заголовком, за которым следует длинное случайное число. Это числовое значение формируется из ряда параметров, причем утверждается [ Руссинович ] , что вероятность появления двух одинаковых SID практически равна нулю. В частности, если удалить пользователя в системе, а затем создать его под тем же именем, то SID вновь созданного пользователя будет уже другим.
Узнать свой идентификатор безопасности пользователь легко может при помощи утилит whoami или getsid из ресурсов Windows. Например, так:
При помощи команды whoami /all можно получить всю информацию из маркера доступа процесса, см. следующие разделы.
Выполните следующую последовательность действий.
Система управления доступом операционной системы Microsoft Windows
1 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ А. Е. Киреенко Система управления доступом операционной системы Microsoft Windows Аннотация: в статье представлены особенности устройства дискреционной системы управления доступом, реализованной в операционной системе Microsoft Windows. Рассматриваются такие понятия, как пользователь и группа пользователей, идентификатор безопасности субъекта и объекта, дескриптор безопасности, маркер доступа. Описан процесс проверки прав доступа. Ключевые слова: управление доступом, дискреционная модель, Microsoft Windows. Введение Киреенко Александр Евгеньевич, аспирант третьего года обучения специальности «Системный анализ, управление и обработка информации», кафедры информационной безопасности и социальной инженерии Российского государственного социального университета. Базовое образование: факультет информационных технологий Российского государственного социального университета, специальность «Комплексная защита объектов информатизации». Тема кандидатской диссертации: «Разработка методов и средств контроля информационных потоков в операционных системах с дискреционным разграничением доступа к объектам». Сфера научных интересов: информационная безопасность, программное обеспечение, системная аналитика. Известно, что одним из важнейших компонентов системы безопасности операционной системы (ОС) Microsoft Windows является система контроля и управления дискреционным доступом. Для ее описания принято использовать формальные модели. Для построения формальных моделей безопасности принято представлять информационную систему (ИС) в виде совокупности взаимодействующих сущностей субъектов (s) и объектов (o)[2]. Защищаемые объекты Windows включают: файлы, устройства, каналы, события, семафоры, мьютексы, разделы общей памяти, разделы реестра. Субъект сущность, от которой нужно защищать объекты. Субъектами в Windows являются процессы и потоки, запускаемые конкретными пользователями. Субъект безопасности активная системная составляющая, а объект пассивная. Помимо дискреционного доступа Windows поддерживает управление привилегированным доступом. Это означает, что в системе имеется пользователь-администратор с неограниченными правами. Кроме того, для упрощения администрирования пользователи Windows объединены в группы. Принадлежность к группе связана с определенными привилегиями, например, привилегия выключать компьютер. Пользователь, как член группы, наделяется, таким образом, набором полномочий, необходимых для его деятельности, и играет определенную роль. Подобная стратегия называется управление ролевым доступом. Для того чтобы выяснить, в какой мере комбинация в виде управления дискреционным и ролевым доступом служит гарантией защиты для выполняемых программ, желательно иметь представление о формальных моделях, используемых при построении системы безопасности ОС Windows. Основной вывод из анализа применяемых в ОС Windows моделей контроля доступа (комбинация дискреционной и ролевой): нельзя формально обосновать безопасность ИС в случаях, представляющих практический интерес [3]. Необходимо обосновывать безопасность конкретной системы путем ее активного исследования. Основная цель системы защиты Windows следить за тем, какой субъект к каким объектам пытается получить доступ. Она сохраняет информацию, которая относится к безопасности для каждого объекта, пользователя и группы пользователей. Модель защиты ОС Windows требует, чтобы субъект на этапе открытия объекта указывал, какие операции он собирается выполнять в отношении этого объекта. Единообразие контроля доступа к различным объектам (процессам, файлам, семафорам и др.) обеспечивается тем, что с каждым процессом (потоком) связан маркер доступа, а с каждым объектом дескриптор безопасности. 69
2 УЧЕНЫЕ ЗАПИСКИ 9 (I), 2012 Маркер доступа в качестве параметра имеет идентификатор пользователя, а дескриптор безопасности списки прав доступа. ОС может контролировать попытки доступа, которые прямо или косвенно производятся процессами и потоками, инициированными пользователем. ОС Windows контролирует и отслеживает доступ к разнообразным объектам системы (файлы, папки, процессы, принтеры, именованные каналы и т.д.). Помимо разрешающих записей, списки управления доступом содержат и запрещающие записи, для того чтобы субъект, которому запрещен доступ к объекту, не имел возможности получить его как участник какой-либо группы, которой этот доступ предоставлен. Пользователи системы для упрощения администрирования объединены в группы. Пользователей и группы иногда называют участниками безопасности. Пользователи посредством порождаемых ими субъектов (процессов, потоков) осуществляют доступ к объектам (файлам, устройствам и др.). Рассмотрим характеристики субъектов и объектов, которые существенны для организации дискреционного доступа [2]. Пользователи и группы пользователей Каждый пользователь (и каждая группа пользователей) системы имеет учетную запись (аккаунт) в базе данных системы безопасности. Учетные записи идентифицируются именем пользователя и хранятся в базе данных SAM (Security Account Manager) в разделе HKLM/SAM реестра. Прежде чем пользователь сможет работать в среде ОС, он должен быть зарегистрирован администратором системы. При регистрации пользователя администратором как раз и создается учетная запись пользователя (аккаунт). Регистрация пользователя выполняется на уровне домена локальной сети, что упрощает управление доступом к ресурсам этой сети. Вообще доменом называется группа компьютеров в локальной сети, которые поддерживают одну политику безопасности и разделяют общую базу данных учетных записей пользователей. Учетная запись пользователя содержит набор сведений о пользователе, такие как имя, пароль (или реквизиты), комментарии и др. Наиболее важными элементами учетной записи пользователя являются: список привилегий пользователя в отношении данной системы, список групп, в которых состоит пользователь, и идентификатор безопасности SID (SecurityIDentifier). Идентификаторы безопасности генерируются при создании учетной записи. Они (а не имена пользователей, которые могут не быть уникальными) служат основой для идентификации субъектов внутренними процессами ОС Windows [1]. Учетные записи групп, созданные для упрощения администрирования, содержат список учетных записей пользователей, а также включают сведения, аналогичные сведениям учетной записи пользователя (SID группы, привилегии члена группы и др.). Группы объединены по какому-либо признаку, например, пользователи одной группы могут работать в одном отделе. При этом одна учетная запись пользователя может входить более чем в одну группу. Каждая группа имеет свою учетную запись и наделена своими правами и полномочиями. Эти права и полномочия передаются каждому члену группы. Идентификатор безопасности SID. Структура идентификатора безопасности Для каждой учетной записи ОС создает идентификатор безопасности (SecurityIdentifier, SID), который хранится в базе данных менеджера учетных записей SAM. Идентификатор безопасности является бинарным представлением учетной записи и используется системой безопасности при своей работе для идентификации учетных записей [4]. Существует также и текстовая форма представления SID. Текстовая форма используется для вывода текущего значения SID, а также для интерактивного ввода (например, в реестр). В текстовой форме каждый идентификатор безопасности имеет определенный формат. Вначале находится префикс S, за которым следует группа чисел, разделенных дефисами. Символически структура идентификатора безопасности может быть описана следующим образом: S R I SA 0 SA 1 SA 2 SA 3 SA 4. Здесь каждый символ обозначает группу бит, имеющих определенное значение, а именно: S представляет символ S, который обозначает, что дальнейшее числовое значение является идентификатором безопасности; R представляет версию (RevisionLevel) формата идентификатора безопасности, начиная с ОС Windows NT версии 3.1, формат идентификатора безопасности не изменялся и поэтому значение R всегда равно 1; I представляет 48-битное число, которое обозначает уровень авторизации учетной записи (Toplevel Authority или Identifier Authority), которая связана с данным идентификатором безопасности. Это значение также называется идентификатором авторизации учетной записи. Под уровнем авторизации понимается уровень, на котором была создана учетная запись, или, другими словами, множество учетных записей, которому принадлежит учетная запись.; 70
3 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ SA представляет 32-битное число, которое уточняет уровень авторизации учетной записи (Subauthority), связанной с данным идентификатором безопасности. Это число также называется относительным идентификатором учетной записи (Relative Identifier, RID). Относительные идентификаторы учетной записи предназначены для конкретизации или, другими словами, однозначной идентификации учетных записей. В общем случае количество битовых полей типа SA в идентификаторе безопасности может быть произвольным. Для примера, SID администратора системы имеет вид: S 1 5 500, а SID группы Everyone, в которую входят все пользователи, включая анонимных и гостей: S SID пользователя (и группы) является уникальным внутренним идентификатором и представляет собой структуру переменной длины с коротким заголовком, за которым следует длинное случайное число. Это числовое значение формируется из ряда параметров, причем вероятность появления двух одинаковых SID практически равна нулю. В частности, если удалить пользователя в системе, а затем создать его под тем же именем, то SID вновь созданного пользователя будет уже другим. Фактически идентификатор безопасности идентифицирует пользователя на уровне системы безопасности. Использование идентификатора безопасности ускоряет работу системы безопасности, т.к. в этом случае система при идентификации пользователей работает с числовыми, а не символьными данными. Объекты. Дескриптор безопасности В ОС Windows все типы объектов защищены одинаковым образом. С каждым объектом связан дескриптор безопасности (Security descriptor), который создается вместе с охраняемым объектом, связывается с ним и содержит информацию, необходимую для защиты объекта от несанкционированного доступа [5]. Дескриптор безопасности (рис. 1) содержит SID владельца объекта, SID первичной группы владельца объекта и два указателя: на список управления дискреционным доступом DACL (Discretionary ACL) и на список управления системным доступом SACL (System ACL). DACL и SACL содержат разрешающие и запрещающие доступ списки пользователей и групп, а также списки пользователей, чьи попытки доступа к данному объекту подлежат аудиту. Каждый пользователь, т.е. его учетная запись, может принадлежать нескольким группам, но одна из них должна быть выбрана в качестве первичной группы пользователя (primarygroup). Это сделано для того, чтобы ресурсы, создаваемые пользователем, были доступны другим членам группы, к которой принадлежит этот пользователь. Структура каждого ACL состоит из набора элементов, которые называются входами управления доступом (AccessControlEntry, ACE), а каждая запись в свою очередь содержит: SID субъекта, которому разрешен или запрещен доступ к охраняемому объекту; маску доступа, которая определяет права доступа субъекта к охраняемому объекту; флаг, определяющий тип элемента ACE; флаги, определяющие свойства наследования данного элемента ACE; флаги, управляющие аудитом доступа к охраняемому объекту. Рис. 1. Структура дескриптора безопасности для файла 71
4 УЧЕНЫЕ ЗАПИСКИ 9 (I), 2012 В списке ACL есть записи ACE двух типов разрешающие (ACCESS_ALLOWED_ACE) и запрещающие доступ (ACCESS_DENIED_ACE). Разрешающая запись содержит SID пользователя или группы и битовый массив (маска доступа), определяющий набор операций, которые процессы, запускаемые этим пользователем, могут выполнять с данным объектом. Запрещающая запись действует аналогично, но в этом случае процесс не может выполнять перечисленные операции. Битовый массив или маска доступа состоит из 32 битов и обычно формируется программным образом из предопределенных констант. На примере, изображенном на рис. 1, владелец объекта Александр имеет право на все операции с данным объектом, всем остальным обычно дается только право на чтение, а Ивану запрещены все операции. Таким образом, список DACL описывает все права доступа к объекту. Если этого списка нет, то все пользователи имеют все права; если этот список существует, но он пустой, права имеет только его владелец. Последняя компонента элемента списка управления доступом содержит флаги, которые задают свойства наследования данного элемента АСЕ. То есть эти флаги определяют, наследуется ли элемент АСЕ списка управления доступом для вновь создаваемого охраняемого объекта, который является дочерним по отношению к текущему охраняемому объекту. Например, пусть в качестве охраняемого объекта выступает каталог, и элемент АСЕ списка управления доступов в дескрипторе безопасности этого объекта является наследуемым. Тогда копия этого элемента будет помещена в соответствующий список управления доступом вновь создаваемого подкаталога в рассматриваемом каталоге. Если же элемент АСЕ ненаследуемый, то этого не произойдет. Для управления наследованием элементов списка управления доступом используются следующие флаги: OBJECТ_INHERIТ_АСЕ элемент наследуется неконтейнерным дочерним объектом. Если не установлен флаг NO_PROPAGATE_INHERIT_ACE, то элемент также наследуется и контейнерным дочерним объектом, но при этом в дочернем объекте устанавливается флаг INHERIT_ONLY_ACE; CONTAINER_INHERIT_ACE элемент наследуется только контейнерным дочерним объектом; NO_PROPAGATE_INHERIT_ACE элемент был унаследован от родительскою объекта, но флаги OBJECT_INHERIT_ACE И CONTAINER_INHERIT_ACE в элементе сбрасываются, что отменяет дальнейшее наследование этого элемента; INHERIT_ONLY_ACE отмечает, что элемент был унаследован от родительского объекта; этот элемент не участвует в контроле доступа к объекту; INHERITED_ACE отмечает, что элемент был унаследован от родительского объекта. Кроме списка DACL дескриптор безопасности включает также список SAСL, который имеет такую же структуру, что и DACL, т.е. состоит из таких же ACE записей, только вместо операций, регламентирующих доступ к объекту, в нем перечислены операции, подлежащие аудиту. В примере на рис. 3 операции с объектом процессов, запускаемых Максимом, описанные в соответствующем битовом массиве, будут регистрироваться в системном журнале. Субъекты хранят информацию о стандартной защите, которая будет назначена создаваемым объектам, в своем маркере. Разумеется, в ОС Windows есть все необходимые средства для настройки стандартной защиты, в частности списка DACL «по умолчанию», в маркере доступа субъекта. Субъекты безопасности. Процессы, потоки. Маркер доступа Так же как и объекты, субъекты должны иметь отличительные признаки контекст пользователя, для того чтобы система могла контролировать их действия. Сведения о контексте пользователя хранятся в маркере доступа. При интерактивном входе в систему пользователь обычно вводит свое имя и пароль. Система (процедура Winlogon) по имени находит соответствующую учетную запись, извлекает из нее необходимую информацию о пользователе, формирует список привилегий, ассоциированных с пользователем и его группами, и все это объединяет в структуру данных, которая называется маркером доступа [1]. Маркер также хранит некоторые параметры сессии, например время окончания действия маркера. Таким образом, именно маркер является той визитной карточкой, которую субъект должен предъявить, чтобы осуществить доступ к какому-либо объекту. Вслед за оболочкой (Windows Explorer) все процессы (а также все потоки процесса), запускаемые пользователем, наследуют этот маркер. Когда один процесс создает другой, дочернему процессу передается дубликат маркера, который, таким образом, распространяется по системе. Основные компоненты маркера доступно показаны на рис. 2. Рис. 2. Основные компоненты маркера доступа 72
5 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ Включая в маркер информацию о защите, в частности DACL, Windows упрощает создание объектов со стандартными атрибутами защиты. Как уже говорилось, если процесс не позаботится о том, чтобы явным образом указать атрибуты безопасности объекта, на основании списка DACL, присутствующего в маркере, будут сформированы права доступа к объекту по умолчанию. При этом, поскольку объекты в Windows отличаются большим разнообразием, в списке DACL «по умолчанию» можно указать только так называемые базовые права доступа, из которых система будет формировать стандартные права доступа в зависимости от вида создаваемого объекта. Проверка прав доступа После формализации атрибутов защиты субъектов и объектов можно рассмотреть схему проверки прав доступа субъектов к объектам. Но для начала стоит напомнить о том, что в ОС Windows в качестве субъекта выступает процесс или поток, который исполняется от имени некоторого пользователя. С каждым процессом ассоциируется маркер доступа, который идентифицирует учетную запись пользователя, от имени которого выполняется этот процесс [3]. Маркер доступа связывается с потоком во время его запуска при входе пользователя в систему. Но фактически доступ к объектам осуществляет поток, который выполняется в контексте этого процесса. Каждый поток также имеет свой маркер доступа, который может быть первичным, т.е. совпадать с маркером доступа процесса, в контексте которого выполняется этот поток, или заимствованным у другого процесса, в случае если произошла подмена контекста безопасности. Доступ к охраняемому объекту выполняется из потока. Поэтому под субъектом часто и понимается исполняемый поток, который при контроле доступа представляется маркером доступа этого потока. В свою очередь охраняемый объект, доступ к которому контролируется системой управления безопасностью, представляется при контроле доступа дескриптором безопасности этого объекта. Теперь можно перейти к общей схеме проверки доступа субъектов к объектам (рис. 3). Рис. 3. Пример проверки прав доступа к защищенному объекту Контроль доступа субъекта к охраняемому объекту выполняется следующим образом. При открытии субъектом доступа к охраняемому объекту, что обычно выполняется посредством функций типа Сreate или Open, система управления безопасностью просматривает список DACL этого охраняемого объекта для поиска элемента, в котором хранится идентификатор безопасности субъекта. Если такой элемент в списке DACL не найден, то поток получает отказ в доступе к объекту. Если же такой элемент найден, то система проверяет тип этого элемента. Если SID субъекта совпадает с SID владельца объекта и запрашиваются стандартные права доступа, то доступ предоставляется независимо от содержимого DACL. Далее система последовательно сравнивает SID каждого ACE из DACL с SID маркера. Если обнаруживается соответствие, выполняется сравнение маски доступа с проверяемыми правами. Для запрещающих ACE даже при частичном совпадении прав доступ немедленно отклоняется. Для успешной проверки разрешающих элементов необходимо совпадение всех прав. 73