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

Горбатов Аттестационные испытания автоматизированных систем от 2014

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

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) правильных ответов нет.

321

Работа 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 в работе.

ПОРЯДОК ПРОВЕДЕНИЯ РАБОТЫ

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

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

CREATE USER scott IDENTIFIED BY scott

322

DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10m ON users;

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

Скрипт 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», причем каждый служащий компании общается с чиновником, соответствующим «своему» или ниже «своего» уровня. Под уровнем понимается не только должность, но и уровень конфиденциальности, и тип отдела. На рис. 13.1 показана иерархия подчиненности и принадлежность к разным отделам служащих в таблице «Emp».

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

323

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

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

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

Таблица 13.1

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

 

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

 

доступа

 

 

HS (Highly sensitive)

 

40

S (Sensitive)

 

30

C (Confidential)

 

20

P (Public)

 

10

 

324

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

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

Таблица 13.2

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

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

отделения

 

FIN (FINANCY)

10

ISS (ISSLEDOVANIE)

20

TRG(TORGOVLYA)

30

В соответствии с существующей иерархией чиновников определим иерархию групп в таблице «Official» (табл.13.3).

 

 

Таблица 13.3

 

 

Название

 

 

Группа (GROUP)

Числовой

 

идентификатор

родительской

 

 

 

группы

группы

 

 

GD (Glava_Departamenta)

100

 

 

 

NO (Nachalnik_Otdela)

80

GD

 

 

SE (Starshiy_Expert)

40

NO

 

 

E (Expert)

20

SE

 

 

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

Теперь определим метки пользователей (сотрудников фирмы из таблицы «Emp»), которые будут работать со строками таблицы «Official». Уровень (метка) сотрудника фирмы из таблицы «Emp» также определяется тремя измерениями: уровнем доступа (LEVEL),

отделением (COMPARTMENT), группой (GROUP). Рис. 13.2 пояс-

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

325

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

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

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

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

Надо запустить Oracle Universal Installer. Выберите и установите Oracle Label Security option.

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

ducts.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» перейти к следующей форме, из которой и надо стартовать установку.

326

После сообщения 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.

Для включения компонента Oracle Label Security в Oracle 11g

необходимо выполнить следующую последовательность шагов:

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

Shutdown immediate

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

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

манд:

cd %ORACLE_HOME%/bin chopt enable lbac

327

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

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

3. Создание политики безопасности, воплощающей компоненты меток пользователей (в таблице «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,re

ad_control'); END;

/

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

SELECT policy_name, status from DBA_SA_POLICIES;

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

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'); sa_components.create_level

328

('OFFICIAL_POLICY', 10, 'P', 'Public');

END;

/

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

SELECT * FROM dba_sa_levels ORDER BY level_num;

5. Определение второго компонента метки (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;

6. Определение третьего компонента метки (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;

329

/

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

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

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

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',

330