Особенности защиты баз данных IBM DB2 и Oracle, страница 4

Механизмы реализации мандатной модели управления доступом

Мандатная (многоуровневая, нормативная) модель управления доступом основывается на совокупности правил предоставления доступа, определенных на множестве атрибутов безопасности субъекта и объекта. Обычно в качестве многоуровневой модели используется модель Белла-ЛаПадула. Здесь атрибутами безопасности являются гриф секретности информации и соответствующий уровень допуска пользователя. Существует четыре возможных уровня секретности информации: совершенно секретно, секретно, конфиденциально, несекретно. Классы доступа пользователей имеют аналогичные названия. При этом справедливы следующие свойства.

1. Субъект имеет право читать только те документы, уровень безопасности которых не превышает его собственный. Например, пользователь класса «секретно» не может читать документы класса «совершенно секретно», но ему доступны документы классов «секретно», «конфиденциально», «несекретно».

2. Право на запись дается в том случае, если класс субъекта такой же или ниже, чем класс записываемого объекта. Это означает, что информация, принадлежащая какому-либо уровню секретности, никогда не может быть записана в объект, имеющий более низкий уровень секретности, поскольку это могло бы привести по неосторожности к деградации защиты классифицированной информации.

Мандатная модель доступа в Oracle реализована при помощи средства, называемого Label Security [8.9]. Контроль доступа при использовании мандатной модели производится на уровне строк таблиц. К защищаемой таблице Oracle добавляет дополнительный столбец меток безопасности; каждая метка содержит уровень секретности строки таблицы. Пользователям также присваивается уровень безопасности. Однако уровни секретности не являются заранее заданными и фиксированными: их с самого начала придумывает, создает и настраивает администратор безопасности.

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

Опция Oracle Label Security реализована в виде набора системных процедур и ОЦ, которые обеспечивают и создание уровней и меток безопасности, и модификацию запросов пользователей «налету» таким образом, чтобы условие отбора строк включало сравнение метки безопасности с неким заданным значением.

Применение Oracle Label Security может быть упрощенно описано в виде последовательности следующих шагов.

1. Установка Label Security.

Установка выполняется при помощи универсального инсталлятора, с выбором опции Oracle Label Security. После установки необходимо выполнить скрипт $ORACLE_HOME/rdbms/admin/catols.sql от имени системного администратора – пользователя SYS. В результате в СУБД появляются новые системные процедуры и ОЦ, а также пользователь LBACSYS, от имени которого в дальнейшем будут выполняться все действия, связанные с применением меток. Пароль этого пользователя по умолчанию совпадает с его именем. Для повышения защищенности пароль необходимо перезадать.

2. Создание правил разграничения доступа.

Под правилами в данном случае понимаются наборы уровней доступа и соответствующих предписаний безопасности. Для создания набора правил используется процедура sa_sysdba.create_policy с двумя строковыми параметрами. Первый параметр – имя набора правил, а второй – имя столбца, добавляемого к каждой таблице, для которой устанавливается меточный контроль. Например, вызов:

EXEC sa_sysdba.create_policy(‘DOC_POLICY’, ‘DOC_LABEL’);

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