Мандатное управление доступом

Мандатное управление доступом (англ. Mandatory access control, MAC) – разграничение доступа субъектов к объектам, основанное на назначении метки конфиденциальности для информации, содержащейся в объектах, и выдаче официальных разрешений (допуска) субъектам на обращение к информации такого уровня конфиденциальности. Также иногда переводится как «Принудительный контроль доступа». Это способ, сочетающий защиту и ограничение прав, применяемый по отношению к компьютерным процессам, данным и системным устройствам и предназначенный для предотвращения их нежелательного использования.

В приведенном на рисунке 21 примере пользователь «Субъект 2», имеющий допуск уровня «не секретно», не может получить доступ к объекту, имеющего метку «для служебного пользования». В то же время, пользователь «Субъект 1» с допуском уровня «совершенно секретно», право доступа к объекту с меткой «для служебного пользования» имеет.

 
  Мандатное управление доступом - student2.ru

Где: СС – совершено секретно;

С – секретно;

ДСП – для служебного пользования;

НС – не секретно.

Рис. 21. Мандатное управление доступом

Особенности применения модели

Мандатная модель управления доступом, помимо дискреционной и ролевой, является основой реализации разграничительной политики доступа к ресурсам при защите информации ограниченного доступа. При этом данная модель доступа практически не используется «в чистом виде», обычно на практике она дополняется элементами других моделей доступа.

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

Самое важное достоинство заключается в том, что пользователь не может полностью управлять доступом к ресурсам, которые он создаёт.

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

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

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

В качестве примера можно рассмотреть организацию доступа к ресурсам в операционных системах семейства Linux.

Пользователи и группы

Поскольку система Linux с самого начала разрабатывалась как многопользовательская, в ней предусмотрен такой механизм, как права доступа к файлам и каталогам. Он позволяет разграничить полномочия пользователей, работающих в системе. В частности, права доступа позволяют отдельным пользователям иметь «личные» файлы и каталоги. Например, если пользователь ivanov создал в своём домашнем каталоге файлы, то он является владельцем этих файлов и может определить права доступа к ним для себя и остальных пользователей. Он может, например, полностью закрыть доступ к своим файлам для остальных пользователей, или разрешить им читать свои файлы, запретив изменять и исполнять их, что иллюстрирует использование классической Дискреционной модели доступа.

Правильная настройка прав доступа позволяет повысить надёжность системы, защитив от изменения или удаления важные системные файлы. Наконец, поскольку внешние устройства с точки зрения Linux также являются объектами файловой системы, механизм прав доступа можно применять и для управления доступом к устройствам.

Пользователями системы Linux, выполняющими различные действия с файлами и каталогами, являются на самом деле вовсе не люди, а программы, выполняемые в системе – процессы. Одна из таких программ – командная оболочка, которая считывает команды пользователя из командной строки и передаёт их системе на выполнение. Каждая программа (процесс) выполняется от имени определённого пользователя. Её возможности работы с файлами и каталогами определяются правами доступа, заданными для этого пользователя.

С целью оптимальной настройки прав доступа для ряда программ-серверов в системе созданы системные пользователи (учётные записи), от имени которых работают эти программы. Например, веб-сервер (Apache) выполняется от имени пользователя apache, а ftp-сервер — от имени пользователя ftp. Такие учётные записи не предназначены для работы людей-пользователей.

У любого файла в системе есть владелец — один из пользователей. Однако каждый файл одновременно принадлежит и некоторой группе пользователей системы. Каждый пользователь может входить в любое количество групп, и в каждую группу может входить любое количество пользователей из числа определённых в системе.

Когда в системе создаётся новый пользователь, он добавляется по крайней мере в одну группу. В системе Linux при создании новой учётной записи создаётся специальная группа, имя которой совпадает с именем нового пользователя, и пользователь включается в эту группу. В дальнейшем администратор может добавить пользователя к другим группам.

Механизм групп может применяться для организации совместного доступа нескольких пользователей к определённым ресурсам. Например, на сервере организации для каждого проекта может быть создана отдельная группа, в которую войдут учётные записи (имена пользователей) сотрудников, работающих над этим проектом. При этом файлы, относящиеся к проекту, могут принадлежать этой группе и быть доступными для её членов. В системе также определено несколько групп (например, bin), которые используются для управления доступом системных программ к различным ресурсам. Как правило, членами этих групп являются системные пользователи, пользователи-люди не включаются в такие группы.

В некоторых дистрибутивах Linux с помощью групп могут быть предоставлены права, необходимые для выполнения определённых пользовательских задач. Например, чтобы пользователь получил возможность собирать пакеты RPM, его следует включить в группу rpm, чтобы предоставить возможность записи дисков CD-R/RW, пользователя нужно включить в группу cdwriter и т. д.

Рассмотрим следующий пример информации о файлах и каталогах, в которой будут, среди прочего, отражены права доступа (получены при помощи команды ls):

-rw-r--r-- 1 ivanov users 505 Mar 13 19:05 report1303

Первое поле в этой строке ( -rw-r--r-- ) отражает права доступа к файлу. Третье поле указывает на владельца файла (ivanov), четвёртое поле указывает на группу, которая владеет этим файлом (users). Последнее поле — это имя файла (report1303). Другие поля в настоящий момент нас не интересуют.

Данный файл является собственностью пользователя ivanov и группы users. Последовательность -rw-r--r-- показывает права доступа для пользователя – владельца файла, пользователей – членов группы-владельца, а также для всех остальных пользователей.

Первый символ из этого ряда (-) обозначает тип файла. Символ ( - ) означает, что это – обычный файл, который не является каталогом (в случае каталога первым символом было бы d) или псевдофайлом устройства (в этом случае были бы c или b). Следующие три символа (rw-) представляют собой права доступа, предоставленные владельцу ivanov. Символ (r) – сокращение от read (англ. читать), а (w) – сокращение от write (англ. писать). Таким образом, ivanov имеет право на чтение и запись (изменение) файла report1303.

После символа w мог бы стоять символ (x), означающий наличие прав на исполнение (англ. execute, исполнять) файла. Однако символ (-), стоящий здесь вместо (x), указывает, что ivanov не имеет права на исполнение этого файла. Это разумно, так как файл report1303 не является программой. В то же время, пользователь, зарегистрировавшийся в системе как ivanov, при желании может предоставить себе право на исполнение данного файла, поскольку является его владельцем.

Следующие три символа (r--) отражают права доступа группы к файлу. Группой-собственником файла в нашем примере является группа users. Поскольку здесь присутствует только символ (r), все пользователи из группы users могут читать этот файл, но не могут изменять или исполнять его.

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

Ещё несколько примеров:

-rwxr-x—x

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

-rw-------

Только владелец файла может читать и изменять его.

-rwxrwxrwx

Все пользователи могут читать файл, изменять его и запускать на выполнение.

----------

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

Возможность доступа к файлу зависит также от прав доступа к каталогу, в котором находится файл. Например, даже если права доступа к файлу установлены как -rwxrwxrwx, другие пользователи не могут получить доступ к файлу, пока они не имеют прав на исполнение для каталога, в котором находится файл. Другими словами, чтобы воспользоваться имеющимися у вас правами доступа к файлу, вы должны иметь право на исполнение для всех каталогов вдоль пути к файлу.

Контрольные вопросы:

1. В чём специфика дискреционного управления доступом?

2. Отличие дискреционной и ролевой моделей доступа?

3. В чём специфика мандатной модели доступа?

4. Реализация прав доступа к файлам и каталогам в системе Linux?

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