Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторный практикум по НСД 2013

.pdf
Скачиваний:
65
Добавлен:
12.11.2022
Размер:
9.94 Mб
Скачать

281

c)static_poicy;

d)enable;

e)statement_types;

f)Правильных ответов нет.

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

a)Специальная функция, запускаемая на выполнение пользователем;

b)Заголовок специализированного модуля;

c)after logon trigger;

d)Дополнительная процедура, автоматически запускаемая при создании сессии;

e)Триггер приложения;

f)Правильных ответов нет.

6.Администратор безопасности создает контекст приложения для пользователя userfga с паролем userfga.Укажите команду, которой может быть создан контекст.

a)CREATE SELECTIVE CONTEXT FOR userfga;

b)CREATE CONTEXT FOR userfga IDENTIFIED BY userfga;

c)CREATE OR REPLACE USER CONTEXT FOR userfga;

d)CREATE OR REPLACE CONTEXT prof_sec_ctx USING GET_PROF_ID;

e)CREATE OR REPLACE SELECTIVE USER CONTEXT FOR userfga;

f)Правильных ответов нет.

7.При проверке настроек FGA для работы с таблицей «employee» пользователю была выдана ошибка, смысл которой может быть определен фразой «ошибка на рекурсивном уровне…». Укажите среди ниже перечисленных верную причину этой ошибки.

a)Не создан контекст приложения;

b)Не создана процедура, устанавливающая контекст;

c)Не создана функция, реализующая политику безопасности;

d)Процедура, устанавливающая контекст, создана с ошибкой;

e)Функция, устанавливающая контекст, в возвращаемом значении содержит запрос, в котором во фразе «from» указана таблица «employee»;

f)Правильных ответов нет.

282

4.6.5.ЛАБОРАТОРНАЯ РАБОТА № 13: МАНДАТНЫЙ КОНТРОЛЬ ДОСТУПА ПОЛЬЗОВАТЕЛЕЙ К ИНФОРМАЦИИ В БАЗЕ ДАННЫХ

Цель: Получение навыков практического использования мандатного контроля доступа пользователей к информации в базе данных. Ознакомление с мандатным контролем доступа (OLS – Oracle Label Security) пользователей к информации в базе данных.

Сценарий проведения работы

1.Установка предметной области, заданной преподавателем для настройки детального контроля, проектирование меток.

2.Установка Oracle Label Security.

3.Создание политики безопасности, воплощающей компоненты меток пользователей (в таблице «Emp») и строк (в таблице «Official»).

4.Определение обязательного компонента меток − уровней доступа (конфиденциальности).

5.Определение второго компонента метки (compartment).

6.Определение третьего компонента метки (group).

7.Создание меток в сочетании трех компонентов с присвоением меткам численной величины.

8.Применение политики к таблице.

9.Создание пользователей и наделение их соответствующими правами.

10.Назначение меток пользователям.

11.Назначение меток строкам таблицы «Official».

12. Проверка всех настроек – демонстрация OLS в работе.

Реализация сценария лабораторной работы

Установка предметной области для настройки детального контроля, проектирование меток

connect sys/sys@orcl as SYSDBA DROP USER scott CASCADE;

CREATE USER scott IDENTIFIED BY scott DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10m ON users;

GRANT create session, resource TO scott; connect scott/scott@orcl

283

Скрипт scott_with_official.sql приведен в приложении 8. Перед выполнением нижеприводимой команды надо скопировать скрипт из приложения 8 в текстовый файл с именем scott_with_official.sql и поместить его в папку c:\tmp.

@c:\tmp\scott_with_official.sql

Эта предметная область основана на предметной области пользователя «Scott», имеющейся в поставляемой с инсталляционной версией Oracle базе данных ORCL. В дополнение к предметной области пользователя «Scott» добавлена таблица «Official» (чиновник), являющаяся дочерней по отношению к таблице «Emp». Служащие компании, представленные в таблице «Emp», общаются с чиновниками, представленными в таблице «Official», причем каждый служащий компании общается с чиновником, соответствующим «своему» или ниже «своего» уровня. Под уровнем понимается не только должность, но и уровень конфиденциальности, и тип отдела. На рис.16.55 показана иерархия подчиненности и принадлежность к разным отделам служащих в таблице «EMP».

Рис.16.55. Иерархия подчиненности и принадлежность разным отделам служащих в таблице «EMP»

Для пользователей из таблицы «Emp» определим разные права на просмотр таблицы «Official». Пользователь «KING» имеет право просматривать в таблице «Official» информацию обо всех чиновниках, с которыми общаются все сотрудники компании. Пользователь «CLARK» может просматривать информацию в таблице «Official» о начальнике и всех служащих отдела финансов, пользователь «MILLER» может просматривать в таблице «Official» информацию только о

284

младшем чиновнике – эксперте отдела финансов. Аналогичное разграничение полномочий установлено для служащих отдела «RESEARCH». В таблице «Official» служащим отдела «RESEARCH» соответствуют чиновники отдела исследований. Пользователь «JONES» имеет право просматривать в таблице «Official» информацию обо всех чиновниках отдела исследований. Пользователи «SCOTT», «FORD» могут просматривать информацию о старших экспертах и экспертах отдела исследований. Пользователи «ADAMS», «SMITH» могут просматривать информацию только об экспертах отдела исследований. Наконец, служащим отдела «SALES» соответствуют чиновники отдела торговли из таблицы «Official», и для служащих отдела «SALES» установлено разграничение полномочий при работе с таблицей «Official» сходное с тем, как это сделано для служащих отдела «RESEARCH».

Установим метки для строк таблицы «Official». Метки могут состоять из трех компонентов: уровня доступа (LEVEL), отделения (COMPARTMENT) и группы (GROUP). Первый из этих компонентов в OLS Oracle является обязательным, остальные два – опционными. В нашем примере мы будем использовать для формирования меток строк таблицы «Official» и пользователей − сотрудников фирмы из таблицы «Emp» все три компоненты.

Определим 4 уровня доступа к строкам таблицы «Official» (табл.16.11):

 

Таблица 16.11.

Уровень доступа (LEVEL)

Числовой идентификатор

уровня доступа

 

HS (Highly sensitive)

40

S (Sensitive)

30

C (Confidential)

20

P (Public)

10

Информация о главе департамента МИНФИН имеет уровень «HS». Информация о начальниках отделов обладает уровнем «S». Данные о старших экспертах помечена уровнем «C». Информация об экспертах (подчиненных старших экспертов) имеет гриф «P».

Для того чтобы сотрудники фирмы из таблицы «Emp» могли видеть информацию из таблицы «Official» о чиновниках в пределах компетенции своего департамента, введем 3 отделения (по количеству отделов в таблице «Official»; будем полагать, что глава департамента МИНФИНа числится за отделом финансов).

 

Таблица 16.12

Отделения (COMPARTMENT)

Числовой идентификатор

отделения

 

FIN (FINANCY)

10

ISS (ISSLEDOVANIE)

20

 

285

 

TRG(TORGOVLYA)

30

В соответствие с существующей иерархией чиновников определим иерар-

хию групп в таблице «Official» (табл.16.13):

 

 

 

Таблица 16.13.

Группа (GROUP)

Числовой

Название родительской

идентификатор группы

группы

 

GD (Gla-

100

 

va_Departamenta)

 

 

NO (Nachalnik_Otdela)

80

GD

SE (Starshiy_Expert)

40

NO

E (Expert)

20

SE

Рис. 16.56. Компоненты метки строк таблицы «OFFICIAL»

Компоненты метки строк таблицы «Official» показаны на рис.16.56.

Теперь определим метки пользователей (сотрудников фирмы из таблицы «Emp»), которые будут работать со строками таблицы «Official». Уровень (метка) сотрудника фирмы из таблицы «Emp» также определяется тремя измерениями: уровнем доступа (LEVEL), отделением (COMPARTMENT), группой (GROUP). Рисунок 16.56 поясняет введенные компоненты метки для строк таблицы «Official». Схожесть рис.16.55 и рис. 16.56 выявляет смысловую обоснованность введения таких же меток для пользователей, занимающих на рис.16.55 позиции, сходные с позициями чиновников на рис. 16.56.

Установка Oracle Label Security

Oracle Label Security не устанавливается по умолчанию в версии Oracle 10g Enterprise Edition. Последовательность действий такова:

Надо запустить Oracle Universal Installer.

286

Выберите и установите Oracle Label Security option.

При установке укажите верный путь: Disk_s_programmoy_ustanovki_10g\companion\database\stage\products.xml) к

файлу «products.jar» на форме «Specify Source Location». На следующей форме «Select Installation Type Oracle Database 10g…» выберите «Custom», на форме

«Specify Home Details» укажите верный путь к директории сервера Oracle. После верного выбора на предыдущих шагах появится форма, в которой для Oracle Label Security надо «кликнуть» checkbox (cправа в строке «Oracle Label Security» написано «not installed»), а затем убрать checkbox в строке «Oracle services for Microsoft Transaction Server 10.2…», после этого надо нажатием «Next» перейти к следующей форме, из которой и надо стартовать установку.

После сообщения Oracle Universal Installer об успешном завершении установки необходимо перезагрузить компьютер.

Затем пользователем SYS выполните скрипт ORACLE_HOME\rdbms\ admin\catols.sql следующим образом:

CONN sys/sys AS SYSDBA;

Здесь предполагается, что пароль для пользователя «sys» установлен «sys»

ORACLE_HOME\rdbms\ admin\catols.sql

ORACLE_HOME можно найти в реестре (Мой компьютер- >HKEY_LOCAL_MACHIN ->

SOFTWARE->ORACLE….).

Скрипт catols.sql выполняет команду SHUTDOWN IMMEDIATE на последнем этапе выполнения. Затем надо еще раз перезагрузить компьютер, после чего запустите БД заново пользователем «sys».

CONN sys/sys AS SYSDBA startup

SELECT username FROM dba_users;

Вы заметите появление нового пользователя LBACSYS, в схеме которого находятся объекты Oracle Label Security. Его пароль по умолчанию LBACSYS. Этот пользователь будет управлять политиками безопасности.

На заметку:

Пользователь «LBACSYS» не удаляется обычным образом (DROP USER LBACSYS CASCADE). Для удаления пользователя «LBACSYS», соединившись пользователем SYS AS SYSDBA, запустите на исполнение файл:

ORACLE_HOME/rdbms/admin/catnools.sql.

287

Для включения компонента Oracle Label Security в Oracle 11g необходимо выполнить следующую последовательность шагов:

1. Остановить экземпляр базы данных

Shutdown immediate

2.В панели управления остановить службы, связанные с процессом функционирования экземпляра Oracle Database

3.В окне DOS выполнить следующую последовательность команд:

cd %ORACLE_HOME%/bin chopt enable lbac

4.Запустить в панели управления остановленные ранее службы.

5.Запустить экземпляр Oracle Database командой

startup

Создание политики безопасности, воплощающей компоненты меток пользователей (в таблице «Emp») и строк (в таблице «Official»)

connect lbacsys/lbacsys@orcl

--Сначала удалим политику, созданную при предыдущем выполнении лабораторной работы

BEGIN sa_sysdba.drop_policy('official_policy'); END;

/

--теперь создадим политику заново

BEGIN sa_sysdba.create_policy('official_policy','scott_col','label_default,read_control'); END;

/

--проверка того, что политика добавилась и действует

SELECT policy_name, status from DBA_SA_POLICIES;

Определение обязательного компонента меток ‒ уровней доступа (конфиденциальности)

connect lbacsys/lbacsys@orcl BEGIN sa_components.create_level

('OFFICIAL_POLICY', 40, 'HS', 'Highly_Sensitive');

sa_components.create_level ('OFFICIAL_POLICY', 30, 'S', 'Sensitive');

sa_components.create_level ('OFFICIAL_POLICY', 20, 'C', 'Confidential');

288

sa_components.create_level ('OFFICIAL_POLICY', 10, 'P', 'Public');

END;

/

--проверка созданных уровней

SELECT * FROM dba_sa_levels ORDER BY level_num;

Определение второго компонента метки (compartment)

connect lbacsys/lbacsys@orcl BEGIN sa_components.create_compartment

('OFFICIAL_POLICY', 10, 'FIN','FINANCY');

sa_components.create_compartment ('OFFICIAL_POLICY', 20, 'ISS','ISSLEDOVANIE');

sa_components.create_compartment ('OFFICIAL_POLICY', 30,

' TRG', 'TORGOVLYA'); END;

/

--проверка второго компонента метки select * from DBA_SA_COMPARTMENTS;

Определение третьего компонента метки (group)

connect lbacsys/lbacsys@orcl BEGIN

sa_components.create_group ('OFFICIAL_POLICY', 100,'GD','Glava_Departamenta');

sa_components.create_group ('OFFICIAL_POLICY', 80,'NO','Nachalnik_Otdela','GD');

sa_components.create_group ('OFFICIAL_POLICY', 40,'SE','Starshiy_Expert','NO');

sa_components.create_group ('OFFICIAL_POLICY', 20,'E','Expert','SE');

END;

/

--проверка третьего компонента метки select * from DBA_SA_GROUPS;

Создание меток в сочетании трех компонентов с присвоением меткам численной величины

289

connect lbacsys/lbacsys@orcl BEGIN sa_label_admin.create_label

('OFFICIAL_POLICY', '100',

'HS:FIN,ISS,TRG:GD', TRUE); sa_label_admin.create_label

('OFFICIAL_POLICY', '200', 'S:FIN:NO', TRUE);

sa_label_admin.create_label ('OFFICIAL_POLICY', '300', 'S:ISS:NO', TRUE);

sa_label_admin.create_label ('OFFICIAL_POLICY', '400', 'S:TRG:NO', TRUE);

sa_label_admin.create_label ('OFFICIAL_POLICY', '500', 'C:FIN:SE', TRUE);

sa_label_admin.create_label ('OFFICIAL_POLICY', '600', 'C:ISS:SE', TRUE);

sa_label_admin.create_label ('OFFICIAL_POLICY', '700', 'C:TRG:SE', TRUE);

sa_label_admin.create_label ('OFFICIAL_POLICY', '800', 'P:FIN:E', TRUE);

sa_label_admin.create_label ('OFFICIAL_POLICY', '900', 'P:ISS:E', TRUE);

sa_label_admin.create_label ('OFFICIAL_POLICY', '1000', 'P:TRG:E', TRUE);

END;

/

-- проверка добавления меток

SELECT * FROM dba_sa_labels;

Применение политики к таблице

connect lbacsys/lbacsys@orcl

--посмотрим перечень столбцов таблицы «Official» до применения политики к таблице

DESCRIBE scott.official;

--свяжем политику с таблицей «Official»

BEGIN sa_policy_admin.apply_table_policy

290

('official_policy','scott','official','label_default,read_control'); END;

/

--политика, примененная к таблице добавила к ней дополнительный столбец

SCOTT_COL.

DESCRIBE scott.official;

--какие политики к каким таблицам применены

SELECT * FROM dba_sa_table_policies;

Создание пользователей и наделение их соответствующими правами

connect sys/sys@orcl as sysdba

--сначала удалим пользователей, созданных при предыдущем выполнении лабораторной работы

DROP USER king; DROP USER jones; DROP USER clark; DROP USER blake; DROP USER allen; DROP USER martin; DROP USER miller; DROP USER james; DROP USER turner; DROP USER ward; DROP USER ford; DROP USER adams; DROP USER smith;

--создадим пользователей заново

CREATE USER king IDENTIFIED BY king DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10m ON users;

CREATE USER jones IDENTIFIED BY jones DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp

QUOTA 10m ON users;

CREATE USER clark IDENTIFIED BY clark DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp

QUOTA 10m ON users;

CREATE USER blake IDENTIFIED BY blake DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp

QUOTA 10m ON users;

CREATE USER allen IDENTIFIED BY allen

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]