Организация контроля доступа в ОС Windows NT

 

Система управления доступом в ОС Windows NT отличается высокой степенью гибкости, которая достигается за счет большого разнообразия субъектов и объ­ектов доступа, а также за счет детализации операций доступа.

Для разделяемых ресурсов в Windows NT применяется общая модель не­которого объекта, который содержит такие характеристики безопасности, как набор допустимых операций, идентификатор владельца, список управления доступом. Объекты в Windows NT создаются для любых ресурсов (файлов, каталогов, устройств, секций памяти, процессов) в том слу­чае, когда они являются или становятся разделяемыми. Характеристики объектов в Windows NT делятся на две части – об­щую, состав которой не зависит от типа объекта, и индивидуальную, опре­деляемую типом объекта.

Все объекты хранятся в древовидных иерархических структурах, эле­ментами ко­торых являются объекты-ветви (каталоги) и объекты-листья (файлы). Для объ­ектов файловой системы такая схема отношений является прямым отражением иерархии каталогов и файлов. Для объектов других ти­пов иерархическая схема отношений имеет свое содержание. Например, для процессов она отражает связи «родитель-потомок», а для устройств отражает принадлежность к определенно­му типу и связи с дру­гими устройствами, например SCSI-контроллера с дисками.

Проверка прав доступа для объектов любого типа выполняется центра­лизованно, с помощью монитора безопасности (Security Reference Monitor), работающего в привилегированном режиме. Централизация функций кон­троля доступа повы­шает надежность средств защиты информации операци­онной системы по срав­нению с распределенной реализацией, когда в различ­ных модулях ОС имеются свои процедуры проверки прав доступа и вероят­ность ошибки программиста от этого возрастает.

Для системы безопасности Windows NT характерно наличие большого количест­ва различных предопределенных (встроенных) субъектов досту-па – как отдель­ных пользователей, так и групп. Так, в системе всегда имеются та­кие пользовате­ли, как Administrator, System и Guest, а также группы Users, Administrators, Account Operators, Server Operators, Everyone и др. Смысл этих встроенных пользо­вателей и групп состоит в том, что они наделены не­которыми правами, облегчая администратору работу по созданию эффектив­ной системы разграничения до­ступа. При добавлении нового пользователя администратору остается только решить, к какой группе или группам отнести этого пользователя. Конечно, адми­нистратор может создавать новые группы, а также добавлять права к встроен­ным группам для реализации собственной политики безопасности, но во многих случаях встроенных групп оказывается вполне достаточно. Windows NT поддерживает три класса операций доступа, которые отличаются типом субъектов и объектов, участвующих в этих опе­рациях.

Разрешения (permissions) – это множество операций, которые могут быть определены для субъектов всех типов по отношению к объектам лю­бого типа: файлам, каталогам, принтерам, секциям памяти и т.д. Разрешения по своему назначению соответствуют правам доступа к файлам и каталогам в ОС UNIX.

Права (user rights) определяются для субъектов типа группа на вы­полнение некоторых системных операций: установку системного времени, архивирова­ние файлов, выключение компьютера и т.п. В этих операциях участвует осо­бый объект доступа — операционная система в целом.
В ос­новном именно права, а не разрешения отличают одну встроенную группу пользователей от другой. Некоторые права у встроенной группы являются также встроенны­ми – их у данной группы нельзя удалить.
Остальные права встроенной груп­пы можно удалять (или добавлять из общего списка прав).

Возможности пользователей (user abilities) определяются для отдель­ных пользо­вателей на выполнение действий, связанных с формирова­нием их операционной среды, например изменение состава главного меню программ, возможность пользоваться пунктом меню Run (выполнить) и т.п.

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

Права и разрешения, данные группе, автоматически предоставляются ее членам, позволяя администратору рассматривать большое количество поль­зователей как единицу учетной информации и минимизировать свои дейст­вия.

Проверка разрешений доступа процесса к объекту производится в Win­dows NT в основном в соответствии с общей схемой доступа, представленной на рис. 5.17. При входе пользователя в систему для него создается так назы­ваемый токен доступа (access token), включающий идентификатор пользова­теля и идентифи­каторы всех групп, в которые входит пользователь. В токене также имеются: спи­сок управления доступом (ACL) по умолчанию, который состоит из разрешений и применяется к создаваемым процессом объектам; список прав пользователя на выполнение системных действий.

Все объекты, включая файлы, потоки, события, даже токены доступа, когда они создаются, снабжаются дескриптором безопасности. Дескриптор безопасности содержит список управления доступом – ACL. Владелец объ­екта, обычно поль­зователь, который его создал, обладает правом избиратель­ного управления досту­пом к объекту и может изменять ACL объекта, чтобы позволить или не позволить другим осуществлять доступ к объекту. Встро­енный администратор Windows NT в отличие от суперпользователя UNIX может не иметь некоторых разрешений на доступ к объекту. Для реализации этой возможности идентификаторы адми­нистратора и группы администрато­ров могут входить в ACL, как и идентифи­каторы рядовых пользователей. Администратору доступны любые опера­ции с любыми объектами, так как он может стать владельцем объекта, а затем уже как владелец получить полный набор раз­решений. Однако вер­нуть владение предыдущему владельцу объекта админист­ратор не может, поэтому пользователь всегда может узнать о том, что с его фай­лом или принте­ром работал администратор.

При запросе процессом некоторой операции доступа к объекту в
Win­dows NT управление всегда передается монитору безопасности, который сравнивает иден­тификаторы пользователя и групп пользователей из токена доступа с иденти­фикаторами, хранящимися в элементах ACL объекта. В от­личие от UNIX в эле­ментах ACL Windows NT могут существовать как списки разрешенных, так и списки запрещенных для пользователя операций.

Система безопасности могла бы осуществлять проверку разрешений ка­ждый раз, когда процесс использует объект. Но список ACL состоит из мно­гих элементов, процесс в течение своего существования может иметь доступ ко многим объек­там, и количество активных процессов в каждый момент времени также велико. Поэтому проверка выполняется только при каждом открытии, а не при каждом использовании объекта.

Для смены в некоторых ситуациях процессом своих идентификаторов в Windows NT используется механизм олицетворения (impersonation).
В Windows NT существуют простые субъекты и субъекты-серверы. Простой субъект – это про­цесс, которому не разрешается смена токена доступа и соответственно смена идентификаторов. Субъект-сервер – это процесс, который работает в качестве сервера и обслуживает процессы своих клиентов (например, процесс файлового серве­ра). Поэтому такому процессу разрешается по­лучить токен доступа у процесса-клиента, запросившего у сервера выполнение некоторого действия, и использовать его при доступе к объектам.

В Windows NT однозначно определены правила, по которым вновь соз­даваемо­му объекту назначается список ACL. Если вызывающий код во время создания объекта явно задает все права доступа к вновь создаваемому объ­екту, то система безопасности приписывает этот ACL объекту.

Если же вызывающий код не снабжает объект списком ACL, а объект имеет имя, то применяется принцип наследования разрешений. Система безопасности про­сматривает ACL того каталога объектов, в котором хра­нится имя нового объекта. Некоторые из входов ACL каталога объектов мо­гут быть помечены как насле­дуемые. Это означает, что они могут быть при­писаны новым объектам, создавае­мым в этом каталоге.

В том случае, когда процесс не задал явно список ACL для создаваемого объекта и объект-каталог не имеет наследуемых элементов ACL, использу­ется список ACL по умолчанию из токена доступа процесса.

Наследование разрешений устанавливается при создании нового объекта. Особенно оно эффективно при создании файлов, так как эта операция выполняется в системе наиболее часто.