ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ А. Е. Киреенко Система управления доступом операционной системы Microsoft Windows Аннотация: в статье представлены особенности устройства дискреционной системы управления доступом, реализованной в операционной системе Microsoft Windows. Рассматриваются такие понятия, как пользователь и группа пользователей, идентификатор безопасности субъекта и объекта, дескриптор безопасности, маркер доступа. Описан процесс проверки прав доступа. Ключевые слова: управление доступом, дискреционная модель, Microsoft Windows. Введение Известно, что одним из важнейших компонентов системы безКиреенко Александр Евгеньевич, опасности операционной системы (ОС) Microsoft Windows является аспирант третьего года обучения специсистема контроля и управления дискреционным доступом. Для ее альности 05.13.01 «Системный анализ, управописания принято использовать формальные модели. ление и обработка информации», кафедры Для построения формальных моделей безопасности принято информационной безопасности и социальной представлять информационную систему (ИС) в виде совокупности инженерии Российского государственного социального университета. взаимодействующих сущностей – субъектов (s) и объектов (o)[2]. Базовое образование: факультет инфорЗащищаемые объекты Windows включают: файлы, устройства, камационных технологий Российского государналы, события, семафоры, мьютексы, разделы общей памяти, раздественного социального университета, специлы реестра. альность «Комплексная защита объектов Субъект – сущность, от которой нужно защищать объекты. Субъек- информатизации». тами в Windows являются процессы и потоки, запускаемые конкретТема кандидатской диссертации: «Разраными пользователями. Субъект безопасности – активная системная ботка методов и средств контроля информасоставляющая, а объект – пассивная. ционных потоков в операционных системах Помимо дискреционного доступа Windows поддерживает управ- с дискреционным разграничением доступа ление привилегированным доступом. Это означает, что в системе к объектам». Сфера научных интересов: информационная имеется пользователь-администратор с неограниченными правабезопасность, программное обеспечение, сими. Кроме того, для упрощения администрирования пользователи стемная аналитика. Windows объединены в группы. Принадлежность к группе связана e-mail: xander999@mail.ru с определенными привилегиями, например, привилегия выключать компьютер. Пользователь, как член группы, наделяется, таким образом, набором полномочий, необходимых для его деятельности, и играет определенную роль. Подобная стратегия называется управление ролевым доступом. Для того чтобы выяснить, в какой мере комбинация в виде управления дискреционным и ролевым доступом служит гарантией защиты для выполняемых программ, желательно иметь представление о формальных моделях, используемых при построении системы безопасности ОС Windows. Основной вывод из анализа применяемых в ОС Windows моделей контроля доступа (комбинация дискреционной и ролевой): нельзя формально обосновать безопасность ИС в случаях, представляющих практический интерес [3]. Необходимо обосновывать безопасность конкретной системы путем ее активного исследования. Основная цель системы защиты Windows – следить за тем, какой субъект к каким объектам пытается получить доступ. Она сохраняет информацию, которая относится к безопасности для каждого объекта, пользователя и группы пользователей. Модель защиты ОС Windows требует, чтобы субъект на этапе открытия объекта указывал, какие операции он собирается выполнять в отношении этого объекта. Единообразие контроля доступа к различным объектам (процессам, файлам, семафорам и др.) обеспечивается тем, что с каждым процессом (потоком) связан маркер доступа, а с каждым объектом – дескриптор безопасности. 69 УЧЕНЫЕ ЗАПИСКИ №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 – SA0 – SA1– SA2–SA3–SA4 ... Здесь каждый символ обозначает группу бит, имеющих определенное значение, а именно: S – представляет символ S, который обозначает, что дальнейшее числовое значение является идентификатором безопасности; R – представляет версию (RevisionLevel) формата идентификатора безопасности, начиная с ОС Windows NT версии 3.1, формат идентификатора безопасности не изменялся и поэтому значение R всегда равно 1; I – представляет 48-битное число, которое обозначает уровень авторизации учетной записи (Toplevel Authority или Identifier Authority), которая связана с данным идентификатором безопасности. Это значение также называется идентификатором авторизации учетной записи. Под уровнем авторизации понимается уровень, на котором была создана учетная запись, или, другими словами, множество учетных записей, которому принадлежит учетная запись.; 70 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ SA – представляет 32-битное число, которое уточняет уровень авторизации учетной записи (Subauthority), связанной с данным идентификатором безопасности. Это число также называется относительным идентификатором учетной записи (Relative Identifier, RID). Относительные идентификаторы учетной записи предназначены для конкретизации или, другими словами, однозначной идентификации учетных записей. В общем случае количество битовых полей типа SA в идентификаторе безопасности может быть произвольным. Для примера, SID администратора системы имеет вид: S–1–5–<домен>–500, а SID группы Everyone, в которую входят все пользователи, включая анонимных и гостей: S–1–1–0. 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 УЧЕНЫЕ ЗАПИСКИ №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 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ Включая в маркер информацию о защите, в частности DACL, Windows упрощает создание объектов со стандартными атрибутами защиты. Как уже говорилось, если процесс не позаботится о том, чтобы явным образом указать атрибуты безопасности объекта, на основании списка DACL, присутствующего в маркере, будут сформированы права доступа к объекту по умолчанию. При этом, поскольку объекты в Windows отличаются большим разнообразием, в списке DACL «по умолчанию» можно указать только так называемые базовые права доступа, из которых система будет формировать стандартные права доступа в зависимости от вида создаваемого объекта. Проверка прав доступа После формализации атрибутов защиты субъектов и объектов можно рассмотреть схему проверки прав доступа субъектов к объектам. Но для начала стоит напомнить о том, что в ОС Windows в качестве субъекта выступает процесс или поток, который исполняется от имени некоторого пользователя. С каждым процессом ассоциируется маркер доступа, который идентифицирует учетную запись пользователя, от имени которого выполняется этот процесс [3]. Маркер доступа связывается с потоком во время его запуска при входе пользователя в систему. Но фактически доступ к объектам осуществляет поток, который выполняется в контексте этого процесса. Каждый поток также имеет свой маркер доступа, который может быть первичным, т.е. совпадать с маркером доступа процесса, в контексте которого выполняется этот поток, или заимствованным у другого процесса, в случае если произошла подмена контекста безопасности. Доступ к охраняемому объекту выполняется из потока. Поэтому под субъектом часто и понимается исполняемый поток, который при контроле доступа представляется маркером доступа этого потока. В свою очередь охраняемый объект, доступ к которому контролируется системой управления безопасностью, представляется при контроле доступа дескриптором безопасности этого объекта. Теперь можно перейти к общей схеме проверки доступа субъектов к объектам (рис. 3). Рис. 3. Пример проверки прав доступа к защищенному объекту Контроль доступа субъекта к охраняемому объекту выполняется следующим образом. При открытии субъектом доступа к охраняемому объекту, что обычно выполняется посредством функций типа Сreate или Open, система управления безопасностью просматривает список DACL этого охраняемого объекта для поиска элемента, в котором хранится идентификатор безопасности субъекта. Если такой элемент в списке DACL не найден, то поток получает отказ в доступе к объекту. Если же такой элемент найден, то система проверяет тип этого элемента. Если SID субъекта совпадает с SID владельца объекта и запрашиваются стандартные права доступа, то доступ предоставляется независимо от содержимого DACL. Далее система последовательно сравнивает SID каждого ACE из DACL с SID маркера. Если обнаруживается соответствие, выполняется сравнение маски доступа с проверяемыми правами. Для запрещающих ACE даже при частичном совпадении прав доступ немедленно отклоняется. Для успешной проверки разрешающих элементов необходимо совпадение всех прав. 73 УЧЕНЫЕ ЗАПИСКИ №9 (I), 2012 Очевидно, что для процедуры проверки важен порядок расположения ACE в DACL. Поэтому Microsoft предлагает так называемый предпочтительный порядок размещения ACE. Например, для ускорения рекомендуется размещать запрещающие элементы перед разрешающими. Заключение Система управления доступом является ядром системы защиты данных ОС Windows. С каждым субъектом (пользователем, процессом или потоком) связан маркер доступа, а у каждого защищаемого объекта (файла, папки и др.) в свою очередь имеется дескриптор безопасности. Проверка прав доступа происходит при открытии объекта и заключается в проверке соответствия прав субъекта списку прав доступа, хранящемуся в составе дескриптора безопасности объекта. Список литературы 1. 2. 3. 4. 5. 74 Беляев М. А., Лысенко В. В., Малинина Л. А. Основы информатики. Высшее образование: учебник для вузов. – Ростов-на-Дону: Феникс, 2006. – 352 с. Гайдамакин Н. А. Разграничение доступа к информации в компьютерных системах. – Екатеринбург: Изд-во Урал. ун-та, 2003. – 328 с. Девянин П. Н. Модели безопасности компьютерных систем. – М.: Издат. центр «Академия», 2005. – 144 с. Домарев В. В. Безопасность информационных технологий. Методология создания систем защиты. – Diasoft, 2001. – 688 стр. Рэнди Франклин Смит. Основы безопасности NT.Windows IT Pro, № 7. 2001. С. 36.