Контроль доступа к файлам. Файл как разделяемый ресурс. Механизм контроля доступа. Контроль доступа с ОС Unix.

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

Во многих ОС реализованы механизмы, позволяющие управлять доступом к объектам различного типа с единых позиций. Пример: представление устройств ввода-вывода в виде специальных файлов в ОС UNIX, в этом случае при доступе к устройствам используются те же атрибуты безопасности и алгоритмы, что и при доступе к обычным файлам и каталогам. Еще дальше продвинулась в этом направлении ОС Windows NT. В ней используется унифицированная структура — объект безопасности, — которая создается не только для файлов и внешних устройств, но и для любых разделяемых ресурсов: секций памяти, синхронизирующих примитивов типа семафоров и т. п. Это позволяет использовать в Windows NT для контроля доступа к ресурсам любого вида общий модуль ядра — менеджер безопасности.

В качестве субъектов доступа могут выступать как отдельные пользователи, так и группы пользователей. Определение индивидуальных прав доступа для каждого пользователя позволяет максимально гибко задать политику расходования разделяемых ресурсов в вычислительной системе, но этот способ приводит в больших системах к чрезмерной загрузке администратора рутинной работой по повторению одних и тех же операций для пользователей с одинаковыми правами. Объединение таких пользователей в группу и задание прав доступа в целом для группы является одним из основных приемов администрирования в больших системах. У каждого объекта доступа существует владелец. Владельцем может быть как отдельный пользователь, так и группа пользователей. Владелец объекта имеет право выполнять с ним любые допустимые для данного объекта операции. Во многих операционных системах существует особый пользователь (superuser, root, administrator), который имеет все права по отношению к любым объектам системы, не обязательно являясь их владельцем. Под таким именем работает администратор системы, которому необходим полный доступ ко всем файлам и устройствам для управления политикой доступа. Различают два основных подхода к определению прав доступа:

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

- Мандатный (обязательный) доступ — подход к определению прав доступа, при котором система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу в зависимости от того, к какой группе пользователь отнесен. От имени системы выступает администратор, а владельцы объектов лишены возможности управлять доступом. Все группы пользователей в такой системе образуют строгую иерархию, и каждая группа пользуется всеми правами группы более низкого уровня иерархии. Членам какой-либо группы не разрешается предоставлять свои права членам групп более низких уровней иерархии. Такие системы доступа считаются более надежными, но менее гибкими, обычно они применяются в специализированных вычислительных системах с повышенными требованиями к защите информации. В универсальных системах используются, как правило, избирательные методы доступа.

Каждый пользователь и каждая группа обычно имеют символьное имя, а также уникальный числовой идентификатор. При выполнении процедуры логического входа в систему пользователь сообщает свое символьное имя и пароль, а операционная система определяет соответствующие числовые идентификаторы пользователя и групп, в которые он входит. Все их идентификационные данные, в том числе пароли пользователей и сведения о вхождении пользователя в группы, хранятся в специальном файле или специальной базе данных. Вход пользователя в систему порождает процесс-оболочку, который поддерживает диалог с пользователем и запускает для него другие процессы. Процесс-оболочка получает от пользователя символьное имя и пароль и находит по ним числовые идентификаторы пользователя и его групп. Эти идентификаторы связываются с каждым процессом, запущенным оболочкой для данного пользователя. Процесс «выступает от имени» данного пользователя и данных групп пользователей. В наиболее типичном случае любой порождаемый процесс наследует идентификаторы пользователя и групп от процесса родителя. Определить права доступа к ресурсу — значит определить для каждого пользователя набор операций, которые ему разрешено применять к данному ресурсу. В разных ОС для одних и тех же типов ресурсов может быть определен свой список дифференцируемых операций доступа. Для файловых объектов этот список может включать следующие операции:

- создание файла;

- уничтожение файла;

- открытие файла;

- закрытие файла;

- чтение файла;

- запись в файл;

- дополнение файла;

- поиск в файле;

- получение атрибутов файла;

- установка новых значений атрибутов;

- переименование;

- выполнение файла;

- чтение каталога;

- смена владельца;

- изменение прав доступа.

Набор файловых операций ОС может состоять из большого количества элементарных операций, а может включать всего несколько укрупненных операций. Список – это примером первого подхода, который позволяет весьма тонко управлять правами доступа пользователей, но он создает значительную нагрузку на администратора. Пример укрупненного подхода демонстрируют ОС семейства UNIX, в которых существуют всего три операции с файлами и каталогами: читать , писать и выполнить. Хотя в UNIX для операций используется всего три названия, в действительности им соответствует гораздо больше операций. Например, содержание операции выполнить зависит от того, к какому объекту она применяется. Поэтому администратор UNIX, по сути, располагает большим списком операций, чем это кажется на первый взгляд. В ОС Windows NT разработчики применили гибкий подход — они реализовали возможность работы с операциями над файлами на двух уровнях: по умолчанию администратор работает на укрупненном уровне (уровень стандартных операций), а при желании может перейти на элементарный уровень (уровень индивидуальных операций). В самом общем случае права доступа могут быть описаны матрицей прав доступа (столбцы – все файлы системы, строки — все пользователи, а на пересечении строк и столбцов – разрешенные операции). Практически во всех ОС матрица прав доступа хранится «по частям»: для каждого файла или каталога создается «список управления доступом» (Access Control List, ACL), в котором описываются права на выполнение операций пользователей и групп пользователей по отношению к этому файлу или каталогу. Список управления доступа – часть характеристик файла или каталога; он хранится на диске в соответствующей области. Не все файловые системы поддерживают списки управления доступом, например, ФС FAT, так как она разрабатывалась для однопользовательской однопрограммной операционной системы MS-DOS, для которой задача защиты от несанкционированного доступа не актуальна.

Обобщенно формат списка управления доступом можно представить в виде набора идентификаторов пользователей и групп, в котором для каждого идентификатора указывается набор разрешенных операций над объектом. Говорят, что список ACL состоит из элементов управления доступом (Access Control Element, АСЕ), при этом каждый элемент соответствует одному идентификатору. Список ACL с добавленным к нему идентификатором владельца называют характеристиками безопасности.

Обобщенная схема хранения информации о правах доступа и процедуры проверки имеет в каждой операционной системе свои особенности. В ОС UNIX права доступа к файлу или каталогу определяются для трех субъектов:

- владельца файла (UID);

- членов группы, к которой принадлежит владелец (GID);

- всех остальных пользователей системы.

Учитывая, что в UNIX определены всего три операции над файлами и каталогами, характеристики безопасности файла включают девять признаков, задающих возможность выполнения каждой из трех операций для каждого из трех субъектов доступа (-rwxrwxrwx). С каждым процессом UNIX связаны два идентификатора: пользователя, от имени которого был создан этот процесс, и группы, к которой принадлежит данный пользователь. Эти идентификаторы носят название реальных идентификаторов пользователя RUID и реальных идентификаторов группы RGID, но при проверке прав доступа к файлу используются не эти идентификаторы, а «эффективные идентификаторы пользователя» EUID и эффективные идентификаторы группы EGID. Введение эффективных идентификаторов позволяет процессу выступать в некоторых случаях от имени пользователя и группы, отличных от тех, которые ему достались при рождении. В исходном состоянии эффективные идентификаторы совпадают с реальными. Случаи, когда процесс выполняет системный вызов запуска приложения, хранящегося в некотором файле, в UNIX связаны со сменой процессом исполняемого кода. В рамках данного процесса начинает выполняться новый код, и если в характеристиках безопасности этого файла указаны признаки разрешения смены идентификаторов пользователя и группы, то происходит смена эффективных идентификаторов процесса. Файл имеет два признака разрешения смены идентификатора — Set User ID on execution (SUID) и Set Group ID on execution (SGID), разрешающие смену идентификаторов пользователя и группы при выполнении данного файла. Механизм эффективных идентификаторов позволяет пользователю получать некоторые виды доступа, которые ему явно не разрешены, но только с помощью вполне ограниченного набора приложений, хранящихся в файлах с установленными признаками смены идентификаторов.

Использование модели файла как универсальной модели разделяемого ресурса позволяет в UNIX применять одни и те же механизмы для контроля доступа к файлам, каталогам, устройствам, терминалам и разделяемым сегментам памяти. Система управления доступом ОС UNIX была разработана в 70-е годы и с тех пор мало изменилась. Эта достаточно простая система позволяет во многих случаях решить поставленные перед администратором задачи по предотвращению несанкционированного доступа, однако такое решение иногда требует слишком больших ухищрений или же вовсе не может быть реализовано.

38 (Столлингс) Дисковое планирование.

Наши рекомендации