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

Для удаления правил используется процедура sa_sysdba.drop_policy. Для выключения и повторного включения правил – соответственно, sa_sysdba.disable_policy и sa_sysdba.enable_policy. У всех трех процедур один параметр – имя набора правил.

3. Задание уровней безопасности.

Уровни безопасности характеризуются тремя параметрами: название уровня, его числовой идентификатор и описание. Каждый уровень привязывается к существующему набору правил. Для создания уровня используется процедура sa_components.create_level. Приведем пример ее вызова:

EXEC sa_components.create_level(‘DOC_POLICY’, 1000, ‘Public’, ‘Общий доступ’);

EXEC sa_components.create_level(‘DOC_POLICY’, 2000, ‘Confidential’, ‘Конфиденциальная информация’);

Очевидно, что в списке параметров на первом месте стоит имя набора правил. На втором месте – идентификатор уровня; чем больше числовое значение идентификатора, тем выше конфиденциальность (поэтому в рассматриваемом примере уровень Confidential имеет более высокое значение идентификатора, чем Public). После идентификатора в списке параметров идет название уровня, затем – описание.

4. Создание отделений.

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

Для создания отделения используется процедура sa_components.create_compartment. Ее параметры:

·  имя набора правил;

·  числовой идентификатор;

·  краткое имя;

·  полное имя.

Пример создания отделений для финансового отдела (FINANCE) и отдела кадров (HUMAN_RESOURCE):

EXEC sa_components.create_compartment(‘DOC_POLICY’, 200, ‘FIN’, ‘FINANCE’);

EXEC sa_components.create_compartment(‘DOC_POLICY’, 100, ‘HR’, ‘HUMAN_RESOURCE’);

5. Создание групп.

Группа во многом напоминает отделение, поэтому, в принципе, существует выбор между отделениями и группами. Отделения и группы могут использоваться совместно для создания более детализированной иерархии пользователей.

В приводимом нами примере выделим следующие группы: восточный регион (EAST_REGION), западный регион (WEST_REGION) и родительскую по отношению к ним обеим группу ALL_REGION. Для создания групп используем процедуру sa_components.create_group. Параметры процедуры аналогичны параметрам sa_components.create_compartment, но для дочерних групп существует пятый параметр – сокращенное имя родительской группы.

EXEC sa_components.create_group('DOC_POLICY', 10, 'ALL', 'ALL_REGIONS');
EXEC sa_components.create_group('DOC_POLICY', 20, 'WEST', 'WEST_REGION', 'ALL');
EXEC sa_components.create_group('DOC_POLICY', 30, 'EAST','EAST_REGION', 'ALL');

6. Создание меток.

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

Описание метки должно соответствовать следующему синтаксису:

уровень : отделение, …, отделение_n : группа, …, группа_n