Разграничение доступа пользователей в ОС Windows. ПАК СЗИ НСД «Аккорд-Win64» (10/11)
Мандатный механизм управления доступом
Здравствуйте!
В данной лекции мы поговорим о мандатном механизме управления доступом, рассмотрим требования этого механизма и понятие используемой в нем решетки уровней конфиденциальности информации, приведем пример схемы реализации мандатного механизма управления доступом. А также поговорим, как происходит настройка уровня доступа пользователей и настройка уровня конфиденциальности (меток допуска) объектов в программно-аппаратном комплексе СЗИ от НСД «Аккорд-Win64», то есть настройка правил разграничения доступа с использованием данного механизма.
Итак, как мы уже говорили в лекции про дискреционный механизм управления доступом – все элементы компьютерной системы, как известно, разделяются на множество субъектов и объектов. Будем называть их обобщенно — сущностями КС.
Мандатное управление доступом к объектам компьютерной системы предполагает выполнение следующих требований:
- все сущности компьютерной системы должны быть однозначно идентифицированы;
- должна быть задана решетка уровней конфиденциальности информации;
- каждой сущности компьютерной системы должен быть присвоен уровень конфиденциальности — метка допуска, задающая установленные ограничения на доступ к ней;
- каждому субъекту КС должен быть присвоен уровень доступа, задающий его уровень полномочий в системе;
- субъект может получить доступ к сущности только том случае, когда уровень доступа субъекта позволяет предоставить ему данный доступ к сущности с заданным уровнем конфиденциальности, и реализация доступа не приведет к возникновению информационных потоков от сущностей с высоким уровнем конфиденциальности к сущностям с низким уровням конфиденциальности.
Решетка уровней конфиденциальности классически задается в числовом виде – «0», «2», … «15», где «0» — самый низкий уровень, а «15» — самый высокий (уровень «1» зарезервирован для более сложных задач). Но может быть задана и иначе, например, когда имеется всего 4 уровня конфиденциальности. Здесь ОД – это общедоступно, К – конфиденциально, С – секретно, СС – совершенно секретно.
Реализацию мандатного механизма управления доступом можно схематично изобразить следующим образом. Пусть, например, у нас есть Объект 1 (некоторый файл) и несколько субъектов (S1, S2, S3). Объект 1 имеет уровень конфиденциальности «Конфиденциально» и Субъект 2 имеет уровень доступа «Конфиденциально», Субъект 1 имеет уровень доступа «Секретно», а Субъект 3 – «Общедоступно». Слева мы видим решетку уровней конфиденциальности для данного случая. В соответствии с требованиями мандатной политики управления доступом Субъект 1 (с более высоким уровнем доступа, чем у нашего файла) не может писать (W) в файл с уровнем доступа ниже, но может его читать (R). Субъект 2 (с таким же уровнем доступа, что и наш файл) может и писать в файл и читать его (RW) ), а Субъект 3 (с уровнем доступа ниже, чем наш файл) не может ни читать, ни писать в файл (RW) ), но может добавлять туда информацию без перезаписи (А) ).
Теперь давайте рассмотрим, как происходит задание правил разграничения доступа (ПРД) с использованием мандатного механизма в комплексе «Аккорд».
Для включения мандатного механизма разграничения доступа необходимо в главном окне программы «Настройка комплекса «Аккорд» в поле «Механизмы защиты» установить флаги «Мандатный» и «Контроль процессов». Установим их. Нажмем «Сохранить» и выйдем из программы.
Теперь необходимо выполнить настройку уровня доступа пользователей. Для этого зайдем в программу «Редактор прав доступа». После установки в настройках комплекса галочек «Мандатный» и «Контроль процессов» в главном окне данной программы на панели инструментов становятся активными кнопки «Уровень доступа пользователя» и «Установить мандатные метки допуска к объектам».
С помощью кнопки «Уровень доступа пользователя» можно установить, или изменить уровень доступа пользователя. Выберем пользователя из списка и обратим внимание на то, что в поле «Уровень доступа пользователя» по умолчанию установлен самый низкий уровень доступа — «Общедоступно».
Нажмем кнопку «Уровень доступа пользователя» и зададим ему уровень доступа, например, «Конфиденциально». Нажмем кнопку «Сохранить». В поле «Уровень доступа пользователя» появится заданное значение.
Обращу внимание, что объектами для мандатного механизма могут выступать: локальные каталоги и файлы, сетевые ресурсы, каталоги и файлы на съемных устройствах.
Далее необходимо открыть окно «Редактирование правил разграничения доступа» и в нем перейти на вкладку «Процессы».
При первом запуске данной программы с включенным флагом «Контроль процессов» в список заносятся все процессы, которые в данный момент находятся в оперативной памяти. Однако на момент старта данной программы некоторые процессы уже завершают свою работу, поэтому более корректно выполнять формирование списка контролируемых процессов несколько иным образом. Мы не будем сейчас рассматривать этот момент, подробности можно прочитать в методических материалах к лекции – документе «Установка правил разграничения доступа».
Сейчас зададим всем процессам метку допуска «Общедоступно» (делаем мы это для того, чтобы все процессы были общедоступными, так как сейчас мы не хотим разграничивать доступ процессов, а хотим устанавливать метки допуска только к таким объектам, как файлы и каталоги).
Для этого нажмем кнопку «Новый». В появившемся окне в поле «Имя процесса» введем «*». Больше ничего менять не будем и нажмем «Сохранить». В списке «Процессов» видим, что появилась «*» и уровень доступа «Общедоступно». Это означает, что все процессы будут иметь метку допуска «Общедоступно». Нажмем «Сохранить».
Далее можно присваивать уровни конфиденциальности (метки допуска) объектам. Для этого нужно нажать кнопку «Установить мандатные метки допуска к объектам». Нажмем ее. Выводится окно со списком объектов.
По умолчанию всем объектам присваивается самый низкий уровень – «Общедоступно». Зададим метку допуска произвольному объекту (например, каталогу TEST на диске С:\). Для этого нажмем кнопку «Новый». Откроется окно «Атрибуты доступа к объектам», в котором слева выберем каталог TEST на диске С:. Для выбранного объекта можно изменить только два параметра – наследование прав доступа и метку допуска. «Метка допуска» выставляется выбором значения из списка.
Обращу внимание, что среди меток допуска мы видим метку «Общий ресурс», которую мы не обсуждали ранее. Пока не будем на ней останавливаться, об общих ресурсах мы поговорим на следующей лекции.
А сейчас выберем, например, «Конфиденциально», нажмем кнопку «Сохранить», затем «Закрыть».
Видим, что этот каталог появился в списке с меткой допуска «Конфиденциально».
Объект, которому не присвоена метка допуска, считается общедоступным для всех пользователей.
Для сохранения изменений необходимо нажать «Сохранить».
Подведем итог, на данной лекции мы поговорили о мандатном механизме управления доступом, рассмотрели требования этого механизма, понятие используемой в нем решетки уровней конфиденциальности информации, пример схемы реализации мандатного механизма управления доступом. А также посмотрели, как происходит настройка уровня доступа пользователей и уровня конфиденциальности (меток допуска) объектов в программно-аппаратном комплексе СЗИ от НСД «Аккорд-Win64».
На следующей лекции мы поговорим о контроле процессов с использованием дискреционного и/или мандатного механизмов разграничения доступа.
Спасибо за внимание, до встречи на следующей лекции!
Мандатная модель управления доступом (Mandatory Access Control, MAC) — способ разграничения доступа с фиксированным набором полномочий. Обычно настоящий MAC используется в системах с повышенным требованиями к безопасности и стоит на службе всевозможных силовых ведомств и организаций, связанных с государственной или служебной тайной.
Модель MAC
MAC, несмотря на то, что содержится во множестве статей и материалов, чаще всего упоминается вскользь и в виде пряного соуса к чему-нибудь вроде краткого упоминания MLS в SELinux. Так как многие ограничивают свою дружбу с SELinux применением рецепта «как отключить SELinux», то и MAC часто удостаивается той же чести. Поэтому сперва коротко о MAC.
Если вы хорошо знакомы с моделью, можете сразу перейти к следующему разделу.
Основная идея
Абстрактная модель безопасности, реализуемая в классическом MAC (каким его знают сотрудники силовых ведомств), выглядит следующим образом (классическая картинка, иллюстрирующая модель Белла — Лападулы):
Модель MAC по своей сути является «электронной» реализацией бумажного «секретного» документооборота. В MAC имеются следующие «действующие лица»:
- Иерархия уровней доступа, которые обрабатываются в системе (обычно регистрируются в ОС). Для удобства часто задается в виде беззнаковых чисел (от 0 до значения, ограниченного реализацией). В этом случае для сравнения уровней доступа (выше/ниже/равно) используются простейшие арифметические операции (равно, меньше, больше).
- Объект с уровнем секретности. Любой файл, каталог в файловой системе, ячейка или запись в таблице БД, таблица в БД, сама БД, сетевой пакет и т.д. Объекту присваивается любое значение из иерархии уровней доступа. Для объекта допускается повышение уровня секретности (изменение до большего значения уровня, чем текущий). Понижение уровня секретности категорически не допускается (хотя вполне реализуемо при помощи определенных уловок).
- Субъект с уровнем доступа. Процесс какого-либо приложения либо сеанс пользователя (по сути тоже процесс приложения). Метка уровня доступа наследуется от субъекта всеми создаваемыми данным субъектом объектами.
Значение уровня доступа субъекта или уровня секретности объекта обычно называют термином «мандатный уровень», «мандатная метка» или просто «метка» (в STCSEC данный термин называется «hierarchical classification level»). Просто, емко и почти однозначно.
Проверка полномочий осуществляется при каждом факте доступа субъекта к объекту, защищаемому MAC. При этом мандатная модель управления доступом обычно используется совместно с другими механизмами контроля доступа, например, DAC (UNIX-моделью и POSIX ACL). При этом MAC проверяется в последнюю очередь. Сперва проверяется доступ по DAC (как наименее защищенный), а затем уже MAC.
При проверке правомочности доступа субъекта к объекту согласно мандатной модели возможны следующие комбинации:
- Мандатная метка субъекта равна мандатной метке объекта. В этом случае субъекту разрешено читать и изменять объект.
- Мандатная метка субъекта выше мандатной метки объекта. Субъекту разрешено только читать объект: он его видит, но не может изменить.
- Мандатная метка субъекта ниже мандатной метки объекта. Субъекту формально разрешено создать объект с более высокой мандатной меткой (так называемое «повышение уровня секретности объекта»). На практике у субъекта нет технической возможности для выполнения данной операции (он просто «не видит» изменяемый объект, например, файл или каталог с файлами).
Также в MAC существует такое понятие, как «категория» (в терминологии STCSEC данный термин называется «non-hierarchical categories»). Категории в MAC являются опциональными к применению. В практике реализации MAC категории используются для «горизонтального» разграничения доступа между различными подразделениями организации. В этом случае сотрудники, несмотря на один мандатный уровень, будут получать доступ только к тем категориям объектов, к которым для них открыт доступ согласно их метке.
Ограничения и уязвимости
MAC обладает своими ограничениями и особенностями:
- Пользователи системы не могут самостоятельно определять доступ субъектов к объектам. Из всего арсенала управления доступом к объекту в MAC имеется только мандатная метка и мандатная категория, которые привязаны к этому объекту. Управление доступом субъектов к объектам осуществляют только администраторы.
- Если пользователь хочет изменить мандатную метку объекта, автором которого он является, то ему необходимо перейти в сеанс целевой метки. Связано с тем, что пользователь не может указать метку по своему желанию, а может лишь передать метку объекту «по наследству». Одновременно пользователь может работать только в сеансе одной мандатной метки.
- Так как MAC используется совместно с другими моделями управления доступом, возникают коллизии: иногда не так просто выяснить, в каком «слое» системы безопасности произошёл отказ в предоставлении доступа. Требуется тонкий «тюнинг» всех слоёв защиты.
- Помимо самой настройки доступа посредством инструментария MAC требуется наличие регламента безопасности. В нем должно быть описано, что значат конкретные значения мандатных меток (это находится за пределами MAC), какие объекты как защищаются, какие субъекты имеют право на доступ. Без наличия согласованного регламента MAC сама по себе не даст security enhancement.
- Использование MAC в распределенной сетевой инфраструктуре. Традиционный подход к настройке MAC — локально, вручную, при помощи администратора в соответствии с инструкцией. Есть решения, позволяющие реализовать централизованно управляемое хранилище MAC (вроде ALD), но они имеют свои особенности и сложности построения.
Проектирование приложения с поддержкой MAC
Несмотря на все ограничения модели, для тех, кто работает с госсектором, а в особенности с силовыми ведомствами, вопрос построения приложений с поддержкой мандатной модели управления доступом актуален как никогда. Вдруг завтра именно вам придется поддерживать MAC в своем продукте?
На первый взгляд кажется, что модель примитивна и ее реализация проста как пять копеек, но существует один нюанс: заказчик, который выставляет требование к использованию мандатной модели, имеет ввиду, в первую очередь, сертифицированное средство защиты информации. Обрабатываться в такой ИС будет действительно секретная информация, вплоть до государственной тайны, и сертифицировать на нужный уровень собственную разработку будет очень сложно. Выходом из данной ситуации является использование сертифицированной инфраструктуры, поддерживающей MAC.
Итак, что у нас есть в наборе:
Теперь рассмотрим, каким образом можно воспользоваться этой инфраструктурой при разработке приложения для сохранения функций управления доступом на уровне инфраструктуры.
Для того чтобы приложение могло воспользоваться механизмом мандатных меток операционной системы, должны быть выполнены следующие условия:
- Пользователи приложения должны быть зарегистрированы в хранилище пользователей операционной системы. Как минимум должен быть какой-то идентификатор, позволяющий однозначно сопоставить пользователя приложения с пользователем операционной системы (обычно это логин).
- Пользователям приложения на уровне механизма MAC операционной системы должны быть настроены мандатные разрешения на определённые мандатные метки (диапазоны мандатных меток).
С точки зрения десктопного приложения сценарий работы пользователя выглядит следующим образом:
- Пользователь входит в ОС под своей личной УЗ в режиме требуемой ему метки. Запускает приложение. Процесс приложения наследует мандатную метку.
- Приложение взаимодействует с БД на PostgreSQL, отображая пользователю, к примеру, только записи таблиц БД с текущей мандатной меткой.
С точки зрения серверного приложения, предоставляющего веб-сервисы, сценарий работы пользователя концептуально близок, хотя и выглядит немного сложнее:
- Пользователь входит в ОС под своей личной УЗ в режиме требуемой ему метки. Запускает браузер с поддержкой MAC, в нашем примере — Mozilla Firefox («обычный» браузер для этих целей не подойдет). Процесс браузера наследует мандатную метку.
- Пользователь запрашивает адрес ресурса приложения с поддержкой мандатных меток. Браузер формирует запрос, добавляя в него мандатную метку.
- Запрос обрабатывает веб-сервер с поддержкой мандатных меток, в нашем примере — Apache Http Server. Веб-сервер (процесс которого работает в режиме минимальной мандатной метки) считывает мандатную метку запроса, находит приложение-обработчик запускает его процесс с переданной мандатной меткой.
- Приложение взаимодействует с БД на PostgreSQL, ретранслируя в запросах мандатную метку.
Наличие MAC в операционной системе накладывает достаточно серьезные ограничения на архитектуру приложения. То, что в ОС без мандатной модели управления доступом кажется тривиальным, в ОС с MAC может принести множество сюрпризов всей команде разработки. Особенно руководителю проекта. Поэтому архитектурное решение приложения с поддержкой MAC должно быть построено до начала разработки. Руководитель проекта с MAC должен настоять на том, чтобы проектирование было выполнено архитектурной группой до начала каких-либо движений в сторону реализации.
Разумеется, для разработки простых приложений (утилит либо приложений, ввиду своей специфики нейтральных к MAC) многие советы попросту не пригодятся. Если же приложение является чем-то более сложным, чем однопользовательское локальное приложение, считывающее файл и записывающее результат своей работы также в файл, то желательно четко осознавать «подводные камни».
Мы собрали рецепты по проектированию приложения с поддержкой MAC, сформулированные на основе собственного опыта. За ними стоят бессонные ночи, непрерывный поток тикетов от тестирования, тысячи часов отладки приложения, которое по всем здравым смыслам должно работать правильно, но почему-то работает не так. Рецепты описаны в максимально простой и нейтральной к технологиям и инструментам форме, и по возможности снабжены схемами для улучшения воспринимаемости. Поехали!
Как избежать MAC, когда его уже не избежать
При проектировании приложения с MAC можно использовать одно очень простое архитектурное решение, которое в итоге сэкономит много нервов и времени. В конфигурацию приложения следует добавить параметр, который сообщает приложению, включена ли мандатная модель управления доступом для данной инсталляции, или нет. Во всех местах приложения, где происходит взаимодействие с инфраструктурой MAC, либо бизнес-функция приложения требует проверки метки, следует сперва проверять значение этого параметра. Если MAC согласно ему отключена, то приложение игнорирует все правила бизнес-логики, предназначенные для проверки MAC-совместимых функций.
С точки зрения трудозатрат придется потратить дополнительное время на реализацию каждой функцию приложения с поддержкой MAC. Потребуется отладить и протестировать одну и ту же функциональность в режиме без мандатной метки, поэтому возрастут расходы на тестирование.
За счет данного решения можно обеспечить приложению (и всей команде разработки), которое вынуждено функционировать в среде MAC, следующие преимущества:
- Кроссплатформерность приложения (ограниченную только лишь возможностями языков программирования) и его независимость от среды выполнения.
- Возможность использования современных инструментов виртуализации (например, Docker) с целью автоматизации.
- Простоту тестирования и отладки функций, которые не связаны непосредственно с MAC.
Рекомендации:
Добавить параметр включения/отключения поддержки мандатных меток в приложении.
Во всех местах, требующих взаимодействия с MAC, прежде всего проверять значение параметра.
При отладке и тестировании необходимо отлаживать (на стороне команды разработки) и тестировать (на стороне команды тестирования) оба режима работы приложения.
Разделяй и властвуй
Другой важный шаг при проектировании, который обязательно должен быть выполнен до начала разработки — разделение модулей, в которых требуется поддержка MAC, от модулей, в которых данный механизм управления доступом не требуется. Использование мандатной модели управления доступом почти всегда усложняет бизнес-логику приложения.
Это та самая инфраструктура, абстрагироваться от которой очень сложно, а порой невозможно. Поэтому приложение следует разбить на модули, а уже по каждому модулю произвести анализ потребности в поддержке MAC. Возможно, именно в вашем случае достаточно поддержать MAC только в одном модуле, и нет смысла из-за данного модуля усложнять все приложение?
В случае, если мы рассматриваем некий абстрактный модуль (или все приложение, если деление приложения на модули не требуется) возможны следующие парадигмы:
- Минимальная метка. Модуль обрабатывает данные в режиме минимальной мандатной метки (минимальная метка, в которой функционируют процессы ОС — например, 0 мандатная метка) либо без мандатной метки.
- Одна метка. Модуль работает с данными только одной мандатной метки выше минимальной мандатной метки (любой метки, отличной от той, в которой функционируют процессы ОС).
- Несколько меток. Модуль работает с данными сразу нескольких мандатных меток (как метки, в которой функционируют процессы ОС, так и других меток, отличных от метки процессов ОС).
Модулям приложения с различными парадигмами обработки мандатных меток не стоит знать друг о друге слишком много. Иначе это чревато возникновением больших и непредсказуемых проблем в части конфликтов доступа к различным объектам и т.д. Идея минимальной связности для модулей очевидна. В случае работы с MAC следует проявлять особую бдительность и следить за всеми «связями» модулей.
Далее рассмотрим подробнее особенности проектирования при трех парадигмах обработки мандатных меток. Для этого мы набросали классификацию от простого случая к сложному. Данная классификация несет сугубо практический и прикладной характер. Она исходит из интуитивно ощутимых различий при разработке тех или иных модулей, а на практике показала свою действенность.
Классификация модулей по режимам обработки MAC
«BRING IT ON»: работа модуля в режиме минимальной мандатной метки
Мотивация для реализации данного механизма в модуле:
- Модуль обрабатывает информацию, которая в принципе не может обрабатываться в системе с другими мандатными метками, и не требует особых привилегий для чтения/записи.
- Модуль сильно связан с инфраструктурой ОС, которая ограничивает его функционирование в режиме мандатной метки, отличной от минимальной.
Модуль, функционирующий в данном режиме, должен проверять мандатную метку процесса. Если метка процесса, в котором выполняется данный модуль, отличается от минимальной (например, не равна 0 мандатной метке), выполнение всех операций (кроме просмотра) должно быть запрещено на уровне бизнес-логики приложения. То есть мы можем просто не пустить пользователя к использованию данного модуля, если он пришел к нам в сеансе мандатной метки, отличной от нулевой.
Примеры практических кейсов, для которых подходит использование режима минимальной мандатной метки:
- Управление учетными записями пользователей в хранилище приложения. Например, если приложение ведет собственный учет УЗ в файле или БД. Все данные, касающиеся безопасности и управления доступом к приложению, обязательно должны храниться в режиме минимальной мандатной метки, иначе модель безопасности приложения будет попросту «рассыпаться» при выполнении приложения в режиме повышенной мандатной метки. Именно по этой причине все системные приложения запускаются строго под минимальной мандатной меткой.
- Управление правами доступа. Например, если в приложении реализована собственная модель разграничения доступа на уровне бизнес-логики.
- Управление параметрами конфигурации приложения, которые должны быть доступны под всеми мандатными метками.
- Управление учетными записями в ОС. Если приложению требуется управлять какими-либо атрибутами УЗ в ОС, все операции должны выполняться строго под минимальной мандатной меткой.
«HURT ME PLENTY»: работа модуля в режиме одной мандатной метки
Этот кейс чуть сложнее, но во многом похож на случай с минимальной мандатной меткой. С точки зрения пользователя работа с приложением меняется не сильно: все те же привычные списки записей, карточки и операции «Просмотр», «Редактировать» и «Сохранить». С той лишь разницей, что в данном режиме пользователь видит только те записи, которые соответствуют мандатной метке его текущего сеанса.
Также может быть разработан ограниченный вариант: в модуле фиксируется значение параметра «мандатной метки по умолчанию». В этом случае эксплуатация модуля возможна только с указанной мандатной меткой, но данный вариант проще в реализации.
Данный кейс может быть полезен в следующих случаях:
- Была допущена ошибка в архитектуре при проектировании модуля (не были заложены особенности обработки записей в MAC), и нет ни времени, ни ресурсов все переписывать.
- Поддержка мандатной модели управления доступом вводится в уже функционирующее приложение, и в соответствии с требованиями необходимо обеспечить работу с меткой выше минимальной в ОС. Да, это тот самый случай, когда к вам приходит руководитель и сообщает с радостью, что мы выиграли конкурс и будем внедрять наше решение в «наименование секретного ведомства»!
- Нет целесообразности в реализации полной поддержки одновременной обработки записей нескольких мандатных меток. Нет необходимости в одновременной обработки записей сразу нескольких мандатных меток.
- Приложение функционирует в однопользовательском режиме.
C точки зрения реализации данный кейс не является очень простым, так как нам необходимо:
- Выбирать только те записи, которые соответствуют текущей мандатной метке, так как в соответствии с моделью Белла – Лападулы пользователь будет видеть записи текущей мандатной метки и всех мандатных меток, расположенных ниже по иерархии.
- Проверять мандатную метку перед выполнением какой-либо операции внесения изменений в запись. При попытке внести изменение в запись с мандатной меткой, отличающейся от мандатной метки сеанса, выполнение операции должно быть прервано.
При выполнении операций в модуле рекомендуется сверять мандатную метку текущего процесса приложения с мандатной меткой по умолчанию. Если мандатная метка модуля не соответствует мандатной метке сеанса, то пользователь не должен быть допущен к выполнению операции.
Примеры практических кейсов, для которых подходит использование режима одной мандатной метки:
- Расписание. Например, для нескольких мандатных меток формируются отдельные расписания (работы сотрудников, графики и т.д.). В каждом из сеансов из перечня допустимых мандатных меток отображается свое расписание, и добавление информации по другим мандатным меткам усложнит восприятие и создаст пространство для дополнительных ошибок. Внесение изменений в расписание производится также в сеансе только своей мандатной метки.
- Мессенджер. Сообщение, отправленное в сеансе вышестоящей мандатной метки, не будет доступно получателю (или получателям) в сеансе нижестоящей мандатной метки. Поэтому логично «расслоить» мессенджер на различные сеансы, где у каждого адресата будет несколько «каналов общения», отдельный «канал» под каждую мандатную метку.
«NIGHTMARE!»: работа модуля в режиме нескольких мандатных меток
Данный режим работы полезен только в том случае, когда в одном сеансе работы с модулем нам необходимо отображать информацию по всем мандатным меткам, расположенным ниже мандатной метки текущего сеанса по иерархии.
При проектировании необходимо описать функциональные требования к модулю, а в детализации каждого функционального требования указать перечень взаимодействий в части мандатной модели (возможные варианты рассмотрены ниже в разделе «Взаимодействие приложения с окружающей средой»). Это позволит выделить какие-то общие концепции взаимодействия с инфраструктурой в части мандатных меток. Также эта информация будет крайне полезна для оценки сложности разработки и при дальнейшем тестировании.
С точки зрения реализации пользовательского интерфейса обычно используются следующие шаблоны:
- Перечень (таблица, коллекция) записей с кнопками выполнения операций над выбранной записью (выбранными записями). Приложение на уровне интерфейса должно сверять, может ли быть выполнена операция над выбранной коллекцией записей.
- Разрешение/запрещение редактирования записи/файла с мандатной меткой, отличной от мандатной метки текущего процесса.
- Получение коллекции записей/файлов с определенной мандатной меткой (фильтрация обрабатываемых данных на основе мандатной метки).
Дальнейший набор бизнес-процессов зависит от сложности бизнес-логики модуля и специфики обработки данных. Например, можно сделать фильтрацию коллекции записей по мандатной метке. Можно вывести мандатную метку записи в интерфейсе.
Простор комбинаций огромнейший, как и пространство для появления ошибок. Поэтому не рекомендуется обрабатывать в рамках одного юзкейса записи с различной мандатной меткой при наличии какой-либо бизнес-логики. Любые операции с коллекцией записей должны производиться с явным указанием мандатной метки, общей для всей коллекции. Обработали третью метку, затем вторую, и т.д.
Для реализации такого режима необходимо заложить следующие функции:
- Функция получение мандатной метки текущего процесса приложения (сеанса пользователя).
- Функция получения мандатной метки записи (если речь идет о работе с записью в БД) или файла (если речь идет об обработке файлов).
- Функция получения мандатной метки записей БД/файлов в коллекции.
Примеры практических кейсов, для которых годится режим нескольких мандатных меток:
- Отчетность. Для реализации данного кейса нам необходимо аккумулировать максимум информации по системе, которая доступна для сеанса с текущей мандатной меткой.
- Журнал. В этом случае разрабатывается интерфейс просмотра всех доступных для просмотра операций с возможностью фильтрации, в том числе и по мандатной метке.
Взаимодействие приложения с окружающей средой
Приложение в среде с MAC взаимодействует с определенным перечнем окружающих его компонентов. Схематично по особенностям взаимодействия их можно классифицировать так:
- Операционная система:
- Параметры мандатной модели:
- Иерархия мандатных меток ОС;
- Мандатные разрешения (диапазоны меток, которые может использовать определенный пользователь) УЗ пользователей ОС.
- Хранилище учетных данных пользователей;
- Аутентификация в ОС (в том числе с учётом мандатной метки);
- Другие механизмы управления доступом (дискреционные POSIX ACL, UNIX и т.д.);
- Работа с ФС;
- Управление процессами;
- Работа с сетью;
- Параметры мандатной модели:
- Стороннее ПО без поддержки MAC;
- Стороннее ПО с поддержкой MAC:
- СУБД (например, PostgreSQL):
- Объекты БД (ячейки, строки, столбцы, схемы, таблицы, БД, кластеры, последовательности, функции и т.д.).
- СУБД (например, PostgreSQL):
- Пользователь.
Нюансы взаимодействия с каждым из компонентов рассмотрим отдельно.
Взаимодействие MAC-совместимого приложения с операционной системой
MAC очень «радует» своими трудностями по настройке правил доступа в файловой системе. Например, львиная доля ошибок в приложениях с MAC связана именно с тем, что приложение в режиме текущей мандатной метки не видит файл, но файл при этом существует в режиме другой мандатной метки (уровнем выше).
Чего мы ожидаем от операционной системы в части MAC?
Если наше приложение работает в многопользовательском режиме, то ему наверняка потребуется запрашивать информацию об учетных записях пользователей, данные которых оно обрабатывает. Это необходимо для поддержки разграничения доступа пользователей. Поэтому приложению потребуется запрашивать у ОС информацию о мандатных разрешениях пользователей. Если УЗ пользователя в ОС управляется нашим приложением, тогда нам потребуется не только читать информацию об УЗ, но и управлять атрибутами УЗ.
Наиболее вероятные потоки взаимодействий ОС и приложения изображены на схеме:
Взаимодействие MAC-совместимого приложения со сторонним ПО без поддержки MAC
Большая часть приложений, которые могут использоваться в ОС с MAC, не умеют обрабатывать MAC.
Поэтому при организации такого взаимодействия требуется эмулировать мандатную метку при передаче данных или запроса процессу такого приложения. Реализуется это путем «расслоения» потока данных на отдельные каналы, каждый из которых логически предназначен для данных с определенной мандатной меткой. Смешивать такие данные категорически запрещается, они должны идти по отдельным очередям, каналам и чуть ли не по отдельным
жилам витых пар
сетевым интерфейсам. Правомерность «логической» реализации разделения данных по MAC тоже является неоднозначным вопросом, поэтому чаще всего лежит на совести заказчика и разработчика приложения.
Возможность использования приложения без MAC приложением, работающим в режиме MAC, зависит от выбранного способа взаимодействия, его специфики, и особенностей реализации обработки поступающих данных внутри приложения.
Взаимодействие MAC-совместимого приложения со сторонним ПО с поддержкой MAC
В случае взаимодействия с ПО с поддержкой MAC наше приложение должно явно уметь считывать метку процесса, который осуществляет запрос, и выполнять операцию в соответствии с мандатной моделью управления доступом. От приложения, взаимодействующего с таким ПО, требуется только лишь выполнение запросов к стороннему приложению/процессу из процесса с корректной мандатной меткой.
Пример популярного приложения с полноценной поддержкой мандатных меток — СУБД PostgresSQL. В определенных вариантах поставки данной СУБД реализована полная поддержка MAC под некоторые ОС с механизмами MAC, например:
- Astra Linux: PostgreSQL, идущий в поставке дистрибутива версии SE.
- SELinux: расширение sepgsql.
PostgreSQL позволяет разделять данные по мандатным меткам (есть еще поддержка мандатных категорий, но нас интересуют метки) на следующих уровнях:
- На уровне кластера.
- На уровне БД кластера.
- На уровне схемы БД кластера.
- На уровне таблицы схемы БД кластера.
- На уровне столбца таблицы схемы БД кластера.
- На уровне записи таблицы схемы БД кластера.
В результате в реализации MAC получается такая «матрешка»: каждый «родительский» уровень накладывает свои ограничения на все «дочерние» уровни. Поэтому при реализации взаимодействия с каждым подобным приложением с полноценной поддержкой MAC требуется учитывать его специфику работы. Универсальных рецептов нет.
Взаимодействие MAC-совместимого приложения с пользователем
Каким бы странным ни выглядел данный аспект взаимодействия по сравнению с рассмотренными ранее, но не остановиться на нем нельзя. Ведь именно для пользователя чаще всего строятся приложения с поддержкой MAC, не так ли?
Приложение с поддержкой MAC практически ничем не отличается от такового без MAC в части пользовательского интерфейса во всех режимах, за исключением режима одновременной работы с несколькими мандатными метками.
На примере распространенных сегодня веб-приложений чаще всего встречаются следующие кейсы:
Выводы
Мы рассмотрели несколько аспектов разработки приложения с поддержкой MAC. Все случаи предусмотреть, разумеется, сложно. Большая часть особенностей мандатной модели зависит от реализации, доступной для применения в выбранной ОС.
Поддержка MAC приложением — это не дополнительная «фича» приложения. Это серьезное архитектурное решение, требующее планирования и проектирования. Наибольшая «боль» для проектировщика MAC-совместимого приложения:
- взаимодействие с инфраструктурой ОС (файловая система, сетевые взаимодействия, запуск процессов с нужной мандатной меткой в случае выполнения приложения на сервере);
- взаимодействие с прикладным ПО с встроенной поддержкой MAC (например, СУБД);
- взаимодействие с пользователем в части корректной обработки MAC-совместимых операций.
На этом пока все! Дополнения, личный опыт и комментарии к статье приветствуются!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Сталкивались ли вы с MAC в своей профессиональной деятельности?
26.67%
Да, теперь снится в кошмарах
4
26.67%
Да, но очень ограниченно, не удалось насладиться
4
20%
Нет, но скоро предстоит что-нибудь разработать
3
26.67%
Нет и не планирую
4
Проголосовали 15 пользователей.
Воздержались 4 пользователя.
From Wikipedia, the free encyclopedia
In computer security, mandatory access control (MAC) refers to a type of access control by which the operating system or database constrains the ability of a subject or initiator to access or generally perform some sort of operation on an object or target.[1] In the case of operating systems, a subject is usually a process or thread; objects are constructs such as files, directories, TCP/UDP ports, shared memory segments, IO devices, etc. Subjects and objects each have a set of security attributes. Whenever a subject attempts to access an object, an authorization rule enforced by the operating system kernel examines these security attributes and decides whether the access can take place. Any operation by any subject on any object is tested against the set of authorization rules (aka policy) to determine if the operation is allowed. A database management system, in its access control mechanism, can also apply mandatory access control; in this case, the objects are tables, views, procedures, etc.
With mandatory access control, this security policy is centrally controlled by a security policy administrator; users do not have the ability to override the policy and, for example, grant access to files that would otherwise be restricted. By contrast, discretionary access control (DAC), which also governs the ability of subjects to access objects, allows users the ability to make policy decisions and/or assign security attributes. (The traditional Unix system of users, groups, and read-write-execute permissions is an example of DAC.) MAC-enabled systems allow policy administrators to implement organization-wide security policies. Under MAC (and unlike DAC), users cannot override or modify this policy, either accidentally or intentionally. This allows security administrators to define a central policy that is guaranteed (in principle) to be enforced for all users.
Historically and traditionally, MAC has been closely associated with multilevel security (MLS) and specialized military systems. In this context, MAC implies a high degree of rigor to satisfy the constraints of MLS systems. More recently, however, MAC has deviated out of the MLS niche and has started to become more mainstream. The more recent MAC implementations, such as SELinux and AppArmor for Linux and Mandatory Integrity Control for Windows, allow administrators to focus on issues such as network attacks and malware without the rigor or constraints of MLS.
Historical background and implications for multilevel security[edit]
Historically, MAC was strongly associated with multilevel security (MLS) as a means of protecting US classified information. The Trusted Computer System Evaluation Criteria (TCSEC), the seminal work on the subject and often known as the Orange Book, provided the original definition of MAC as «a means of restricting access to objects based on the sensitivity (as represented by a label) of the information contained in the objects and the formal authorization (i.e., clearance) of subjects to access information of such sensitivity».[2] Early implementations of MAC such as Honeywell’s SCOMP, USAF SACDIN, NSA Blacker, and Boeing’s MLS LAN focused on MLS to protect military-oriented security classification levels with robust enforcement.
The term mandatory in MAC has acquired a special meaning derived from its use with military systems. In this context, MAC implies an extremely high degree of robustness that assures that the control mechanisms can resist any type of subversion, thereby enabling them to enforce access controls that are mandated by order of a government such as the Executive Order 12958 for US classified information. Enforcement is supposed to be more imperative than for commercial applications. This precludes enforcement by best-effort mechanisms; only mechanisms that can provide absolute or near-absolute enforcement of the mandate are acceptable for MAC. This is a tall order and sometimes assumed unrealistic by those unfamiliar with high assurance strategies, and very difficult for those who are.
Strength[edit]
Degrees[edit]
In some systems, users have the authority to decide whether to grant access to any other user. To allow that, all users have clearances for all data. This is not necessarily true of an MLS system. If individuals or processes exist that may be denied access to any of the data in the system environment, then the system must be trusted to enforce MAC. Since there can be various levels of data classification and user clearances, this implies a quantified scale for robustness. For example, more robustness is indicated for system environments containing classified Top Secret information and uncleared users than for one with Secret information and users cleared to at least Confidential. To promote consistency and eliminate subjectivity in degrees of robustness, an extensive scientific analysis and risk assessment of the topic produced a landmark benchmark standardization quantifying security robustness capabilities of systems and mapping them to the degrees of trust warranted for various security environments. The result was documented in CSC-STD-004-85.[3] Two relatively independent components of robustness were defined: Assurance Level and Functionality. Both were specified with a degree of precision that warranted significant confidence in certifications based on these criteria.
Evaluation[edit]
The Common Criteria[4] is based on this science and it intended to preserve the Assurance Level as EAL levels and the functionality specifications as Protection Profiles. Of these two essential components of objective robustness benchmarks, only EAL levels were faithfully preserved. In one case, TCSEC level C2[5] (not a MAC capable category) was fairly faithfully preserved in the Common Criteria, as the Controlled Access Protection Profile (CAPP).[6] Multilevel security (MLS) Protection Profiles (such as MLSOSPP similar to B2)[7] is more general than B2. They are pursuant to MLS, but lack the detailed implementation requirements of their Orange Book predecessors, focusing more on objectives. This gives certifiers more subjective flexibility in deciding whether the evaluated product’s technical features adequately achieve the objective, potentially eroding consistency of evaluated products and making it easier to attain certification for less trustworthy products. For these reasons, the importance of the technical details of the Protection Profile is critical to determining the suitability of a product.
Such an architecture prevents an authenticated user or process at a specific classification or trust-level from accessing information, processes, or devices in a different level. This provides a containment mechanism of users and processes, both known and unknown (an unknown program (for example) might comprise an untrusted application where the system should monitor and/or control accesses to devices and files).
Implementations[edit]
A few MAC implementations, such as Unisys’ Blacker project, were certified robust enough to separate Top Secret from Unclassified late in the last millennium. Their underlying technology became obsolete and they were not refreshed. Today there are no current implementations certified by TCSEC to that level of robust implementation. However, some less robust products exist.
- Amon Ott’s RSBAC (Rule Set Based Access Control) provides a framework for Linux kernels that allows several different security policy / decision modules. One of the models implemented is Mandatory Access Control model. A general goal of RSBAC design was to try to reach (obsolete) Orange Book (TCSEC) B1 level. The model of mandatory access control used in RSBAC is mostly the same as in Unix System V/MLS, Version 1.2.1 (developed in 1989 by the National Computer Security Center of the USA with classification B1/TCSEC). RSBAC requires a set of patches to the stock kernel, which are maintained quite well by the project owner.
- TOMOYO Linux is a lightweight MAC implementation for Linux and Embedded Linux, developed by NTT Data Corporation. It has been merged in Linux Kernel mainline version 2.6.30 in June 2009.[8] Differently from the label-based approach used by SELinux, TOMOYO Linux performs a pathname-based Mandatory Access Control, separating security domains according to process invocation history, which describes the system behavior. Policy are described in terms of pathnames. A security domain is simply defined by a process call chain, and represented by a string. There are 4 modes: disabled, learning, permissive, enforcing. Administrators can assign different modes for different domains. TOMOYO Linux introduced the «learning» mode, in which the accesses occurred in the kernel are automatically analyzed and stored to generate MAC policy: this mode could then be the first step of policy writing, making it easy to customize later.
- SUSE Linux and Ubuntu 7.10 have added a MAC implementation called AppArmor. AppArmor utilizes a Linux 2.6 kernel feature called LSM (Linux Security Modules interface). LSM provides a kernel API that allows modules of kernel code to govern ACL (DAC ACL, access-control lists). AppArmor is not capable of restricting all programs and is optionally in the Linux kernel as of version 2.6.36.[9]
- Linux and many other Unix distributions have MAC for CPU (multi-ring), disk, and memory; while OS software may not manage privileges well, Linux became famous during the 1990s as being more secure and far more stable than non-Unix alternatives. Linux distributors disable MAC to being at best DAC for some devices – although this is true for any consumer electronics available today.
- Android since its 5.0 release has used SELinux to enforce a MAC security model on top of its original UID-based DAC approach.[10]
- grsecurity is a patch for the Linux kernel providing a MAC implementation (precisely, it is an RBAC implementation). grsecurity is not implemented via the LSM API.[11]
- Microsoft Starting with Windows Vista and Server 2008 Windows incorporates Mandatory Integrity Control, which adds Integrity Levels (IL) to processes running in a login session. MIC restricts the access permissions of applications that are running under the same user account and which may be less trustworthy. Five integrity levels are defined: Low, Medium, High, System, and Trusted Installer.[12] Processes started by a regular user gain a Medium IL; elevated processes have High IL.[13] While processes inherit the integrity level of the process that spawned it, the integrity level can be customized on a per-process basis: e.g. IE7 and downloaded executables run with Low IL. Windows controls access to objects based on ILs, as well as for defining the boundary for window messages via User Interface Privilege Isolation. Named objects, including files, registry keys or other processes and threads, have an entry in the ACL governing access to them that defines the minimum IL of the process that can use the object. MIC enforces that a process can write to or delete an object only when its IL is equal to or higher than the object’s IL. Furthermore, to prevent access to sensitive data in memory, processes can’t open processes with a higher IL for read access.[14]
- FreeBSD supports Mandatory Access Control, implemented as part of the TrustedBSD project. It was introduced in FreeBSD 5.0. Since FreeBSD 7.2, MAC support is enabled by default. The framework is extensible; various MAC modules implement policies such as Biba and multilevel security.
- Sun’s Trusted Solaris uses a mandatory and system-enforced access control mechanism (MAC), where clearances and labels are used to enforce a security policy. However note that the capability to manage labels does not imply the kernel strength to operate in multilevel security mode[citation needed]. Access to the labels and control mechanisms are not[citation needed] robustly protected from corruption in protected domain maintained by a kernel. The applications a user runs are combined with the security label at which the user works in the session. Access to information, programs and devices are only weakly controlled[citation needed].
- Apple’s Mac OS X MAC framework is an implementation of the TrustedBSD MAC framework.[15] A limited high-level sandboxing interface is provided by the command-line function sandbox_init. See the sandbox_init manual page for documentation.[16]
- Astra Linux OS developed for Russian Army has its own mandatory access control.[17]
- Smack (Simplified Mandatory Access Control Kernel) is a Linux kernel security module that protects data and process interaction from malicious manipulation using a set of custom mandatory access control rules, with simplicity as its main design goal.[18] It has been officially merged since the Linux 2.6.25 release.[19]
See also[edit]
- Bell–LaPadula model
- Access-control list
- Attribute-based access control (ABAC)
- Context-based access control (CBAC)
- Discretionary access control (DAC)
- Lattice-based access control (LBAC)
- Organisation-based access control (OrBAC)
- Role-based access control (RBAC)
- Rule-set-based access control (RSBAC)
- Capability-based security
- Location-based authentication
- Risk-based authentication
- Clark–Wilson model
- Classified information
- Graham–Denning model
- Mandatory Integrity Control
- Multiple single-level
- Security modes
- Smack (software)
- Systrace
- Take-grant protection model
- Type enforcement
Footnotes[edit]
- ^ Belim, S. V.; Belim, S. Yu. (December 2018). «Implementation of Mandatory Access Control in Distributed Systems». Automatic Control and Computer Sciences. 52 (8): 1124–1126. doi:10.3103/S0146411618080357. ISSN 0146-4116. S2CID 73725128.
- ^ «Trusted Computer Evaluation Criteria» (PDF). National Institute of Standards and Technology. 15 August 1983. Archived (PDF) from the original on 13 April 2023. Retrieved 25 June 2023.
- ^ «Technical Rational Behind CSC-STD-003-85: Computer Security Requirements». 1985-06-25. Archived from the original on July 15, 2007. Retrieved 2008-03-15.
- ^ «The Common Criteria Portal». Archived from the original on 2006-07-18. Retrieved 2008-03-15.
- ^ US Department of Defense (December 1985). «DoD 5200.28-STD: Trusted Computer System Evaluation Criteria». Retrieved 2008-03-15.
- ^ «Controlled Access Protection Profile, Version 1.d». National Security Agency. 1999-10-08. Archived from the original on 2012-02-07. Retrieved 2008-03-15.
- ^ «Protection Profile for Multi-Level Operating Systems in Environments Requiring Medium Robustness, Version 1.22» (PDF). National Security Agency. 2001-05-23. Retrieved 2018-10-06.
- ^ «TOMOYO Linux, an alternative Mandatory Access Control». Linux 2 6 30. Linux Kernel Newbies.
- ^ «Linux 2.6.36 released 20 October 2010». Linux 2.6.36. Linux Kernel Newbies.
- ^ «Security-Enhanced Linux in Android». Android Open Source Project. Archived from the original on 19 June 2023. Retrieved 25 June 2023.
- ^ «Why doesn’t grsecurity use LSM?».
- ^ Matthew Conover. «Analysis of the Windows Vista Security Model». Symantec Corporation. Archived from the original on 2008-03-25. Retrieved 2007-10-08.
- ^ Steve Riley. «Mandatory Integrity Control in Windows Vista». Retrieved 2007-10-08.
- ^ Mark Russinovich. «PsExec, User Account Control and Security Boundaries». Retrieved 2007-10-08.
- ^ TrustedBSD Project. «TrustedBSD Mandatory Access Control (MAC) Framework». Retrieved 2008-03-15.
- ^ «sandbox_init(3) man page». 2007-07-07. Retrieved 2008-03-15.
- ^ (in Russian) Ключевые особенности Astra Linux Special Edition по реализации требований безопасности информации Archived 2014-07-16 at the Wayback Machine
- ^ «Official SMACK documentation from the Linux source tree». Archived from the original on 2013-05-01.
- ^ Jonathan Corbet. «More stuff for 2.6.25». Archived from the original on 2012-11-02.
References[edit]
- P. A. Loscocco, S. D. Smalley, P. A. Muckelbauer, R. C. Taylor, S. J. Turner, and J. F. Farrell. The Inevitability of Failure: The Flawed Assumption of Security in Modern Computing Environments. In Proceedings of the 21st National Information Systems Security Conference, pages 303–314, Oct. 1998.
- P. A. Loscocco, S. D. Smalley, Meeting Critical Security Objectives with Security-Enhanced Linux Archived 2017-07-08 at the Wayback Machine Proceedings of the 2001 Ottawa Linux Symposium.
- ISO/IEC DIS 10181-3, Information Technology, OSI Security Model, Security FrameWorks, Part 3: Access Control, 1993
- Robert N. M. Watson. «A decade of OS access-control extensibility». Commun. ACM 56, 2 (February 2013), 52–63.
External links[edit]
- Weblog post on the how virtualization can be used to implement Mandatory Access Control.
- Weblog post from a Microsoft employee detailing Mandatory Integrity Control and how it differs from MAC implementations.
- GWV Formal Security Policy Model A Separation Kernel Formal Security Policy, David Greve, Matthew Wilding, and W. Mark Vanfleet.
Статья о разграничении прав доступа в операционных системах Windows: дискретном и мандатном. В статье рассматриваются разграничения прав доступа к папкам и файлам на уровне операционной системы Windows и с помощью Secret Net.
Содержание:
- Разграничение прав доступа на уровне операционной системы (дискретное разграничение в Windows)
- Разграничение прав доступа с помощью Secret Net
Дискретное разграничение прав доступа
Для того, что бы настроить правила безопасности для папок нужно воспользоваться вкладкой «Безопасность». В Windows XP эта вкладка отключена по умолчанию. Для ее активации нужно зайти в свойства папки (Меню «Сервис» -> «Свойства папки» -> «Вид») и снять флажок «Использовать простой общий доступ к файлам».
Основные права доступа к папкам
В файловой системе NTFS в Windows XP существует шесть стандартных разрешений:
- Полный доступ;
- Изменить;
- Чтение и выполнение;
- Список содержимого папки;
- Чтение;
- Запись.
В Windows 10 нет стандартного разрешения «Список содержимого папки».
Эти разрешения могут предоставляться пользователю (или группе пользователей) для доступа к папкам и файлам. При этом право «Полный доступ» включат в себя все перечисленные права, и позволяет ими управлять.
Права доступа назначаются пользователю для каждого объекта (папки и файла). Для назначения прав нужно открыть меню «Свойства» и выбрать вкладку «Безопасность». После этого выбрать необходимо пользователя, которому будут назначаться разрешения.
Создайте папки по названиям разрешений, всего у вас будет 6 папок для Windows XP и для Windows 10. Я рассмотрю на примере Windows XP, на «десятке» вам будет проще. Скачайте папки по ссылке и скопируйте в них содержимое (не сами папки, а то, что в них находится).
Отройте вкладку «Безопасность» в свойствах папки «Список содержимого папки». У меня есть пользователь user, вы можете добавить своего. Для того, что бы изменить право на объект нужно выбрать пользователя и указать ему разрешение, в данном случае «Список содержимого папки». Затем нажмите «Применить» и «ОК».
По аналогии установите права для соответствующих папок.
После установки прав доступа проверьте их. Для этого войдите в операционную систему под пользователем, для которого устанавливали права, в моем случае это user.
«Список содержимого папки» — предоставляет возможность просмотра файлов и папок в текущем каталоге. То есть вы можете посмотреть, что есть в папке, но запустить и открыть ничего не получиться.
«Чтение» — предоставляет возможность открывать в папке все файлы, кроме исполняемых файлов (например, с расширением .exe).
«Чтение и выполнение» — предоставляет возможность открывать в данном каталоге все файлы.
«Запись» — предоставляет возможность добавления файлов в папку без права на доступ к вложенным в него объектам, в том числе на просмотр содержимого каталога.
«Изменить» — предоставляет возможность открывать и создавать (изменять) файлы в папке.
«Полный доступ» — предоставляет все возможности для работы с папкой и вложенными файлами, включая изменение разрешений.
Откройте каждую папку и проверьте, что разрешения выполняются.
Элементы разрешений на доступ
Каждое разрешение состоит из нескольких элементов, которые позволяют более гибко настраивать систему безопасности. Войдите в операционную систему под учетной записью администратора.
Просмотреть элементы разрешений на доступ можно, нажав на кнопку «Дополнительно» во вкладке «Безопасность» и выбрав любой элемент разрешений.
Поэкспериментируйте с элементами и проверьте, как они работаю.
Владелец файла
В файловой системе NTFS у каждого файла есть свой владелец. Владельцем файла является пользователь операционной системы. Он может управлять разрешениями на доступ к объекту независимо от установленных разрешений.
Узнать, какой пользователь является владельцем файла или папки можно на закладке «Владелец» в дополнительных параметрах безопасности.
Наследование прав доступа
В файловой системе NTFS поддерживается наследование разрешений. Если вы устанавливаете разрешение на папку, то оно наследуется для всех вложенных файлов и папок.
При любых изменениях разрешений на родительскую папку они меняются в дочерних (вложенных) файлах и каталогах.
Для изменения унаследованных разрешений нужно открыть вкладку «Разрешения» в дополнительных параметрах безопасности. Там же можно отключить наследование разрешений.
Запреты
Кроме установки разрешений в файловых системах можно устанавливать запреты. Например, вы можете разрешить чтение и выполнение, но запретить запись. Таким образом, пользователь для которого установлен запрет и разрешения сможет запустить исполняемый файл или прочитать текстовый, но не сможет отредактировать и сохранить текстовый файл.
В дополнительных параметрах безопасности можно посмотреть действующие разрешения и для конкретного пользователя.
Разграничение прав доступа с помощью Secret Net (на примере версии 5.1)
При использовании Secret Net доступ к файлам осуществляется, в случае если пользователю присваивается соответствующий уровень допуска. В примере я использую Windows XP с установленным программным продуктом Secret Net 5.1.
Первым делом нужно запустить локальные параметры безопасности от имени Администратора: «Пуск –> Программы –> Secret Net 5 –> Локальная политика безопасности».
Далее необходимо перейти в «Параметры Secret Net» –> «Настройка подсистем» –> «Полномочное управление доступом: название уровней конфиденциальности».
Введите названия уровней. У меня это:
- Низший – Общедоступно.
- Средний – Конфиденциально.
- Высший – Секретно.
Настройка субъектов
Настройка субъектов в Secret Net производится в группе «Локальные пользователи и группы». Зайдите в меню «Пуск» –> «Программы» –> «Secret Net 5» –> «Управление компьютером» –> «Локальные пользователи и группы» –> «Пользователи».
Что бы настроить права администратора нужно выбрать учетную запись «Администратор» и перейти на вкладку Secret Net 5. Установим уровень доступа «секретно».
Далее установите все флажки.
- Управление категориями конфиденциальности означает, что пользователь имеет право изменять категории конфиденциальности папок и файлов, а так же может управлять режимом наследования категорий конфиденциальности папок.
- Печать конфиденциальных документов означает, что пользователь может распечатывать конфиденциальные документы. Данная возможность появляется, если включен контроль печати конфиденциальных документов.
- Вывод конфиденциальной информации означает, что пользователь может копировать конфиденциальную информацию на внешние носители.
После установки всех флажков нажмите «Применить» и «ОК».
Создадим нового пользователя. Для этого нужно перейти «Локальные пользователи и Группы» –> «Пользователи». Создайте новых пользователей, я назову их «Конфиденциальный» и «Секретный». По аналогии с пользователем Администратор установите для новых пользователей аналогичные уровни доступа и настройки как на рисунках ниже.
Настройка объектов
Та или иная категория конфиденциальности является атрибутом папки или файла. Изменения этих атрибутов производятся уполномоченными пользователями (в данном случае Администратором). Категория конфиденциальности может присваиваться новым файлам или папкам автоматически или по запросу.
Автоматическое присваивание категории конфиденциальности можно включить или отключить в окне настройки свойств папки. Этот параметр может редактировать только пользователь, у которого есть права на «Редактирование категорий конфиденциальности».
При этом стоит учесть, что категории конфиденциальности могут назначаться только папка и файлам в файловой системе NTFS. В случае если у пользователя нет такой привилегии, он может только повысить категорию конфиденциальности и только не выше своего уровня.
Попробуйте создать в паке новый файл или каталог, а после чего изменить ее уровень (повысить) и установить флажок «Автоматически присваивать новым файлам». У вас появиться окно «Изменение категорий конфиденциальности».
Выберите пункт «Присвоение категорий конфиденциальности всем файлам в каталоге» и нажмите «ОК» для присвоения категории конфиденциальности всем файлам кроме скрытых и системных файлов.
В случае если категория допуска пользователя выше чем категория конфиденциальности объект, то пользователь имеет право на чтение документа, но не имеет права изменять и сохранять документ.
Если пользователь с категорией «Общедоступно» попробует прочитать или удалить документ, то он получит соответствующие ошибки.
То есть пользователь не может работать с документами, у которых уровень конфиденциальности выше, чем у него.
Если вы зайдете под пользователем «Секретный» то вы сможете повысить уровень конфиденциальности файлов и работать с ними.
Не стоит забывать, что конфиденциальные файлы нельзя копировать в общедоступные папки, чтобы не допустить их утечки.
Контроль потоков данных
Контроль потоков данных используется для того, что бы запретить пользователям возможность понижения уровня конфиденциальности файлов.
Для этого нужно запустить «Локальные параметры безопасности»: «Пуск» – «Программы» –> «Secret Net 5» –> «Локальная политика безопасности», затем перейти в группу «Параметры Secret Net» –> «Настройки подсистем» и выбрать параметр «Полномочное управление доступом: Режим работы» и включить контроль потоков. Изменения вступят в силу после перезагрузки компьютера.
Если зайти (после перезагрузки) под пользователем «Секретный» появиться выбор уровня конфиденциальности для текущего сеанса. Выберите секретный уровень.
Если вы откроете файл с уровнем «Конфиденциально», отредактируете его и попробуете сохранить под другим именем и в другую папку, то вы получите ошибку, так как уровень сеанса (секретный) выше, чем уровень файла (конфиденциальный) и включен контроль потоков данных.
На этом все, если у вас остались вопросы задавайте их в комментариях.
Статья о разграничении прав доступа в операционных системах Windows: дискретном и мандатном. В статье рассматриваются разграничения прав доступа к папкам и файлам на уровне операционной системы Windows и с помощью Secret Net.
Содержание:
- Разграничение прав доступа на уровне операционной системы (дискретное разграничение в Windows)
- Разграничение прав доступа с помощью Secret Net
Дискретное разграничение прав доступа
Для того, что бы настроить правила безопасности для папок нужно воспользоваться вкладкой «Безопасность». В Windows XP эта вкладка отключена по умолчанию. Для ее активации нужно зайти в свойства папки (Меню «Сервис» -> «Свойства папки» -> «Вид») и снять флажок «Использовать простой общий доступ к файлам».
Основные права доступа к папкам
В файловой системе NTFS в Windows XP существует шесть стандартных разрешений:
- Полный доступ;
- Изменить;
- Чтение и выполнение;
- Список содержимого папки;
- Чтение;
- Запись.
В Windows 10 нет стандартного разрешения «Список содержимого папки».
Эти разрешения могут предоставляться пользователю (или группе пользователей) для доступа к папкам и файлам. При этом право «Полный доступ» включат в себя все перечисленные права, и позволяет ими управлять.
Права доступа назначаются пользователю для каждого объекта (папки и файла). Для назначения прав нужно открыть меню «Свойства» и выбрать вкладку «Безопасность». После этого выбрать необходимо пользователя, которому будут назначаться разрешения.
Создайте папки по названиям разрешений, всего у вас будет 6 папок для Windows XP и для Windows 10. Я рассмотрю на примере Windows XP, на «десятке» вам будет проще. Скачайте папки по ссылке и скопируйте в них содержимое (не сами папки, а то, что в них находится).
Отройте вкладку «Безопасность» в свойствах папки «Список содержимого папки». У меня есть пользователь user, вы можете добавить своего. Для того, что бы изменить право на объект нужно выбрать пользователя и указать ему разрешение, в данном случае «Список содержимого папки». Затем нажмите «Применить» и «ОК».
По аналогии установите права для соответствующих папок.
После установки прав доступа проверьте их. Для этого войдите в операционную систему под пользователем, для которого устанавливали права, в моем случае это user.
«Список содержимого папки» — предоставляет возможность просмотра файлов и папок в текущем каталоге. То есть вы можете посмотреть, что есть в папке, но запустить и открыть ничего не получиться.
«Чтение» — предоставляет возможность открывать в папке все файлы, кроме исполняемых файлов (например, с расширением .exe).
«Чтение и выполнение» — предоставляет возможность открывать в данном каталоге все файлы.
«Запись» — предоставляет возможность добавления файлов в папку без права на доступ к вложенным в него объектам, в том числе на просмотр содержимого каталога.
«Изменить» — предоставляет возможность открывать и создавать (изменять) файлы в папке.
«Полный доступ» — предоставляет все возможности для работы с папкой и вложенными файлами, включая изменение разрешений.
Откройте каждую папку и проверьте, что разрешения выполняются.
Элементы разрешений на доступ
Каждое разрешение состоит из нескольких элементов, которые позволяют более гибко настраивать систему безопасности. Войдите в операционную систему под учетной записью администратора.
Просмотреть элементы разрешений на доступ можно, нажав на кнопку «Дополнительно» во вкладке «Безопасность» и выбрав любой элемент разрешений.
Поэкспериментируйте с элементами и проверьте, как они работаю.
Владелец файла
В файловой системе NTFS у каждого файла есть свой владелец. Владельцем файла является пользователь операционной системы. Он может управлять разрешениями на доступ к объекту независимо от установленных разрешений.
Узнать, какой пользователь является владельцем файла или папки можно на закладке «Владелец» в дополнительных параметрах безопасности.
Наследование прав доступа
В файловой системе NTFS поддерживается наследование разрешений. Если вы устанавливаете разрешение на папку, то оно наследуется для всех вложенных файлов и папок.
При любых изменениях разрешений на родительскую папку они меняются в дочерних (вложенных) файлах и каталогах.
Для изменения унаследованных разрешений нужно открыть вкладку «Разрешения» в дополнительных параметрах безопасности. Там же можно отключить наследование разрешений.
Запреты
Кроме установки разрешений в файловых системах можно устанавливать запреты. Например, вы можете разрешить чтение и выполнение, но запретить запись. Таким образом, пользователь для которого установлен запрет и разрешения сможет запустить исполняемый файл или прочитать текстовый, но не сможет отредактировать и сохранить текстовый файл.
В дополнительных параметрах безопасности можно посмотреть действующие разрешения и для конкретного пользователя.
Разграничение прав доступа с помощью Secret Net (на примере версии 5.1)
При использовании Secret Net доступ к файлам осуществляется, в случае если пользователю присваивается соответствующий уровень допуска. В примере я использую Windows XP с установленным программным продуктом Secret Net 5.1.
Первым делом нужно запустить локальные параметры безопасности от имени Администратора: «Пуск –> Программы –> Secret Net 5 –> Локальная политика безопасности».
Далее необходимо перейти в «Параметры Secret Net» –> «Настройка подсистем» –> «Полномочное управление доступом: название уровней конфиденциальности».
Введите названия уровней. У меня это:
- Низший – Общедоступно.
- Средний – Конфиденциально.
- Высший – Секретно.
Настройка субъектов
Настройка субъектов в Secret Net производится в группе «Локальные пользователи и группы». Зайдите в меню «Пуск» –> «Программы» –> «Secret Net 5» –> «Управление компьютером» –> «Локальные пользователи и группы» –> «Пользователи».
Что бы настроить права администратора нужно выбрать учетную запись «Администратор» и перейти на вкладку Secret Net 5. Установим уровень доступа «секретно».
Далее установите все флажки.
- Управление категориями конфиденциальности означает, что пользователь имеет право изменять категории конфиденциальности папок и файлов, а так же может управлять режимом наследования категорий конфиденциальности папок.
- Печать конфиденциальных документов означает, что пользователь может распечатывать конфиденциальные документы. Данная возможность появляется, если включен контроль печати конфиденциальных документов.
- Вывод конфиденциальной информации означает, что пользователь может копировать конфиденциальную информацию на внешние носители.
После установки всех флажков нажмите «Применить» и «ОК».
Создадим нового пользователя. Для этого нужно перейти «Локальные пользователи и Группы» –> «Пользователи». Создайте новых пользователей, я назову их «Конфиденциальный» и «Секретный». По аналогии с пользователем Администратор установите для новых пользователей аналогичные уровни доступа и настройки как на рисунках ниже.
Настройка объектов
Та или иная категория конфиденциальности является атрибутом папки или файла. Изменения этих атрибутов производятся уполномоченными пользователями (в данном случае Администратором). Категория конфиденциальности может присваиваться новым файлам или папкам автоматически или по запросу.
Автоматическое присваивание категории конфиденциальности можно включить или отключить в окне настройки свойств папки. Этот параметр может редактировать только пользователь, у которого есть права на «Редактирование категорий конфиденциальности».
При этом стоит учесть, что категории конфиденциальности могут назначаться только папка и файлам в файловой системе NTFS. В случае если у пользователя нет такой привилегии, он может только повысить категорию конфиденциальности и только не выше своего уровня.
Попробуйте создать в паке новый файл или каталог, а после чего изменить ее уровень (повысить) и установить флажок «Автоматически присваивать новым файлам». У вас появиться окно «Изменение категорий конфиденциальности».
Выберите пункт «Присвоение категорий конфиденциальности всем файлам в каталоге» и нажмите «ОК» для присвоения категории конфиденциальности всем файлам кроме скрытых и системных файлов.
В случае если категория допуска пользователя выше чем категория конфиденциальности объект, то пользователь имеет право на чтение документа, но не имеет права изменять и сохранять документ.
Если пользователь с категорией «Общедоступно» попробует прочитать или удалить документ, то он получит соответствующие ошибки.
То есть пользователь не может работать с документами, у которых уровень конфиденциальности выше, чем у него.
Если вы зайдете под пользователем «Секретный» то вы сможете повысить уровень конфиденциальности файлов и работать с ними.
Не стоит забывать, что конфиденциальные файлы нельзя копировать в общедоступные папки, чтобы не допустить их утечки.
Контроль потоков данных
Контроль потоков данных используется для того, что бы запретить пользователям возможность понижения уровня конфиденциальности файлов.
Для этого нужно запустить «Локальные параметры безопасности»: «Пуск» – «Программы» –> «Secret Net 5» –> «Локальная политика безопасности», затем перейти в группу «Параметры Secret Net» –> «Настройки подсистем» и выбрать параметр «Полномочное управление доступом: Режим работы» и включить контроль потоков. Изменения вступят в силу после перезагрузки компьютера.
Если зайти (после перезагрузки) под пользователем «Секретный» появиться выбор уровня конфиденциальности для текущего сеанса. Выберите секретный уровень.
Если вы откроете файл с уровнем «Конфиденциально», отредактируете его и попробуете сохранить под другим именем и в другую папку, то вы получите ошибку, так как уровень сеанса (секретный) выше, чем уровень файла (конфиденциальный) и включен контроль потоков данных.
На этом все, если у вас остались вопросы задавайте их в комментариях.
Разграничение
доступа
Под
разграничением
доступа
принято понимать установление полномочий
субъектов для полследующего контроля
санкционированного использования
ресурсов, доступных в системе. Принято
выделять два основных метода
разграничения доступа:
дискреционное и мандатное.
Дискреционным
называется
разграничение доступа между поименованными
субъектами и поименованными объектами.
На практике дискреционное разграничение
доступа
может быть реализовано, например, с
использованием матрицы
доступа (рис.
1.3.4).
Как
видно из рисунка, матрица доступа
определяет права доступа для каждого
пользователя по отношению к каждому
ресурсу.
Очевидно,
что вместо матрицы доступа можно
использовать списки полномочий: например,
каждому пользователю может быть
сопоставлен список доступных ему
ресурсов с соответствующими правами,
или же каждому ресурсу может быть
сопоставлен список пользователей с
указанием их прав на доступ к данному
ресурсу.
Мандатное
разграничение доступа обычно
реализуется как разграничение доступа
по уровням секретности. Полномочия
каждого пользователя задаются в
соответствии с максимальным уровнем
секретности, к которому он допущен. При
этом
все
ресурсы АС должны быть классифицированы
по уровням секретности.
Принципиальное
различие между дискреционным и мандатным
разграничением доступа состоит в
следующем: если в случае дискреционного
разграничения доступа права на доступ
к ресурсу для пользователей определяет
его владелец, то в случае мандатного
разграничения доступа уровни секретности
задаются извне, и владелец ресурса не
может оказать на них влияния. Сам термин
«мандатное» является неудачным переводом
слова mandatory – «обязательный». Тем самым,
мандатное разграничение доступа следует
понимать как принудительное.
Разграничение
доступа в ОС Windows
ОС
Microsoft
являются на сегодняшний день одной из
наиболее распространенных в мире. В
тоже время штатные средства разграничения
доступа, основанные на дискреционной
модели, не позволяют решить проблему
потенциальной утечки конфиденциальной
информации.
Защита
от несанкционированного доступа и
воздействия на информацию в компьютерных
системах решается с помощью методов
аутентификации (подтверждения подлинности
субъектов доступа), авторизации
(разграничения прав субъектов) и
администрирования (определения и
реализации адекватной угрозам политики
безопасности). Для разграничения прав
доступа к объектам в компьютерных
системах применяются различные модели
безопасности. Наиболее распространенными
на сегодняшний день являются дискреционное
и мандатное управление доступом.
Дискреционная
модель разграничения доступа предполагает
назначение каждому объекту списка
контроля доступа, элементы которого
определяют права доступа к объекту
конкретных пользователей или групп.
Эта модель отличается простотой
реализации, но ее недостатком является
отсутствие механизмов слежения за
безопасностью потоков информации. Это
означает, что права на доступ к объекту
проверяются только при первом обращении
к объекту. При этом возникает опасность
переноса информации из защищенного
объекта в общедоступный.
Мандатная
модель разграничения доступа предполагает
назначение объекту грифа секретности,
а субъекту – уровня допуска. Доступ
субъектов к объектам в мандатной модели
определяется на основании правил «не
читать выше» и «не записывать ниже».
Это означает, что пользователь не может
прочитать информацию из объекта, гриф
секретности которого выше, чем его
уровень допуска. Также пользователь не
может перенести информацию из объекта
с большим грифом секретности в объект
с меньшим грифом секретности. Использование
мандатной модели предотвращает утечку
конфиденциальной информации, но снижает
производительность компьютерной
системы.
В
наиболее распространенных сегодня ОС
Windows и UNIX используется дискреционное
разграничение доступа. Это означает,
что им присуща описанная выше проблема
возможной утечки конфиденциальной
информации. Пользователь, имеющий право
работать с защищенным объектом может
перенести содержащуюся в нем информацию
в другой общедоступный объект. Причем
это может произойти как преднамеренно,
если это делает сам пользователь, так
и непреднамеренно, например, через
вредоносное или шпионское ПО, запущенной
от его имени.
Можно
предложить метод, позволяющий
контролировать возможность утечки
конфиденциальной информации в операционных
системах, использующих дискреционную
модель разграничения доступа к объектам
для защищенных систем семейства Microsoft
Windows. Тем самым защищенность подобных
систем будет существенно повышена без
ущерба для производительности и простоты
определения прав доступа.
Необходимыми
условиями реализации мандатной модели
в системах с дискреционным контролем
доступа являются:
-
отслеживание
(мониторинг) доступа к объектам системы; -
реакция
на попытку получения несанкционированного
доступа; -
защищенное
хранение информации о грифе секретности
объектов и уровне допуска субъектов
системы; -
наличие
механизмов слежения за работой с буфером
обмена.
Проведенное
исследование системы безопасности ОС
семейства Windows показало, что наиболее
подходящим механизмом мониторинга
событий обращений к объектам файловой
системы является перехват системных
вызовов. Технология перехвата системных
вызовов SCH (System Call Hooking) позволяет в
реальном времени перехватывать обращения
к системным объектам. Эта технология
предполагает написание низкоуровневого
драйвера режима ядра, осуществляющего
мониторинг функций, через которые
происходит взаимодействие с объектами
системы. Недостатком этого подхода
является высокая сложность реализации.
Одной из причин этого является закрытость
операционной системы и не документированность
архитектуры файловой системы NTFS, а также
системных функций работы с ней. Безусловным
плюсом является возможность прямого
блокирования доступа к объекту.
Предполагается
реализация следующих вариантов реакций
на попытки получения несанкционированного
доступа:
-
блокирование
доступа к объекту; -
вывод
на экран сообщения о возникшей опасности
утечки конфиденциальной информации; -
запись
в журнал аудита; -
закрытие
приложения, осуществившего
несанкционированный доступ; -
завершение
сеанса работы пользователя (с возможностью
блокирования данной учетной записи).
При
этом администратору будет предоставлена
возможность выбора необходимого
варианта, а также их комбинации.
Информации
о грифах секретности предлагаются
хранить в системных списках аудита
объектов системы. При этом предполагается
создание в системе групп безопасности
соответствующих каждому использующемуся
уровню конфиденциальности. Для хранения
информации об уровнях допуска субъектов
используются групп безопасности ОС
Windows (локальных или уровня домена).
В
операционных системах Windows существует
универсальный инструмент, позволяющий
перемещать информацию между приложениями
– буфер обмена. Безусловно, если не
учитывать эту особенность, то вся
предлагаемая модель разграничения
доступа теряет смысл, т.к. пользователь
может открыть документ, содержащий
конфиденциальную информацию, скопировать
его фрагмент в буфер обмена, и закрыть
документ. После этого он может использовать
содержимое буфера обмена в своих целях,
например, поместить его в общедоступный
объект. Для решения этой проблемы
предлагается вариант шифрования
содержимого буфера обмена. Это позволить
полностью контролировать работу
пользователя с буфером обмена. При этом
возможность корректного расшифрования
содержимого буфера будет предоставлена
только авторизованным приложениям.
Предложенный
метод позволяет реализовать мандатный
принцип разграничения доступа к ресурсам
в ОС семейства Microsoft Windows. Разработанное
программное средство позволяет
отслеживать обращение пользователей
(и инициируемых ими процессов) к объектам
системы и предотвращать несанкционированный
доступ к информации на основе правил
мандатной модели управления доступом.
Система,
в которой установлено разработанное
программное средство, является намного
более защищенной, по сравнению со
стандартными настройками, хотя и теряет
небольшую честь функциональности.
Безусловно, эффективная работа в такой
системе подразумевает хорошее понимание
пользователем правил, которых он должен
придерживаться в соответствии со своим
уровнем допуска, иначе работа для него
будет проблематична.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Мандатное управление доступом (англ. Mandatory access control, MAC ) — разграничение доступа субъектов к объектам, основанное на назначении метки конфиденциальности для информации, содержащейся в объектах, и выдаче официальных разрешений (допуска) субъектам на обращение к информации такого уровня конфиденциальности. Также иногда переводится как Принудительный контроль доступа. Это способ, сочетающий защиту и ограничение прав, применяемый по отношению к компьютерным процессам, данным и системным устройствам и предназначенный для предотвращения их нежелательного использования.
Согласно требованиям ФСТЭК мандатное управление доступом или «метки доступа» являются ключевым отличием систем защиты Государственной Тайны РФ старших классов 1В и 1Б от младших классов защитных систем на классическом разделении прав по матрице доступа.
Пример: субъект «Пользователь № 2», имеющий допуск уровня «не секретно», не может получить доступ к объекту, имеющему метку «для служебного пользования». В то же время, субъект «Пользователь № 1» с допуском уровня «секретно» право доступа к объекту с меткой «для служебного пользования» имеет.
Содержание
Особенности [ править | править код ]
Мандатная модель управления доступом, помимо дискреционной и ролевой, является основой реализации разграничительной политики доступа к ресурсам при защите информации ограниченного доступа. При этом данная модель доступа практически не используется «в чистом виде», обычно на практике она дополняется элементами других моделей доступа.
Для файловых систем, оно может расширять или заменять дискреционный контроль доступа и концепцию пользователей и групп.
Самое важное достоинство заключается в том, что пользователь не может полностью управлять доступом к ресурсам, которые он создаёт.
Политика безопасности системы, установленная администратором, полностью определяет доступ, и обычно пользователю не разрешается устанавливать более свободный доступ к его ресурсам чем тот, который установлен администратором пользователю. Системы с дискреционным контролем доступа разрешают пользователям полностью определять доступность их ресурсов, что означает, что они могут случайно или преднамеренно передать доступ неавторизованным пользователям. Такая система запрещает пользователю или процессу, обладающему определённым уровнем доверия, получать доступ к информации, процессам или устройствам более защищённого уровня. Тем самым обеспечивается изоляция пользователей и процессов, как известных, так и неизвестных системе (неизвестная программа должна быть максимально лишена доверия, и её доступ к устройствам и файлам должен ограничиваться сильнее).
Очевидно, что система, которая обеспечивает разделение данных и операций в компьютере, должна быть построена таким образом, чтобы её нельзя было «обойти». Она также должна давать возможность оценивать полезность и эффективность используемых правил и быть защищённой от постороннего вмешательства.
Поддержка в современных операционных системах [ править | править код ]
Изначально такой принцип был воплощён в операционных системах Flask, и других ориентированных на безопасность операционных системах.
Исследовательский проект АНБ SELinux добавил архитектуру мандатного контроля доступа к ядру Linux, и позднее был внесён в главную ветвь разработки в Августе 2003 года.
Мандатная система разграничения доступа реализована в ОС FreeBSD Unix.
В SUSE Linux и Ubuntu есть архитектура мандатного контроля доступа под названием AppArmor.
В сертифицированной в системах сертификации Минобороны России и ФСТЭК России операционной системе специального назначения Astra Linux Special Edition, механизм мандатного разграничения доступа реализован, как и механизм дискреционного разграничения доступа в ядре ОС и СУБД. Решение о запрете или разрешении доступа субъекта к объекту принимается на основе типа операции (чтение/запись/исполнение), мандатного контекста безопасности, связанного с каждым субъектом, и мандатной метки, связанной с объектом.
В сетевые пакеты протокола IPv4 в соответствии со стандартом RFC1108 внедряются мандатные метки, соответствующие метке объекта — сетевое соединение. В защищенных комплексах гипертекстовой обработки данных, электронной почты и в других сервисах, мандатное разграничение реализовано на основе программного интерфейса библиотек подсистемы безопасности PARSEC.
Поддержка в современных системах управления базами данных [ править | править код ]
В СУБД ЛИНТЕР [1] мандатный контроль доступа к данным организуется на уровне таблиц, столбцов записей и отдельных полей записей.
В PostgreSQL в версии 9.2 появилась начальная поддержка SELinux.
Таблица 4.3.1.
Рисунок 4.3.1.
Методы разграничения доступа
После выполнения идентификации и аутентификации подсистема защиты устанавливает полномочия (совокупность прав) субъекта для последующего контроля санкционированного использования объектов информационной системы.
Обычно полномочия субъекта представляются: списком ресурсов, доступным пользователю и правами по доступу к каждому ресурсу из списка.
Существуют следующие методы разграничения доступа:
1. Разграничение доступа по спискам.
2. Использование матрицы установления полномочий.
3. Разграничение доступа по уровням секретности и категориям.
4. Парольное разграничение доступа.
При разграничении доступа по спискам задаются соответствия: каждому пользователю – список ресурсов и прав доступа к ним или каждому ресурсу – список пользователей и их прав доступа к данному ресурсу.
Списки позволяют установить права с точностью до пользователя. Здесь нетрудно добавить права или явным образом запретить доступ. Списки используются в подсистемах безопасности операционных систем и систем управления базами данных.
Пример (операционная система Windows 2000) разграничения доступа по спискам для одного объекта показан на рис. 4.3.1.
Использование матрицы установления полномочий подразумевает применение матрицы доступа (таблицы полномочий). В указанной матрице строками являются идентификаторы субъектов, имеющих доступ в информационную систему, а столбцами – объекты (ресурсы) информационной системы. Каждый элемент матрицы может содержать имя и размер предоставляемого ресурса, право доступа (чтение, запись и др.), ссылку на другую информационную структуру, уточняющую права доступа, ссылку на программу, управляющую правами доступа и др.
Данный метод предоставляет более унифицированный и удобный подход, т. к. вся информация о полномочиях хранится в виде единой таблицы, а не в виде разнотипных списков. Недостатками матрицы являются ее возможная громоздкость и неоптимальность (большинство клеток – пустые).
Фрагмент матрицы установления полномочий показан в таб. 4.3.1.
Субъект | Диск с: | Файл d:prog. exe | Принтер |
Пользователь 1 | Чтение Запись Удаление | Выполнение Удаление | Печать Настройка параметров |
Пользователь 2 | Чтение | Выполнение | Печать с 9:00 до 17:00 |
Пользователь 3 | Чтение Запись | Выполнение | Печать с 17:00 до 9:00 |
Разграничение доступа по уровням секретности и категориям заключается в разделении ресурсов информационной системы по уровням секретности и категориям.
При разграничении по степени секретности выделяют несколько уровней, например: общий доступ, конфиденциально, секретно, совершенно секретно. Полномочия каждого пользователя задаются в соответствии с максимальным уровнем секретности, к которому он допущен. Пользователь имеет доступ ко всем данным, имеющим уровень (гриф) секретности не выше, чем ему определен, например, пользователь имеющий доступ к данным «секретно», также имеет доступ к данным «конфиденциально» и «общий доступ».
При разграничении по категориям задается и контролируется ранг категории пользователей. Соответственно, все ресурсы информационной системы разделяются по уровням важности, причем определенному уровню соответствует категория пользователей. В качестве примера, где используются категории пользователей, приведем операционную систему Windows 2000, подсистема безопасности которой по умолчанию поддерживает следующие категории (группы) пользователей: «администратор», «опытный пользователь», «пользователь» и «гость». Каждая из категорий имеет определенный набор прав. Применение категорий пользователей позволяет упростить процедуры назначения прав пользователей за счет применения групповых политик безопасности.
Парольное разграничение, очевидно, представляет использование методов доступа субъектов к объектам по паролю. При этом используются все методы парольной защиты. Очевидно, что постоянное использование паролей создает неудобства пользователям и временные задержки. Поэтому указанные методы используют в исключительных ситуациях.
На практике обычно сочетают различные методы разграничения доступа. Например, первые три метода усиливают парольной защитой.
Разграничение прав доступа является обязательным элементом защищенной информационной системы. Напомним, что еще в «Оранжевой книге США» были введены понятия:
· произвольное управление доступом;
· принудительное управление доступом.
В ГОСТе Р 50739-95 «Средства вычислительной техники. Защита от несанкционированного доступа к информации» и в документах Гостехкомиссии РФ определены два вида (принципа) разграничения доступа:
· дискретное управление доступом;
· мандатное управление доступом.
Дискретное управление доступом представляет собой разграничение доступа между поименованными субъектами и поименованными объектами. Субъект с определенным правом доступа может передать это право любому другому субъекту. Данный вид организуется на базе методов разграничения по спискам или с помощью матрицы.
Мандатное управление доступом основано на сопоставлении меток конфиденциальности информации, содержащейся в объектах (файлы, папки, рисунки) и официального разрешения (допуска) субъекта к информации соответствующего уровня конфиденциальности.
При внимательном рассмотрении можно заметить, что дискретное управление доступом есть ничто иное, как произвольное управление доступом (по «Оранжевой книге США»), а мандатное управление реализует принудительное управление доступом.
Не нашли то, что искали? Воспользуйтесь поиском:
Лучшие изречения: Только сон приблежает студента к концу лекции. А чужой храп его отдаляет. 8940 — | 7611 — или читать все.
91.146.8.87 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.
Отключите adBlock!
и обновите страницу (F5)
очень нужно
Рассмотрим основные модели разграничения доступа к объектам компьютерных систем со стороны их субъектов. Разделение всех элементов компьютерной системы на множества субъектов и объектов осуществляется на основе обладания субъектами свойством «быть активными» («получать управление»). Понятие субъекта отличается от понятия пользователя компьютерной системы, которым обычно является физическое лицо, обладающее некоторой идентифицирующей его информацией (например, именем и паролем). Возможно существование в системе и псевдопользователей, например, системных процессов. Пользователь управляет работой субъекта (порожденного им из объекта-источника с программным кодом) с помощью его интерфейсных элементов (команд меню, кнопок и т. п.).
Дискреционное разграничение доступа к объектам (Discretionary Access Control — DAC) характеризуется следующим набором свойств:
- • все субъекты и объекты компьютерной системы должны быть однозначно идентифицированы;
- • для любого объекта компьютерной системы определен пользователь-владелец;
- • владелец объекта обладает правом определения прав доступа к объекту со стороны любых субъектов компьютерной системы;
- • в компьютерной системе существует привилегированный пользователь, обладающий правом полного доступа к любому объекту (или правом становиться владельцем любого объекта).
Последнее свойство определяет невозможность существования в компьютерной системе потенциально недоступных объектов, владелец которых отсутствует. Но реализация права полного доступа к любому объекту посредством предварительного назначения себя его владельцем не позволяет привилегированному пользователю (администратору) использовать свои полномочия незаметно для реального владельца объекта.
Дискреционное разграничение доступа реализуется обычно в виде матрицы доступа, строки которой соответствуют субъектам компьютерной системы, а столбцы — ее объектам. Элементы матрицы доступа определяют права доступа субъектов к объектам. В целях сокращения затрат памяти матрица доступа может задаваться в виде списков прав субъектов (для каждого из них создается список всех объектов, к которым разрешен доступ со стороны данного субъекта) или в виде списков контроля доступа (для каждого объекта информационной системы создается список всех субъектов, которым разрешен доступ к данному объекту).
К достоинствам дискреционного разграничения доступа относятся относительно простая реализация (проверка прав доступа субъекта к объекту производится в момент открытия этого объекта в процессе субъекта) и хорошая изученность (в наиболее распространенных операционных системах универсального назначения типа Microsoft Windows и Unix применяется именно эта модель разграничения доступа).
Остановимся на недостатках дискреционного разграничения доступа. Прежде всего, к ним относится статичность разграничения доступа — права доступа к уже открытому субъектом объекту в дальнейшем не изменяются независимо от изменения состояния компьютерной системы.
При использовании дискреционного разграничения доступа не существует возможности проверки, не приведет ли разрешение доступа к объекту для некоторого субъекта к нарушению безопасности информации в компьютерной системе (например, владелец базы данных с конфиденциальной информацией, дав разрешение на ее чтение другому пользователю, делает этого пользователя фактически владельцем защищаемой информации). Иначе говоря, дискреционное разграничение доступа не обеспечивает защиты от утечки конфиденциальной информации.
Наконец, к недостаткам дискреционного управления доступом относится автоматическое назначение прав доступа субъектам (из-за большого количества объектов в информационной системе в качестве субъектов доступа остаются только ее пользователи, а значение элемента матрицы доступа вычисляется с помощью функции, определяющей права доступа порожденного пользователем субъекта к данному объекту компьютерной системы).
Отмеченных недостатков во многом лишено мандатное разграничение доступа (Mandatory Access Control — MAC). К основным характеристикам этой модели относится следующее:
- • все субъекты и объекты компьютерной системы должны быть однозначно идентифицированы;
- • имеется линейно упорядоченный набор меток конфиденциальности и соответствующих им уровней (степеней) допуска (нулевая метка или степень соответствуют общедоступному объекту и степени допуска к работе только с общедоступными объектами);
- • каждому объекту компьютерной системы присвоена метка конфиденциальности;
- • каждому субъекту компьютерной системы присваивается степень допуска;
- • в процессе своего существования каждый субъект имеет свой уровень конфиденциальности, равный максимуму из меток конфиденциальности объектов, к которым данный субъект получил доступ;
- • в компьютерной системе существует привилегированный пользователь, имеющий полномочия на удаление любого объекта системы;
- • понизить метку конфиденциальности объекта может только субъект, имеющий доступ к данному объекту и обладающий специальной привилегией;
- • право на чтение информации из объекта получает только тот субъект, чья степень допуска не меньше метки конфиденциальности данного объекта (правило «не читать выше»);
- • право на запись информации в объект получает только тот субъект, чей уровень конфиденциальности не больше метки конфиденциальности данного объекта (правило «не записывать ниже»).
Основной целью мандатного разграничения доступа к объектам является предотвращение утечки информации из объектов с высокой меткой конфиденциальности в объекты с низкой меткой конфиденциальности (противодействие созданию каналов передачи информации «сверху вниз»).
Для мандатного разграничения доступа к объектам компьютерной системы формально доказано следующее важное утверждение: если начальное состояние компьютерной системы безопасно и все переходы из одного состояния системы в другое не нарушают правил разграничения доступа, то любое последующее состояние компьютерной системы также безопасно.
К другим достоинствам мандатного разграничения доступа относятся:
- • более высокая надежность работы самой компьютерной системы, так как при разграничении доступа к объектам контролируется и состояние самой системы, а не только соблюдение установленных правил;
- • большая простота определения правил разграничения доступа по сравнению с дискреционным разграничением (эти правила более ясны для разработчиков и пользователей компьютерной системы).
Отметим недостатки мандатного разграничения доступа к объектам компьютерной системы:
- • сложность программной реализации, что увеличивает вероятность внесения ошибок и появления каналов утечки конфиденциальной информации;
- • снижение эффективности работы компьютерной системы, так как проверка прав доступа субъекта к объекту выполняется не только при открытии объекта в процессе субъекта, но и перед выполнением любой операции чтения из объекта или записи в объект;
- • создание дополнительных неудобств работе пользователей компьютерной системы, связанных с невозможностью изменения информации в неконфиденциальном объекте, если тот же самый процесс использует информацию из конфиденциального объекта (его уровень конфиденциальности больше нуля).
Преодоление последнего недостатка требует разработки программного обеспечения компьютерной системы с учетом особенностей мандатного разграничения доступа.
Из-за отмеченных недостатков мандатного разграничения доступа в реальных компьютерных системах множество объектов, к которым применяется мандатное разграничение, является подмножеством множества объектов, доступ к которым осуществляется на основе дискреционного разграничения.
При использовании мандатного разграничения доступа к объектам необходимо также обеспечить достоверное подтверждение назначенного пользователю уровня допуска даже при отсутствии защищенного канала связи с сервером аутентификации. Это может быть обеспечено при использовании инфраструктуры открытых ключей.
Формат сертификата открытого ключа, определенный в рекомендациях Х.509 Международного союза по телекоммуникациям (ITU), позволяет включать в состав сертификата дополнения (расширения, extensions), с помощью которых может быть реализована определенная политика безопасности в компьютерной системе конкретной организации. Каждое дополнение состоит из идентификатора объекта (object identifier) для типа дополнения, признака его критичности и закодированного значения дополнения.
В рекомендациях Х.509 введены следующие типы дополнений: область применения (назначение) криптографического ключа, расширенная область применения ключа, ограничения на длину цепочки сертификации при проверке сертификата, ограничения на политику применения сертификатов и др. Возможен ввод и любых других дополнений, необходимых для реализации политики безопасности в компьютерной системе.
Признак критичности дополнения сертификата используется для указания приложению, использующему данный сертификат, на возможность игнорирования информации, содержащейся в дополнении. Значение дополнения задается в виде блоба (bit large object — BLOB) — структуры, состоящей из полей с длиной значения дополнения и самим закодированным значением.
При реализации мандатного разграничения доступа к объектам дополнение сертификата пользователя может содержать значение назначенного ему уровня допуска в системе. Для дополнения этого типа должен быть установлен признак критичности. Значение этого дополнения, извлеченное из сертификата пользователя при попытке совершения им чтения или записи объекта, будет использоваться для проверки прав на совершение запрашиваемой операции.
Рассмотрим преимущества подобного способа хранения информации об уровне допуска пользователя к ресурсам компьютерной системы перед ее хранением в локальной или глобальной (доменной) учетной записи пользователя. При работе в сети сертификат пользователя (при его отсутствии в локальном хранилище сертификатов) может быть всегда запрошен в корпоративном удостоверяющем центре. При попытке получения доступа к ресурсам автономного (не подключенного к сети) компьютера сертификат может быть импортирован из файла на предоставленном пользователем носителе (флэш-диске, дискете, компакт-диске) или непосредственно с устройства аутентификации пользователя (смарт-карты, USB-ключа).
При импорте сертификата из файла пользователю потребуется ввести пароль для генерации сеансового ключа расшифрования личного (закрытого) криптографического ключа, а при импорте с устройства аутентификации — PIN-код. Это обеспечит защиту от попытки использования похищенного носителя.
В Руководящем документе ФСТЭК России «Автоматизированные системы. Защита от несанкционированного доступа к информации. Классификация автоматизированных систем и требования по защите информации» содержатся следующие требования по разграничению доступа субъектов к защищенным объектам автоматизированных систем:
- • должен осуществляться контроль доступа субъектов к защищаемым ресурсам в соответствии с матрицей доступа (дискреционное разграничение доступа — классы защищенности 1 Г, 1В, 1Б, 1А);
- • должно осуществляться управление потоками информации с помощью меток конфиденциальности (мандатное разграничение доступа). При этом уровень конфиденциальности накопителей должен быть не ниже уровня конфиденциальности записываемой на них информации (классы защищенности 1В, 1Б, 1А).
Ролевое разграничение доступа (Role-Based Access Control — RBAC) основано на том соображении, что в реальной жизни организации ее сотрудники выполняют определенные функциональные обязанности не от своего имени, а в рамках некоторой занимаемой ими должности (или роли). Реализация ролевого разграничения доступа к объектам компьютерной системы требует разработки набора (библиотеки) ролей, определяемых как набор прав доступа к объектам информационной системы (прав на выполнение над ними определенного набора действий). Этот набор прав должен соответствовать выполняемой работником трудовой функции.
Наряду с пользователями (субъектами доступа) и объектами доступа ролевое разграничение доступа оперирует следующими понятиями:
- • привилегии (операции) — минимально возможные действия пользователя, требующие разрешения или запрещения этого действия;
- • правила (задачи) — объединение привилегии, подмножества объектов, для которых может быть определена такая привилегия, и признака разрешения или запрещения этой привилегии;
- • роль — набор правил, определяющих, какими привилегиями и по отношению к каким объектам будет обладать пользователь, которому будет назначена эта роль;
- • сессия — подмножество ролей, которые активировал пользователь после своего входа в систему в течение определенного интервала времени.
Реализация ролевого разграничения доступа к объектам сводится к следующим шагам:
- • разработчики приложений, в которых над объектами системы выполняются определенные действия, совместно с администратором безопасности компьютерной системы и конструктором ролей составляют список привилегий и множество правил;
- • конструктор ролей разрабатывает библиотеку ролей для данной системы;
- • диспетчер ролей каждому пользователю системы статическим образом присваивает набор возможных для данного пользователя ролей (при этом могут использоваться статические ограничения на назначение ролей);
- • после авторизации пользователя в системе для него создается сессия (при этом могут использоваться динамические ограничения на использование ролей).
Примеры статических ограничений на назначение ролей пользователям системы — возможность назначения роли главного администратора (суперпользователя) только одному пользователю, ограничение количества пользователей, которым может быть назначена определенная роль, запрет совмещения одним пользователем определенных ролей (например, роли конструктора и диспетчера ролей).
Пример динамического ограничения на использование ролей — ограничение количества пользователей, одновременно выполняющих определенную роль (например, администратора).
Ролевая модель разграничения доступа сочетает элементы мандатного разграничения (объединение субъектов и объектов доступа в одном правиле) и дискреционного разграничения (назначение ролей отдельным субъектам). Этим обеспечивается жесткость правил разграничения доступа и гибкость настройки механизма разграничения в конкретных условиях применения. Преимущества ролевого разграничения доступа к объектам проявляются при организации коллективного доступа к ресурсам сложных информационных систем с большим количеством пользователей и объектов.
К недостаткам ролевого разграничения доступа относится отсутствие формальных доказательств безопасности компьютерной системы, возможность внесения дублирования и избыточности при предоставлении пользователям прав доступа, сложность конструирования ролей.
Разграничение доступа пользователей в ОС Windows. ПАК СЗИ НСД «Аккорд-Win64» (10/11)
Мандатный механизм управления доступом
Здравствуйте!
В данной лекции мы поговорим о мандатном механизме управления доступом, рассмотрим требования этого механизма и понятие используемой в нем решетки уровней конфиденциальности информации, приведем пример схемы реализации мандатного механизма управления доступом. А также поговорим, как происходит настройка уровня доступа пользователей и настройка уровня конфиденциальности (меток допуска) объектов в программно-аппаратном комплексе СЗИ от НСД «Аккорд-Win64», то есть настройка правил разграничения доступа с использованием данного механизма.
Итак, как мы уже говорили в лекции про дискреционный механизм управления доступом – все элементы компьютерной системы, как известно, разделяются на множество субъектов и объектов. Будем называть их обобщенно — сущностями КС.
Мандатное управление доступом к объектам компьютерной системы предполагает выполнение следующих требований:
- все сущности компьютерной системы должны быть однозначно идентифицированы;
- должна быть задана решетка уровней конфиденциальности информации;
- каждой сущности компьютерной системы должен быть присвоен уровень конфиденциальности — метка допуска, задающая установленные ограничения на доступ к ней;
- каждому субъекту КС должен быть присвоен уровень доступа, задающий его уровень полномочий в системе;
- субъект может получить доступ к сущности только том случае, когда уровень доступа субъекта позволяет предоставить ему данный доступ к сущности с заданным уровнем конфиденциальности, и реализация доступа не приведет к возникновению информационных потоков от сущностей с высоким уровнем конфиденциальности к сущностям с низким уровням конфиденциальности.
Решетка уровней конфиденциальности классически задается в числовом виде – «0», «2», … «15», где «0» — самый низкий уровень, а «15» — самый высокий (уровень «1» зарезервирован для более сложных задач). Но может быть задана и иначе, например, когда имеется всего 4 уровня конфиденциальности. Здесь ОД – это общедоступно, К – конфиденциально, С – секретно, СС – совершенно секретно.
Реализацию мандатного механизма управления доступом можно схематично изобразить следующим образом. Пусть, например, у нас есть Объект 1 (некоторый файл) и несколько субъектов (S1, S2, S3). Объект 1 имеет уровень конфиденциальности «Конфиденциально» и Субъект 2 имеет уровень доступа «Конфиденциально», Субъект 1 имеет уровень доступа «Секретно», а Субъект 3 – «Общедоступно». Слева мы видим решетку уровней конфиденциальности для данного случая. В соответствии с требованиями мандатной политики управления доступом Субъект 1 (с более высоким уровнем доступа, чем у нашего файла) не может писать (W) в файл с уровнем доступа ниже, но может его читать (R). Субъект 2 (с таким же уровнем доступа, что и наш файл) может и писать в файл и читать его (RW) ), а Субъект 3 (с уровнем доступа ниже, чем наш файл) не может ни читать, ни писать в файл (RW) ), но может добавлять туда информацию без перезаписи (А) ).
Теперь давайте рассмотрим, как происходит задание правил разграничения доступа (ПРД) с использованием мандатного механизма в комплексе «Аккорд».
Для включения мандатного механизма разграничения доступа необходимо в главном окне программы «Настройка комплекса «Аккорд» в поле «Механизмы защиты» установить флаги «Мандатный» и «Контроль процессов». Установим их. Нажмем «Сохранить» и выйдем из программы.
Теперь необходимо выполнить настройку уровня доступа пользователей. Для этого зайдем в программу «Редактор прав доступа». После установки в настройках комплекса галочек «Мандатный» и «Контроль процессов» в главном окне данной программы на панели инструментов становятся активными кнопки «Уровень доступа пользователя» и «Установить мандатные метки допуска к объектам».
С помощью кнопки «Уровень доступа пользователя» можно установить, или изменить уровень доступа пользователя. Выберем пользователя из списка и обратим внимание на то, что в поле «Уровень доступа пользователя» по умолчанию установлен самый низкий уровень доступа — «Общедоступно».
Нажмем кнопку «Уровень доступа пользователя» и зададим ему уровень доступа, например, «Конфиденциально». Нажмем кнопку «Сохранить». В поле «Уровень доступа пользователя» появится заданное значение.
Обращу внимание, что объектами для мандатного механизма могут выступать: локальные каталоги и файлы, сетевые ресурсы, каталоги и файлы на съемных устройствах.
Далее необходимо открыть окно «Редактирование правил разграничения доступа» и в нем перейти на вкладку «Процессы».
При первом запуске данной программы с включенным флагом «Контроль процессов» в список заносятся все процессы, которые в данный момент находятся в оперативной памяти. Однако на момент старта данной программы некоторые процессы уже завершают свою работу, поэтому более корректно выполнять формирование списка контролируемых процессов несколько иным образом. Мы не будем сейчас рассматривать этот момент, подробности можно прочитать в методических материалах к лекции – документе «Установка правил разграничения доступа».
Сейчас зададим всем процессам метку допуска «Общедоступно» (делаем мы это для того, чтобы все процессы были общедоступными, так как сейчас мы не хотим разграничивать доступ процессов, а хотим устанавливать метки допуска только к таким объектам, как файлы и каталоги).
Для этого нажмем кнопку «Новый». В появившемся окне в поле «Имя процесса» введем «*». Больше ничего менять не будем и нажмем «Сохранить». В списке «Процессов» видим, что появилась «*» и уровень доступа «Общедоступно». Это означает, что все процессы будут иметь метку допуска «Общедоступно». Нажмем «Сохранить».
Далее можно присваивать уровни конфиденциальности (метки допуска) объектам. Для этого нужно нажать кнопку «Установить мандатные метки допуска к объектам». Нажмем ее. Выводится окно со списком объектов.
По умолчанию всем объектам присваивается самый низкий уровень – «Общедоступно». Зададим метку допуска произвольному объекту (например, каталогу TEST на диске С:). Для этого нажмем кнопку «Новый». Откроется окно «Атрибуты доступа к объектам», в котором слева выберем каталог TEST на диске С:. Для выбранного объекта можно изменить только два параметра – наследование прав доступа и метку допуска. «Метка допуска» выставляется выбором значения из списка.
Обращу внимание, что среди меток допуска мы видим метку «Общий ресурс», которую мы не обсуждали ранее. Пока не будем на ней останавливаться, об общих ресурсах мы поговорим на следующей лекции.
А сейчас выберем, например, «Конфиденциально», нажмем кнопку «Сохранить», затем «Закрыть».
Видим, что этот каталог появился в списке с меткой допуска «Конфиденциально».
Объект, которому не присвоена метка допуска, считается общедоступным для всех пользователей.
Для сохранения изменений необходимо нажать «Сохранить».
Подведем итог, на данной лекции мы поговорили о мандатном механизме управления доступом, рассмотрели требования этого механизма, понятие используемой в нем решетки уровней конфиденциальности информации, пример схемы реализации мандатного механизма управления доступом. А также посмотрели, как происходит настройка уровня доступа пользователей и уровня конфиденциальности (меток допуска) объектов в программно-аппаратном комплексе СЗИ от НСД «Аккорд-Win64».
На следующей лекции мы поговорим о контроле процессов с использованием дискреционного и/или мандатного механизмов разграничения доступа.
Спасибо за внимание, до встречи на следующей лекции!
Мандатная модель управления доступом (Mandatory Access Control, MAC) — способ разграничения доступа с фиксированным набором полномочий. Обычно настоящий MAC используется в системах с повышенным требованиями к безопасности и стоит на службе всевозможных силовых ведомств и организаций, связанных с государственной или служебной тайной.
Модель MAC
MAC, несмотря на то, что содержится во множестве статей и материалов, чаще всего упоминается вскользь и в виде пряного соуса к чему-нибудь вроде краткого упоминания MLS в SELinux. Так как многие ограничивают свою дружбу с SELinux применением рецепта «как отключить SELinux», то и MAC часто удостаивается той же чести. Поэтому сперва коротко о MAC.
Если вы хорошо знакомы с моделью, можете сразу перейти к следующему разделу.
Основная идея
Абстрактная модель безопасности, реализуемая в классическом MAC (каким его знают сотрудники силовых ведомств), выглядит следующим образом (классическая картинка, иллюстрирующая модель Белла — Лападулы):
Модель MAC по своей сути является «электронной» реализацией бумажного «секретного» документооборота. В MAC имеются следующие «действующие лица»:
- Иерархия уровней доступа, которые обрабатываются в системе (обычно регистрируются в ОС). Для удобства часто задается в виде беззнаковых чисел (от 0 до значения, ограниченного реализацией). В этом случае для сравнения уровней доступа (выше/ниже/равно) используются простейшие арифметические операции (равно, меньше, больше).
- Объект с уровнем секретности. Любой файл, каталог в файловой системе, ячейка или запись в таблице БД, таблица в БД, сама БД, сетевой пакет и т.д. Объекту присваивается любое значение из иерархии уровней доступа. Для объекта допускается повышение уровня секретности (изменение до большего значения уровня, чем текущий). Понижение уровня секретности категорически не допускается (хотя вполне реализуемо при помощи определенных уловок).
- Субъект с уровнем доступа. Процесс какого-либо приложения либо сеанс пользователя (по сути тоже процесс приложения). Метка уровня доступа наследуется от субъекта всеми создаваемыми данным субъектом объектами.
Значение уровня доступа субъекта или уровня секретности объекта обычно называют термином «мандатный уровень», «мандатная метка» или просто «метка» (в STCSEC данный термин называется «hierarchical classification level»). Просто, емко и почти однозначно.
Проверка полномочий осуществляется при каждом факте доступа субъекта к объекту, защищаемому MAC. При этом мандатная модель управления доступом обычно используется совместно с другими механизмами контроля доступа, например, DAC (UNIX-моделью и POSIX ACL). При этом MAC проверяется в последнюю очередь. Сперва проверяется доступ по DAC (как наименее защищенный), а затем уже MAC.
При проверке правомочности доступа субъекта к объекту согласно мандатной модели возможны следующие комбинации:
- Мандатная метка субъекта равна мандатной метке объекта. В этом случае субъекту разрешено читать и изменять объект.
- Мандатная метка субъекта выше мандатной метки объекта. Субъекту разрешено только читать объект: он его видит, но не может изменить.
- Мандатная метка субъекта ниже мандатной метки объекта. Субъекту формально разрешено создать объект с более высокой мандатной меткой (так называемое «повышение уровня секретности объекта»). На практике у субъекта нет технической возможности для выполнения данной операции (он просто «не видит» изменяемый объект, например, файл или каталог с файлами).
Также в MAC существует такое понятие, как «категория» (в терминологии STCSEC данный термин называется «non-hierarchical categories»). Категории в MAC являются опциональными к применению. В практике реализации MAC категории используются для «горизонтального» разграничения доступа между различными подразделениями организации. В этом случае сотрудники, несмотря на один мандатный уровень, будут получать доступ только к тем категориям объектов, к которым для них открыт доступ согласно их метке.
Ограничения и уязвимости
MAC обладает своими ограничениями и особенностями:
- Пользователи системы не могут самостоятельно определять доступ субъектов к объектам. Из всего арсенала управления доступом к объекту в MAC имеется только мандатная метка и мандатная категория, которые привязаны к этому объекту. Управление доступом субъектов к объектам осуществляют только администраторы.
- Если пользователь хочет изменить мандатную метку объекта, автором которого он является, то ему необходимо перейти в сеанс целевой метки. Связано с тем, что пользователь не может указать метку по своему желанию, а может лишь передать метку объекту «по наследству». Одновременно пользователь может работать только в сеансе одной мандатной метки.
- Так как MAC используется совместно с другими моделями управления доступом, возникают коллизии: иногда не так просто выяснить, в каком «слое» системы безопасности произошёл отказ в предоставлении доступа. Требуется тонкий «тюнинг» всех слоёв защиты.
- Помимо самой настройки доступа посредством инструментария MAC требуется наличие регламента безопасности. В нем должно быть описано, что значат конкретные значения мандатных меток (это находится за пределами MAC), какие объекты как защищаются, какие субъекты имеют право на доступ. Без наличия согласованного регламента MAC сама по себе не даст security enhancement.
- Использование MAC в распределенной сетевой инфраструктуре. Традиционный подход к настройке MAC — локально, вручную, при помощи администратора в соответствии с инструкцией. Есть решения, позволяющие реализовать централизованно управляемое хранилище MAC (вроде ALD), но они имеют свои особенности и сложности построения.
Проектирование приложения с поддержкой MAC
Несмотря на все ограничения модели, для тех, кто работает с госсектором, а в особенности с силовыми ведомствами, вопрос построения приложений с поддержкой мандатной модели управления доступом актуален как никогда. Вдруг завтра именно вам придется поддерживать MAC в своем продукте?
На первый взгляд кажется, что модель примитивна и ее реализация проста как пять копеек, но существует один нюанс: заказчик, который выставляет требование к использованию мандатной модели, имеет ввиду, в первую очередь, сертифицированное средство защиты информации. Обрабатываться в такой ИС будет действительно секретная информация, вплоть до государственной тайны, и сертифицировать на нужный уровень собственную разработку будет очень сложно. Выходом из данной ситуации является использование сертифицированной инфраструктуры, поддерживающей MAC.
Итак, что у нас есть в наборе:
Теперь рассмотрим, каким образом можно воспользоваться этой инфраструктурой при разработке приложения для сохранения функций управления доступом на уровне инфраструктуры.
Для того чтобы приложение могло воспользоваться механизмом мандатных меток операционной системы, должны быть выполнены следующие условия:
- Пользователи приложения должны быть зарегистрированы в хранилище пользователей операционной системы. Как минимум должен быть какой-то идентификатор, позволяющий однозначно сопоставить пользователя приложения с пользователем операционной системы (обычно это логин).
- Пользователям приложения на уровне механизма MAC операционной системы должны быть настроены мандатные разрешения на определённые мандатные метки (диапазоны мандатных меток).
С точки зрения десктопного приложения сценарий работы пользователя выглядит следующим образом:
- Пользователь входит в ОС под своей личной УЗ в режиме требуемой ему метки. Запускает приложение. Процесс приложения наследует мандатную метку.
- Приложение взаимодействует с БД на PostgreSQL, отображая пользователю, к примеру, только записи таблиц БД с текущей мандатной меткой.
С точки зрения серверного приложения, предоставляющего веб-сервисы, сценарий работы пользователя концептуально близок, хотя и выглядит немного сложнее:
- Пользователь входит в ОС под своей личной УЗ в режиме требуемой ему метки. Запускает браузер с поддержкой MAC, в нашем примере — Mozilla Firefox («обычный» браузер для этих целей не подойдет). Процесс браузера наследует мандатную метку.
- Пользователь запрашивает адрес ресурса приложения с поддержкой мандатных меток. Браузер формирует запрос, добавляя в него мандатную метку.
- Запрос обрабатывает веб-сервер с поддержкой мандатных меток, в нашем примере — Apache Http Server. Веб-сервер (процесс которого работает в режиме минимальной мандатной метки) считывает мандатную метку запроса, находит приложение-обработчик запускает его процесс с переданной мандатной меткой.
- Приложение взаимодействует с БД на PostgreSQL, ретранслируя в запросах мандатную метку.
Наличие MAC в операционной системе накладывает достаточно серьезные ограничения на архитектуру приложения. То, что в ОС без мандатной модели управления доступом кажется тривиальным, в ОС с MAC может принести множество сюрпризов всей команде разработки. Особенно руководителю проекта. Поэтому архитектурное решение приложения с поддержкой MAC должно быть построено до начала разработки. Руководитель проекта с MAC должен настоять на том, чтобы проектирование было выполнено архитектурной группой до начала каких-либо движений в сторону реализации.
Разумеется, для разработки простых приложений (утилит либо приложений, ввиду своей специфики нейтральных к MAC) многие советы попросту не пригодятся. Если же приложение является чем-то более сложным, чем однопользовательское локальное приложение, считывающее файл и записывающее результат своей работы также в файл, то желательно четко осознавать «подводные камни».
Мы собрали рецепты по проектированию приложения с поддержкой MAC, сформулированные на основе собственного опыта. За ними стоят бессонные ночи, непрерывный поток тикетов от тестирования, тысячи часов отладки приложения, которое по всем здравым смыслам должно работать правильно, но почему-то работает не так. Рецепты описаны в максимально простой и нейтральной к технологиям и инструментам форме, и по возможности снабжены схемами для улучшения воспринимаемости. Поехали!
Как избежать MAC, когда его уже не избежать
При проектировании приложения с MAC можно использовать одно очень простое архитектурное решение, которое в итоге сэкономит много нервов и времени. В конфигурацию приложения следует добавить параметр, который сообщает приложению, включена ли мандатная модель управления доступом для данной инсталляции, или нет. Во всех местах приложения, где происходит взаимодействие с инфраструктурой MAC, либо бизнес-функция приложения требует проверки метки, следует сперва проверять значение этого параметра. Если MAC согласно ему отключена, то приложение игнорирует все правила бизнес-логики, предназначенные для проверки MAC-совместимых функций.
С точки зрения трудозатрат придется потратить дополнительное время на реализацию каждой функцию приложения с поддержкой MAC. Потребуется отладить и протестировать одну и ту же функциональность в режиме без мандатной метки, поэтому возрастут расходы на тестирование.
За счет данного решения можно обеспечить приложению (и всей команде разработки), которое вынуждено функционировать в среде MAC, следующие преимущества:
- Кроссплатформерность приложения (ограниченную только лишь возможностями языков программирования) и его независимость от среды выполнения.
- Возможность использования современных инструментов виртуализации (например, Docker) с целью автоматизации.
- Простоту тестирования и отладки функций, которые не связаны непосредственно с MAC.
Рекомендации:
Добавить параметр включения/отключения поддержки мандатных меток в приложении.
Во всех местах, требующих взаимодействия с MAC, прежде всего проверять значение параметра.
При отладке и тестировании необходимо отлаживать (на стороне команды разработки) и тестировать (на стороне команды тестирования) оба режима работы приложения.
Разделяй и властвуй
Другой важный шаг при проектировании, который обязательно должен быть выполнен до начала разработки — разделение модулей, в которых требуется поддержка MAC, от модулей, в которых данный механизм управления доступом не требуется. Использование мандатной модели управления доступом почти всегда усложняет бизнес-логику приложения.
Это та самая инфраструктура, абстрагироваться от которой очень сложно, а порой невозможно. Поэтому приложение следует разбить на модули, а уже по каждому модулю произвести анализ потребности в поддержке MAC. Возможно, именно в вашем случае достаточно поддержать MAC только в одном модуле, и нет смысла из-за данного модуля усложнять все приложение?
В случае, если мы рассматриваем некий абстрактный модуль (или все приложение, если деление приложения на модули не требуется) возможны следующие парадигмы:
- Минимальная метка. Модуль обрабатывает данные в режиме минимальной мандатной метки (минимальная метка, в которой функционируют процессы ОС — например, 0 мандатная метка) либо без мандатной метки.
- Одна метка. Модуль работает с данными только одной мандатной метки выше минимальной мандатной метки (любой метки, отличной от той, в которой функционируют процессы ОС).
- Несколько меток. Модуль работает с данными сразу нескольких мандатных меток (как метки, в которой функционируют процессы ОС, так и других меток, отличных от метки процессов ОС).
Модулям приложения с различными парадигмами обработки мандатных меток не стоит знать друг о друге слишком много. Иначе это чревато возникновением больших и непредсказуемых проблем в части конфликтов доступа к различным объектам и т.д. Идея минимальной связности для модулей очевидна. В случае работы с MAC следует проявлять особую бдительность и следить за всеми «связями» модулей.
Далее рассмотрим подробнее особенности проектирования при трех парадигмах обработки мандатных меток. Для этого мы набросали классификацию от простого случая к сложному. Данная классификация несет сугубо практический и прикладной характер. Она исходит из интуитивно ощутимых различий при разработке тех или иных модулей, а на практике показала свою действенность.
Классификация модулей по режимам обработки MAC
«BRING IT ON»: работа модуля в режиме минимальной мандатной метки
Мотивация для реализации данного механизма в модуле:
- Модуль обрабатывает информацию, которая в принципе не может обрабатываться в системе с другими мандатными метками, и не требует особых привилегий для чтения/записи.
- Модуль сильно связан с инфраструктурой ОС, которая ограничивает его функционирование в режиме мандатной метки, отличной от минимальной.
Модуль, функционирующий в данном режиме, должен проверять мандатную метку процесса. Если метка процесса, в котором выполняется данный модуль, отличается от минимальной (например, не равна 0 мандатной метке), выполнение всех операций (кроме просмотра) должно быть запрещено на уровне бизнес-логики приложения. То есть мы можем просто не пустить пользователя к использованию данного модуля, если он пришел к нам в сеансе мандатной метки, отличной от нулевой.
Примеры практических кейсов, для которых подходит использование режима минимальной мандатной метки:
- Управление учетными записями пользователей в хранилище приложения. Например, если приложение ведет собственный учет УЗ в файле или БД. Все данные, касающиеся безопасности и управления доступом к приложению, обязательно должны храниться в режиме минимальной мандатной метки, иначе модель безопасности приложения будет попросту «рассыпаться» при выполнении приложения в режиме повышенной мандатной метки. Именно по этой причине все системные приложения запускаются строго под минимальной мандатной меткой.
- Управление правами доступа. Например, если в приложении реализована собственная модель разграничения доступа на уровне бизнес-логики.
- Управление параметрами конфигурации приложения, которые должны быть доступны под всеми мандатными метками.
- Управление учетными записями в ОС. Если приложению требуется управлять какими-либо атрибутами УЗ в ОС, все операции должны выполняться строго под минимальной мандатной меткой.
«HURT ME PLENTY»: работа модуля в режиме одной мандатной метки
Этот кейс чуть сложнее, но во многом похож на случай с минимальной мандатной меткой. С точки зрения пользователя работа с приложением меняется не сильно: все те же привычные списки записей, карточки и операции «Просмотр», «Редактировать» и «Сохранить». С той лишь разницей, что в данном режиме пользователь видит только те записи, которые соответствуют мандатной метке его текущего сеанса.
Также может быть разработан ограниченный вариант: в модуле фиксируется значение параметра «мандатной метки по умолчанию». В этом случае эксплуатация модуля возможна только с указанной мандатной меткой, но данный вариант проще в реализации.
Данный кейс может быть полезен в следующих случаях:
- Была допущена ошибка в архитектуре при проектировании модуля (не были заложены особенности обработки записей в MAC), и нет ни времени, ни ресурсов все переписывать.
- Поддержка мандатной модели управления доступом вводится в уже функционирующее приложение, и в соответствии с требованиями необходимо обеспечить работу с меткой выше минимальной в ОС. Да, это тот самый случай, когда к вам приходит руководитель и сообщает с радостью, что мы выиграли конкурс и будем внедрять наше решение в «наименование секретного ведомства»!
- Нет целесообразности в реализации полной поддержки одновременной обработки записей нескольких мандатных меток. Нет необходимости в одновременной обработки записей сразу нескольких мандатных меток.
- Приложение функционирует в однопользовательском режиме.
C точки зрения реализации данный кейс не является очень простым, так как нам необходимо:
- Выбирать только те записи, которые соответствуют текущей мандатной метке, так как в соответствии с моделью Белла – Лападулы пользователь будет видеть записи текущей мандатной метки и всех мандатных меток, расположенных ниже по иерархии.
- Проверять мандатную метку перед выполнением какой-либо операции внесения изменений в запись. При попытке внести изменение в запись с мандатной меткой, отличающейся от мандатной метки сеанса, выполнение операции должно быть прервано.
При выполнении операций в модуле рекомендуется сверять мандатную метку текущего процесса приложения с мандатной меткой по умолчанию. Если мандатная метка модуля не соответствует мандатной метке сеанса, то пользователь не должен быть допущен к выполнению операции.
Примеры практических кейсов, для которых подходит использование режима одной мандатной метки:
- Расписание. Например, для нескольких мандатных меток формируются отдельные расписания (работы сотрудников, графики и т.д.). В каждом из сеансов из перечня допустимых мандатных меток отображается свое расписание, и добавление информации по другим мандатным меткам усложнит восприятие и создаст пространство для дополнительных ошибок. Внесение изменений в расписание производится также в сеансе только своей мандатной метки.
- Мессенджер. Сообщение, отправленное в сеансе вышестоящей мандатной метки, не будет доступно получателю (или получателям) в сеансе нижестоящей мандатной метки. Поэтому логично «расслоить» мессенджер на различные сеансы, где у каждого адресата будет несколько «каналов общения», отдельный «канал» под каждую мандатную метку.
«NIGHTMARE!»: работа модуля в режиме нескольких мандатных меток
Данный режим работы полезен только в том случае, когда в одном сеансе работы с модулем нам необходимо отображать информацию по всем мандатным меткам, расположенным ниже мандатной метки текущего сеанса по иерархии.
При проектировании необходимо описать функциональные требования к модулю, а в детализации каждого функционального требования указать перечень взаимодействий в части мандатной модели (возможные варианты рассмотрены ниже в разделе «Взаимодействие приложения с окружающей средой»). Это позволит выделить какие-то общие концепции взаимодействия с инфраструктурой в части мандатных меток. Также эта информация будет крайне полезна для оценки сложности разработки и при дальнейшем тестировании.
С точки зрения реализации пользовательского интерфейса обычно используются следующие шаблоны:
- Перечень (таблица, коллекция) записей с кнопками выполнения операций над выбранной записью (выбранными записями). Приложение на уровне интерфейса должно сверять, может ли быть выполнена операция над выбранной коллекцией записей.
- Разрешение/запрещение редактирования записи/файла с мандатной меткой, отличной от мандатной метки текущего процесса.
- Получение коллекции записей/файлов с определенной мандатной меткой (фильтрация обрабатываемых данных на основе мандатной метки).
Дальнейший набор бизнес-процессов зависит от сложности бизнес-логики модуля и специфики обработки данных. Например, можно сделать фильтрацию коллекции записей по мандатной метке. Можно вывести мандатную метку записи в интерфейсе.
Простор комбинаций огромнейший, как и пространство для появления ошибок. Поэтому не рекомендуется обрабатывать в рамках одного юзкейса записи с различной мандатной меткой при наличии какой-либо бизнес-логики. Любые операции с коллекцией записей должны производиться с явным указанием мандатной метки, общей для всей коллекции. Обработали третью метку, затем вторую, и т.д.
Для реализации такого режима необходимо заложить следующие функции:
- Функция получение мандатной метки текущего процесса приложения (сеанса пользователя).
- Функция получения мандатной метки записи (если речь идет о работе с записью в БД) или файла (если речь идет об обработке файлов).
- Функция получения мандатной метки записей БД/файлов в коллекции.
Примеры практических кейсов, для которых годится режим нескольких мандатных меток:
- Отчетность. Для реализации данного кейса нам необходимо аккумулировать максимум информации по системе, которая доступна для сеанса с текущей мандатной меткой.
- Журнал. В этом случае разрабатывается интерфейс просмотра всех доступных для просмотра операций с возможностью фильтрации, в том числе и по мандатной метке.
Взаимодействие приложения с окружающей средой
Приложение в среде с MAC взаимодействует с определенным перечнем окружающих его компонентов. Схематично по особенностям взаимодействия их можно классифицировать так:
- Операционная система:
- Параметры мандатной модели:
- Иерархия мандатных меток ОС;
- Мандатные разрешения (диапазоны меток, которые может использовать определенный пользователь) УЗ пользователей ОС.
- Хранилище учетных данных пользователей;
- Аутентификация в ОС (в том числе с учётом мандатной метки);
- Другие механизмы управления доступом (дискреционные POSIX ACL, UNIX и т.д.);
- Работа с ФС;
- Управление процессами;
- Работа с сетью;
- Параметры мандатной модели:
- Стороннее ПО без поддержки MAC;
- Стороннее ПО с поддержкой MAC:
- СУБД (например, PostgreSQL):
- Объекты БД (ячейки, строки, столбцы, схемы, таблицы, БД, кластеры, последовательности, функции и т.д.).
- СУБД (например, PostgreSQL):
- Пользователь.
Нюансы взаимодействия с каждым из компонентов рассмотрим отдельно.
Взаимодействие MAC-совместимого приложения с операционной системой
MAC очень «радует» своими трудностями по настройке правил доступа в файловой системе. Например, львиная доля ошибок в приложениях с MAC связана именно с тем, что приложение в режиме текущей мандатной метки не видит файл, но файл при этом существует в режиме другой мандатной метки (уровнем выше).
Чего мы ожидаем от операционной системы в части MAC?
Если наше приложение работает в многопользовательском режиме, то ему наверняка потребуется запрашивать информацию об учетных записях пользователей, данные которых оно обрабатывает. Это необходимо для поддержки разграничения доступа пользователей. Поэтому приложению потребуется запрашивать у ОС информацию о мандатных разрешениях пользователей. Если УЗ пользователя в ОС управляется нашим приложением, тогда нам потребуется не только читать информацию об УЗ, но и управлять атрибутами УЗ.
Наиболее вероятные потоки взаимодействий ОС и приложения изображены на схеме:
Взаимодействие MAC-совместимого приложения со сторонним ПО без поддержки MAC
Большая часть приложений, которые могут использоваться в ОС с MAC, не умеют обрабатывать MAC.
Поэтому при организации такого взаимодействия требуется эмулировать мандатную метку при передаче данных или запроса процессу такого приложения. Реализуется это путем «расслоения» потока данных на отдельные каналы, каждый из которых логически предназначен для данных с определенной мандатной меткой. Смешивать такие данные категорически запрещается, они должны идти по отдельным очередям, каналам и чуть ли не по отдельным
жилам витых пар
сетевым интерфейсам. Правомерность «логической» реализации разделения данных по MAC тоже является неоднозначным вопросом, поэтому чаще всего лежит на совести заказчика и разработчика приложения.
Возможность использования приложения без MAC приложением, работающим в режиме MAC, зависит от выбранного способа взаимодействия, его специфики, и особенностей реализации обработки поступающих данных внутри приложения.
Взаимодействие MAC-совместимого приложения со сторонним ПО с поддержкой MAC
В случае взаимодействия с ПО с поддержкой MAC наше приложение должно явно уметь считывать метку процесса, который осуществляет запрос, и выполнять операцию в соответствии с мандатной моделью управления доступом. От приложения, взаимодействующего с таким ПО, требуется только лишь выполнение запросов к стороннему приложению/процессу из процесса с корректной мандатной меткой.
Пример популярного приложения с полноценной поддержкой мандатных меток — СУБД PostgresSQL. В определенных вариантах поставки данной СУБД реализована полная поддержка MAC под некоторые ОС с механизмами MAC, например:
- Astra Linux: PostgreSQL, идущий в поставке дистрибутива версии SE.
- SELinux: расширение sepgsql.
PostgreSQL позволяет разделять данные по мандатным меткам (есть еще поддержка мандатных категорий, но нас интересуют метки) на следующих уровнях:
- На уровне кластера.
- На уровне БД кластера.
- На уровне схемы БД кластера.
- На уровне таблицы схемы БД кластера.
- На уровне столбца таблицы схемы БД кластера.
- На уровне записи таблицы схемы БД кластера.
В результате в реализации MAC получается такая «матрешка»: каждый «родительский» уровень накладывает свои ограничения на все «дочерние» уровни. Поэтому при реализации взаимодействия с каждым подобным приложением с полноценной поддержкой MAC требуется учитывать его специфику работы. Универсальных рецептов нет.
Взаимодействие MAC-совместимого приложения с пользователем
Каким бы странным ни выглядел данный аспект взаимодействия по сравнению с рассмотренными ранее, но не остановиться на нем нельзя. Ведь именно для пользователя чаще всего строятся приложения с поддержкой MAC, не так ли?
Приложение с поддержкой MAC практически ничем не отличается от такового без MAC в части пользовательского интерфейса во всех режимах, за исключением режима одновременной работы с несколькими мандатными метками.
На примере распространенных сегодня веб-приложений чаще всего встречаются следующие кейсы:
Выводы
Мы рассмотрели несколько аспектов разработки приложения с поддержкой MAC. Все случаи предусмотреть, разумеется, сложно. Большая часть особенностей мандатной модели зависит от реализации, доступной для применения в выбранной ОС.
Поддержка MAC приложением — это не дополнительная «фича» приложения. Это серьезное архитектурное решение, требующее планирования и проектирования. Наибольшая «боль» для проектировщика MAC-совместимого приложения:
- взаимодействие с инфраструктурой ОС (файловая система, сетевые взаимодействия, запуск процессов с нужной мандатной меткой в случае выполнения приложения на сервере);
- взаимодействие с прикладным ПО с встроенной поддержкой MAC (например, СУБД);
- взаимодействие с пользователем в части корректной обработки MAC-совместимых операций.
На этом пока все! Дополнения, личный опыт и комментарии к статье приветствуются!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Сталкивались ли вы с MAC в своей профессиональной деятельности?
26.67%
Да, теперь снится в кошмарах
4
26.67%
Да, но очень ограниченно, не удалось насладиться
4
20%
Нет, но скоро предстоит что-нибудь разработать
3
26.67%
Нет и не планирую
4
Проголосовали 15 пользователей.
Воздержались 4 пользователя.
Контролируемый доступ к папкам (Controlled Folder Access, CFA) — функция безопасности, появившаяся в Windows 10 версии 1709 (Fall Creators Update) и предназначенная для защиты файлов пользователя от вредоносных программ. Контролируемый доступ к папкам входит в состав Windows Defender Exploit Guard и позиционируется как средство для борьбы с вирусами-шифровальщиками.
Небольшое лирическое отступление.
Принцип действия вируса-шифровальщика состоит в том, что при попадании на компьютер он шифрует все файлы, до которых сможет добраться. Обычно шифруются файлы со стандартными расширениями (doc, xls, png, dbf и т.п.), т.е. документы, картинки, таблицы и прочие файлы, которые могут предоставлять ценность для пользователя. Также вирус удаляет теневые копии, делая невозможным восстановление предыдущих версий файлов.
После шифрования вирус ставит пользователя в известность о случившемся. Например на видном месте создается файл с сообщением о том, что файлы были зашифрованы, попытки расшифровки могут привести к окончательной потере данных, а для успешной расшифровки необходим закрытый ключ. Ну а для получения ключа требуется перевести некоторую сумму на указанные реквизиты.
А теперь о грустном. Современные вирусы-шифровальщики используют криптостойкие алгоритмы шифрования, поэтому расшифровать файлы без ключа практически невозможно. Отправка денег злоумышленникам также не гарантирует получение ключа, зачастую он просто не сохраняется. И если у вас нет резервной копии, то велика вероятность того, что с зашифрованными файлами придется попрощаться навсегда.
Поэтому, чтобы избежать потери данных, необходимо не допустить саму возможность шифрования. Именно для этого и предназначен контролируемый доступ к папкам. Суть его работы заключается в том, что все попытки внесения изменений в файлы, находящиеся в защищенных папках, отслеживаются антивирусной программой Windows Defender. Если приложение, пытающееся внести изменение, не определяется как доверенное, то попытка изменений блокируется, а пользователь получает уведомление.
По умолчанию контролируемый доступ к папкам в Windows 10 отключен. Для его включения есть несколько различных способов. Рассмотрим их все по порядку, начиная с наиболее простого.
Включение из графической оснастки
Для быстрого перехода к настройкам в меню Пуск открываем строку поиска, набираем в ней ″контролируемый доступ к папкам″ или ″controlled folder access″.
Затем находим нужный переключатель и переводим его в положение «Включено». Напомню, что для этого необходимо иметь на компьютере права администратора.
Обратите внимание, что для функционирования CFA у антивируса Windows Defender должна быть включена защита в режиме реального времени. Это актуально в том случае, если вы используете для защиты сторонние антивирусные программы.
После активации CFA станут доступны две новые ссылки: ″Защищенные папки″ и ″Разрешить работу приложения через контролируемый доступ к файлам».
По умолчанию CFA защищает только стандартные папки в профиле пользователей (Documents, Pictures, Music, Videos и Desktop). Для добавления дополнительных папок надо перейти по ссылке ″Защищенные папки″, нажать на плюсик и выбрать папки, которые необходимо защищать. При добавлении папки защита распространяется на все ее содержимое.
Также при необходимости можно создать список доверенных приложений, которым разрешено вносить изменения в защищенные папки. Теоретически нет необходимости добавлять все приложения в доверенные, большинство приложений разрешается автоматически. Но на практике CFA может блокировать работу любых приложений, даже встроенных в Windows.
Для добавления приложения надо перейти по ссылке ″Разрешить работу приложения через контролируемый доступ к файлам» и нажать на ″Добавление разрешенного приложения″.
Можно выбрать приложение из недавно заблокированных
или указать вручную. В этом случае потребуется найти директорию установки приложения и указать его исполняемый файл.
Включение с помощью PowerShell
CFA входит в состав Windows Defender, для управления которым в Windows 10 имеется специальный PowerShell модуль. С его помощью также можно включить контроль папок и настроить его. Для включения CFA используется такая команда:
Set-MpPreference -EnableControlledFolderAccess Enabled
Для добавления защищенных папок примерно такая:
Add-MpPreference -ControlledFolderAccessProtectedFolders ″C:Files″
Ну а добавить приложение в список доверенных можно так:
Add-MpPreference -ControlledFolderAccessAllowedApplications ″C:Program Files (x86)Notepad++notepad++.exe″
При включении из графической оснастки у CFA доступно всего два режима — включено и выключено. Но на самом деле у CFA есть целых 5 режимов работы, которые можно активировать из консоли PowerShell. За выбор режима отвечает значение параметра EnableControlledFolderAccess:
• Disabled — контролируемый доступ к папкам неактивен. Попытки доступа к файлам не блокируются и не записываются в журнал;
• Enabled — контролируемый доступ к папкам включен. Попытки доступа к файлам в защищенных папках блокируются, производится запись в журнал;
• AuditMode — режим аудита. В этом режиме попытки доступа к файлам не блокируются, но записываются в системный журнал;
• BlockDiskModificationOnly — блокировать только изменения диска. В этом режиме блокируются и регистрируются в журнале попытки недоверенных приложений произвести запись в защищенных секторах диска. Попытки изменения или удаления файлов никак не отслеживаются.
• AuditDiskModificationOnly — аудит изменений диска. В этом режим отслеживаются и вносятся в журнал попытки изменения на диске, при этом сами изменения не блокируются.
Проверить текущие настройки CFA можно также из консоли, следующей командой:
Get-MpPreference | fl *folder*
Обратите внимание, что режим работы показан в цифровом виде. Это те значения, которые хранятся в реестре, о них будет написано чуть ниже.
Включение с помощью групповых политик
Настроить работу CFA можно с помощью локальных групповых политик. Для запуска оснастки редактора локальных групповых политик надо нажать Win+R и выполнить команду gpedit.msc.
Нужные нам параметры находятся в разделе Конфигурация компьютераАдминистративные шаблоныКомпоненты WindowsАнтивирусная программа ″Защитник Windows″Exploit Guard в Защитнике WindowsКонтролируемый доступ к папкам (Computer configurationAdministrative templatesWindows componentsWindows Defender AntivirusWindows Defender Exploit GuardControlled folder access).
За включение и режим работы CFA отвечает параметр ″Настройка контролируемого доступа к папкам″. Для активации надо перевести его в состояние «Включено» и затем выбрать требуемый режим работ. Здесь доступны все те же режимы, что и из консоли PowerShell.
Для добавления папок в защищенные служит параметр ″Настройка защищенных папок″. Параметр нужно включить, а затем нажать на кнопку «Показать» и внести папки в таблицу. Формат значений не очень понятный — в столбце ″Имя значения″ указывается путь к папке, а в столбце ″Значение″ просто ставится 0.
Таким же образом в параметре ″Настроить разрешенные приложения″ добавляются доверенные приложения — в столбце ″Имя значения″ указывается путь к исполняемому файлу, в столбце ″Значение″ ставится 0.
При настройке через политики кнопка включения CFA в графической оснастке становится неактивной, хотя добавлять папки и разрешенные приложения по прежнему можно.
Включение с помощью реестра
Включение CFA с помощью реестра — наиболее сложный и трудоемкий способ из имеющихся. Использовать его особого смысла нет, но знать о нем стоит. Итак, для включения CFA из реестра запускаем редактор реестра (Win+R -> regedit), переходим в раздел HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows DefenderExploit GuardControlled Folder Access и устанавливаем значение параметра EnableControlledFolderAccess:
0 — выключено;
1 — включено;
2 — режим аудита;
3 — блокировать только изменения диска;
4 — аудит только изменений диска;
А теперь внимание, при попытке сохранить значение мы получим сообщение об ошибке и отказ в доступе.
Дело в том, что, даже будучи локальным администратором, для получения доступа надо выдать себе соответствующие права на ветку реестра. Для этого кликаем на ней правой клавишей и в открывшемся меню выбираем пункт ″Разрешения″.
Переходим к дополнительным параметрам безопасности, меняем владельца ветки и выдаем себе полный доступ. После этого можно приступать к редактированию реестра.
Доверенные приложения добавляются в разделе HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows DefenderExploit GuardControlled Folder AccessAllowedApplications. Для добавления приложения надо создать параметр DWORD с именем, соответствующим полному пути к исполняемому файлу, значение должно быть равным 0.
Ну и защищенные папки добавляются в разделе HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows DefenderExploit GuardControlled Folder AccessProtectedFolders. Принцип такой же как и у приложений — для каждой папки создается соответствующий параметр с именем папки и значением 0.
Тестирование
После включения контролируемого доступа к папкам надо бы проверить, как оно работает. Для этой цели у Microsoft есть специальная методика, там же можно найти тестовый вирус-шифровальщик и подробную инструкцию. Так что загружаем вирус и приступаем к тестированию.
Примечание. Стоит отдать должное дефендеру, он сработал оперативно и не дал мне спокойно загрузить тестовый вирус. Сразу после загрузки вирус был помещен в карантин и его пришлось добавлять в исключения.
Для тестирования включим CFA в стандартном режиме, добавим в защищенные папку C:Files, в папку положим обычный текстовый файл. Затем возьмем тестовый вирус-шифровальщик и натравим его на защищенную папку. Файл остается невредимым,
а система безопасности выдаст сообщение о заблокированной попытке внесения изменений.
Теперь отключим CFA и снова запустим шифровальщика. Папка осталась без защиты, в результате получим зашифрованный файл
и как бонус, небольшой привет от Microsoft 🙂
Мониторинг
Оперативно просмотреть недавние действия можно из графической оснастки, перейдя по ссылке ″Журнал блокировки″. Здесь можно увидеть подробности происшествия, а при необходимости скорректировать настройки фильтра, например добавить приложение в доверенные.
Также все события, связанные с CFA, регистрируются в системном журнале, в разделе ″Журналы приложение и службMicrosoftWindowsWindows DefenderOperational″. Для удобства можно создать настраиваемое представление, для этого надо в разделе «Действия» выбрать пункт ″Создать настраиваемое представление″,
в открывшемся окне перейти на вкладку XML, отметить чекбокс ″Изменить запрос вручную″ и добавить следующий код (при копировании обязательно проверьте кавычки):
<QueryList>
<Query Id=″0″ Path=″Microsoft-Windows-Windows Defender/Operational″>
<Select Path=″Microsoft-Windows-Windows Defender/Operational″>*[System[(EventID=1123 or EventID=1124 or EventID=5007)]]</Select>
<Select Path=″Microsoft-Windows-Windows Defender/WHC″>*[System[(EventID=1123 or EventID=1124 or EventID=5007)]]</Select>
</Query>
</QueryList>
Затем дать представлению внятное название и сохранить его.
В результате все события будут отображаться в разделе настраиваемых представлений и вам не придется каждый раз искать их.
Всего с CFA связано три события. Событие с ID 1123 генерируется в режимах блокировки доступа к файлам (1) и блокировки изменений диска (3) при попытке недоверенного приложения внести изменения.
Событие с ID 1124 генерируется в режимах аудита файлов (2) и изменений диска (4) при внесении изменений.
Ну и в событии с ID 5007 регистрируются все изменения, вносимые в настройки CFA. Это на тот случай, если вирус попытается отключить защиту.
Заключение
Как видно на примере, контролируемый доступ к папкам небесполезен и вполне способен защитить файлы от вирусов-вымогателей. Однако есть некоторые моменты, которые могут вызывать неудобства при его использовании.
Когда программа блокируется CFA при попытке внесения изменений, то она блокируется совсем, без вариантов. Нет никакого диалогового окна по типу UAC, не предлагается никаких возможных действий. Просто при попытке сохранить результат своей работы вы внезапно узнаете, что программа признана недоверенной и заблокирована. Да, конечно, всегда можно добавить программу в исключения, но тут есть еще один нюанс. При добавлении программы в доверенные изменения не вступят в силу до перезапуска программы. И в этой ситуации вы можете либо завершить работу программы, потеряв все сделанные в ней изменения, либо полностью отключить CFA.
Само добавление доверенных приложений также реализовано не самым удобным способом. Вместо того, чтобы просто выбрать приложение из списка, нужно найти директорию его установки и указать на исполняемый файл. У обычного пользователя эта процедура может вызвать затруднения. Что интересно, нельзя заранее посмотреть, какие именно программы находятся в белом списке. Microsoft утверждает, что нет необходимости добавлять все программы вручную, большинство разрешено по умолчанию. Но по факту защита срабатывала на вполне безобидных офисных программах и даже на встроенных в Windows утилитах (напр. Snipping Tool).
Так что сама идея контролируемого доступа к папкам очень даже хороша, но реализация ее немного подкачала. Впрочем, на мой взгляд, лучше потерпеть некоторые неудобства от ее работы, чем потерять важные данные или платить вымогателям. Поэтому в целом я за использование CFA.
Ограниченный режим доступа позволяет ограничить локальную учетную запись пользователя так, чтобы она имела доступ только к одному приложению UWP. Вот как выбрать приложение для корректной работы в режиме ограниченного доступа для Windows 10.
Ограниченный доступ — это способ запретить запуск любых универсальных приложений (Universal Platform App) для стандартной учетной записи пользователя, кроме указанного вами. Это означает, пользователь будет иметь доступ, только к одному приложению. Эта функция весьма полезна для общедоступных систем, таких как кафе, торговые площадки и т. Д.
Настройка режима ограниченного доступа довольно проста в Windows 10. Ниже мы рассмотрим два способа, которыми вы можете воспользоваться для этого.
Как настроить назначенный доступ в Windows 10 с помощью приложения «Параметры».
Способ 1.
1. Кликните правой кнопкой мыши кнопку «Пуск» или нажмите клавиши Win + X и выберите «Параметры».
2. В приложении «Параметры» перейдите в раздел «Учетные записи» → «Семья и другие пользователи».
3. В разделе «Семья и другие пользователи» в разделе «Блокировка устройства» нажмите ссылку «Настройка ограниченного доступа».
4. Затем нажмите «Выберите учетную запись» и укажите учетную запись пользователя, для которого вы хотите настроить доступ только к одному приложению.
5. Теперь, нажмите «Выберите приложение», а затем укажите приложение, к которому будет разрешён доступ.
Все, вы только что настроили ограниченный доступ.
Если вы все выполнили правильно, после входа под данной учетной записью, будет выполнен автоматический запуск указанного вами приложения, к другим приложениям и к самой системе доступа не будет.
Чтобы выйти из ограниченного доступа, вы можете просто нажать комбинацию клавиш Ctrl+Alt+Del. Кроме того, вы можете нажать ссылку «Отключение ограниченного доступа» на самой странице настройки.
Как настроить ограниченный доступ с помощью PowerShell в Windows 10.
Способ 2.
1. Откройте Windows PowerShell от имени администратора (см. как).
2. Затем введите следующий командлет и нажмите клавишу Enter :
Get-AppxPackage
3. Теперь скопируйте строку PackageFullName для приложения, которое вы хотите использовать для ограниченного доступа.
4. Введите следующий командлет и нажмите клавишу Enter:
Set-AssignedAccess -AppUserModelId <PackageFullName>!app -UserName <USERNAME>
* Замените <PackageFullName> полным именем пакета приложения и <USERNAME> учетной записью пользователя, которую вы хотите ограничить.
Это должно настроить ограниченный режим доступа. Чтобы выйти из режима, просто нажмите Ctrl+Alt+Del, как было упомянуто ранее.
Таким образом, вы можете управлять пользователями которые получают доступ к вашему устройству с Windows 10.
Все!
Вам может быть интересно: Как ограничить или установить время доступа пользователя в Windows 10.