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

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

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

261

ERD диаграмма предметной области показана на рис.16.52, рис.16.53.

На рис.16.53 красным контуром обведены, таблицы, выполнять все действия с которыми может пользователь Certif_mgr, синим цветом − таблицы, выполнять все действия с которыми может пользователь Licns_mgr («менеджеры» остальных таблиц в нашей задаче уже не важны). Пользователь Lic_clerc может выполнять только вставку и извлечение информации для таблиц ISLicns, LicCenter. Владельцем всей схемы является пользователь ch_cert.

Скрипт создания предметной области – файл test1a_new.sql приведен в приложении 6.

Решение задачи разграничения полномочий пользователей с использованием ролей и привилегий

Соединение пользователя с правами АБД с БД

При дальнейшем выполнении работы в окно SQL*Plus надо копировать командные строки из нижеследующего описания.

Для обеспечения возможности повторного выполнения скриптов удаляем объекты (если они существуют), команда создания которых будет приведена ниже.

Connect system/system@orcl

DROP USER ch_cert CASCADE;

DROP USER licns_mgr CASCADE;

DROP USER certif_mgr CASCADE;

DROP USER lic_clerc CASCADE;

DROP ROLE licns_mgr_role;

DROP ROLE lic_clerc_role;

DROP ROLE certif_mgr_role;

DROP PUBLIC SYNONYM cclic;

DROP PUBLIC SYNONYM certcntr;

DROP PUBLIC SYNONYM certifct;

DROP PUBLIC SYNONYM islicns;

DROP PUBLIC SYNONYM issubjects;

DROP PUBLIC SYNONYM item;

DROP PUBLIC SYNONYM liccenter;

DROP PUBLIC SYNONYM manufctr;

DROP PUBLIC SYNONYM manufctr_audit;

DROP PUBLIC SYNONYM manulic;

DROP PUBLIC SYNONYM signlic;

DROP PUBLIC SYNONYM standart;

DROP PUBLIC SYNONYM testlab;

262

DROP PUBLIC SYNONYM tllic;

Создаем пользователя – администратора приложения

Connect system/system@orcl

CREATE USER ch_CERT IDENTIFIED BY ch_cert

DEFAULT TABLESPACE users

TEMPORARY TABLESPACE temp

QUOTA 1m on users;

GRANT connect, resource TO ch_cert;

GRANT create user,alter user TO ch_cert;

Наделяем администратора приложения группой привилегий

GRANT connect, resource TO ch_cert;

GRANT create user,alter user TO ch_cert;

Соединяемся с базой данных администратором приложения

connect ch_cert/ch_cert@orcl

Создание базы данных сертификации продукции

Поместим в папку c:\tmp скрипт test1a_new.sql (надо скопировать sql текст из приложения 6 и поместить его в текстовый файл с именем test1a_new.sql). В окне SQL*Plus вводим команду:

@c:\tmp\test1a_new.sql

База данных сертификации продукции создана и заполнена данными. Теперь пользователь CH_CERT, который является администратором (решающим, в числе прочих, и вопросы разграничения полномочий между другими пользователями), создает менеджера licns_mgr. Licns_mgr, который будет обладать всеми правами на таблицы ISLicns, LicCenter, ManuLic, ISSubjects, Manufctr (обведены на диаграмме БД-English.doc линией синего цвета).

Администратор приложения создает первого пользователя своего приложения

CREATE USER licns_mgr IDENTIFIED BY licns_mgr DEFAULT TABLESPACE users

TEMPORARY TABLESPACE temp

QUOTA 1m on users;

АБД наделяет администратора приложения недостающими привилегиями

connect system/system@orcl GRANT create role TO ch_cert;

263

Администратор приложения продолжает свою работу по созданию ролей и привилегий

connect ch_cert/ch_cert@orcl

Создаем роль licns_mgr_role:

CREATE ROLE licns_mgr_role;

Даем этой роли привилегии на работы с пятью из 13 вышеназванных таблиц:

GRANT select,insert,update,delete ON issubjects TO licns_mgr_role; GRANT select,insert,update,delete ON manufctr TO licns_mgr_role;

GRANT select,insert,update,delete ON islicns TO licns_mgr_role;

GRANT select,insert,update,delete ON manulic TO licns_mgr_role;

GRANT select,insert,update,delete ON liccenter TO licns_mgr_role;

Наделяем ролью licns_mgr_role пользователя licns_mgr:

GRANT licns_mgr_role TO licns_mgr;

Привилегия соединяться с базой данных пользователю LICNS_MGR еще не предоставлена.

АБД наделяет пользователя приложения привилегией, которую не может дать администратор приложения

connect system/system@orcl

GRANT create session TO licns_mgr;

Пользователь приложения соединяется с базой данных

connect licns_mgr/licns_mgr@orcl

SELECT table_name FROM user_tables;

Так как все таблицы создавались в схеме ch_cert , пользователь licns_mgr не может их увидеть без указания владельца.

SELECT * FROM issubjects;

SELECT * FROM ch_cert.issubjects;

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

--поэтому владелец таблиц ch_cert создает на них public synonym:

Администратор приложения соединяется с базой данных для создания нужных объектов

connect ch_cert/ch_cert@orcl CREATE PUBLIC SYNONYM standart FOR ch_cert.standart;

264

--команда эта не будет выполнена, так как --привилегия создавать public synonym пользователю --ch_cert не предоставлялась.

Администратор базы данных добавляет администратору приложения дополнительную привилегию

connect system/system@orcl

GRANT create public synonym TO ch_cert;

Администратор приложения вновь соединяется с базой данных для создания нужных объектов

connect ch_cert/ch_cert@orcl

--Создаются public synonym на все таблицы базы данных.

CREATE PUBLIC SYNONYM standart FOR ch_cert.standart; CREATE PUBLIC SYNONYM cclic FOR ch_cert.cclic; CREATE PUBLIC SYNONYM certcntr FOR ch_cert.certcntr; CREATE PUBLIC SYNONYM certifct FOR ch_cert.certifct; CREATE PUBLIC SYNONYM islicns FOR ch_cert.islicns; CREATE PUBLIC SYNONYM issubjects FOR ch_cert.issubjects; CREATE PUBLIC SYNONYM item FOR ch_cert.item;

CREATE PUBLIC SYNONYM liccenter FOR ch_cert.liccenter; CREATE PUBLIC SYNONYM manufctr FOR ch_cert.manufctr; CREATE PUBLIC SYNONYM manulic FOR ch_cert.manulic; CREATE PUBLIC SYNONYM signlic FOR ch_cert.signlic; CREATE PUBLIC SYNONYM testlab FOR ch_cert.testlab; CREATE PUBLIC SYNONYM tllic FOR ch_cert. tllic;

Пользователь базы данных соединяется с ней для проверки своих привилегий

connect licns_mgr/licns_mgr@orcl

--Проверим работу синонимов:

SELECT * FROM manufctr;

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

SELECT table_name FROM user_tables;

SELECT * FROM manulic;

--А вот с другими, помимо вышеназванных для licns_mgr пяти --таблиц, ему работать не разрешено:

SELECT * FROM certifct;

--пользователю licns_mgr не дано право работать

--с таблицей CERTIFCT

SELECT * FROM standart;

265

--пользователю licns_mgr не дано право работать

--с таблицей standart

--А с таблицей ISSUBJECTS пользователю licns_mgr --работать разрешено:

DESC issubjects

SELECT * FROM issubjects;

INSERT INTO issubjects (isid,name)

VALUES (9,'деятельность по теоретической оценке методов шифрования');

--А теперь ch_cert заводит еще одного пользователя - lic_clerc, --предварительно создавая для него роль lic_clerc_role, для которой --предоставляется привилегия select, insert на таблицу islicns

Администратор приложения создает нового пользователя и объекты базы данных

connect ch_cert/ch_cert@orcl CREATE ROLE lic_clerc_role; GRANT select, insert

ON islicns to lic_clerc_role;

CREATE USER lic_clerc IDENTIFIED BY lic_clerc DEFAULT TABLESPACE users

TEMPORARY TABLESPACE temp QUOTA 1m ON users;

--Пользователь-администратор ch_cert не может предоставлять --привилегию создания сессии с базой данных другим пользователям.

GRANT connect TO lic_clerc;

--появляется сообщение обошибке

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

Администратор базы данных добавляет администратору приложения дополнительную привилегию

connect system/system@orcl

GRANT connect TO ch_cert WITH ADMIN OPTION;

Администратор приложения добавляет пользователю привилегию

connect ch_cert/ch_cert@orcl GRANT connect TO lic_clerc;

266

Новый пользователь соединяется с базой данных для проверки своих привилегий

connect lic_clerc/lic_clerc@orcl

SELECT * FROM islicns;

--здесь появляется сообщение об ошибке, так как --пользователь-администратор ch_cert забыл назначить

--роль lic_clerc_role пользователю lic_clerc:

Администратор приложения исправляет свою ошибку

connect ch_cert/ch_cert@orcl GRANT lic_clerc_role TO lic_clerc;

Новый пользователь соединяется с базой данных для проверки своих привилегий

connect lic_clerc/lic_clerc@orcl

SELECT * FROM islicns;

--С другими таблицами, кроме ISLicns, LicCenter, --пользователю lic_clerc привилегии на работу не --предоставлены:

SELECT * FROM issubject;

SELECT * FROM liccenter;

-- после двух последних запросов появляется сообщение об ошибке

Администратор приложения добавляет привилегии новому пользователю

connect ch_cert/ch_cert@orcl

--Осталось добавить пользователю lic_clerc привилегию --на работу с таблицей liccenter (только

--select,insert) - через роль lic_clerc_role:

GRANT select,insert

ON liccenter TO lic_clerc_role;

Новый пользователь проверяет свои привилегии

connect lic_clerc/lic_clerc@orcl

SELECT * FROM liccenter;

--запрос отрабатывает успешно

Теперь создадим пользователя certif_mgr и дадим ему возможность работать с таблицей Manufctr через роль certif_mgr_role. Другие таблицы в связи с этим пользователем нам не важны, так как дальше, в соответствующей лабораторной работе по аудиту мы попытаемся решить задачу аудита работы двух менеджеров с одной таблицей Manufctr, которая входит в схему обоих менеджеров.

267

Администратор приложения создает третьего пользователя и наделяет его привилегиями

connect ch_cert/ch_cert@orcl

CREATE USER certif_mgr identified BY certif_mgr DEFAULT TABLESPACE users

TEMPORARY TABLESPACE temp QUOTA 1m ON users;

GRANT connect TO certif_mgr; CREATE ROLE certif_mgr_role; GRANT select,insert,update,delete ON manufctr TO certif_mgr_role;

GRANT certif_mgr_role TO certif_mgr;

Сдача лабораторной работы

Сдача лабораторной работы заключается в выполнении студентом задачи разграничения полномочий в предметной области, заданной преподавателем – по такой же схеме, как и в приведенном описании лабораторной работы. Предметные области преподаватель может выбрать из числа поставляемых Oracle вместе с установочной версией СУБД примеров (схемы пользователей scott, hr, sh).

Тестовые задания к лабораторной работе № 11

Входной контроль

1.Что мы понимаем под пользователем (базы данных), когда говорим о ролях и привилегиях пользователей (базы данных)?

a)Пользователя операционной системы;

b)Учетная запись пользователя операционной системы;

c)Учетная запись пользователя базы данных;

d)Пользователя предприятия (в терминах глобальной аутентификации);

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

2.Какая (какие) из нижеприводимых строк соответствуют определению привилегий базы данных?

a)Привилегии пользователя определяют, какие действия над данными и над

объектами пользователей являются разрешенными (это разрешения на объекты пользователей, такие как таблицы, представления, последовательности, пакеты и т.п.);

b) Привилегии пользователя определяют, какие действия в системе (базы данных) являются разрешенными (это разрешения на операции уровня базы данных, например подключение к базе данных, создание пользователей, внесение изменений в конфигурацию базы данных);

268

c)Привилегии пользователя определяют, какие действия разрешены над файлами операционной системы реализующими программное обеспечение СУБД;

d)Привилегии пользователя определяют какие дейсвтия разрешены над файлами операционной системы, реализующими базу данных;

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

3.Укажите, какие из нижеприводимых строк соответствуют типам привилегий пользователей СУБД.

a)Табличные привилегии;

b)Объектные привилегии;

c)Программные привилегии;

d)Системные привилегии;

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

4.Какие правила определены для управления привилегиями?

a)Объект принадлежит пользователю, его создавшему (если синтаксисом не указано создание объекта другого пользователя, конечно, при соответствующих полномочиях пользователя, создающего объект другого пользователя);

b)Владелец объекта может изменять привилегии своего объекта;

c)Объектная привилегия всегда соотносится с конкретным объектом, а системная ‒ с объектами вообще;

d)Владелец объекта может отобрать привилегию на его использование у любого пользователя;

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

5.В нижеприводимых строках укажите строки с привилегиями, поддерживаемыми языком SQL.

a)ALTER;

b)SELECT;

c)INSERT;

d)DROP;

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

6.Укажите верное определение роли.

a)Роль – специально созданная программа, позволяющая вставлять записи в таблицу пользователя;

b)Роль – специально создаваемое представление базы данных;

c)Роль – это набор привилегий, которому присваивается имя;

d)Роль – специально созданный программный модуль, включающий функции создания и манипулирования объектами пользователя;

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

7.В нижеприводимом списке укажите автоматически создаваемые (при создании базы данных) роли.

a)CONNECT;

269

b)RESOURCE;

c)DBA;

d)USERROLE;

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

Выходной контроль

1.АБД (system) создал в сеансе SQL*Plus пользователя U1, определив ему пароль, tablespase s и квоты на них. Укажите, какие роли получил по умолчанию пользователь U1.

a)DBA;

b)manager, boss;

c)connect, resource;

d)backup – manager;

e)Правильных ответов нет;

f)Я затрудняюсь с ответом на этот вопрос.

2.Польз. u3 имеет роли connect, resource и создал проц-ру getdata, вывод-ю на экран содерж. таблицы u3. tab3_1 и дал привил-ю исполн. этой процедуры польз. u4, имеющему роли "connect", "resource", в схеме которого нет объектов. После каких из нижеприводимых команд пользователь u4 получит в своем сеансе сообщение об ошибке?

a)INSERT INTO u2.tab4 VALUES(124,123);

b)UPDATE u2.tab4 SET at1=345;

c)SELECT * FROM u2.tab4;

d)UPDATE u2.tab4 SET at2=345;

e)DELETE FROM u2.tab4;

f)Я затрудняюсь с ответом на этот вопрос.

3.Польз. u3 имеет роли connect, resource и создал проц-ру getdata, вывод-ю на экран содерж. таблицы u3. tab3_1 и дал привил-ю исполн. этой процедуры польз. u4, имеющему роли "connect", "resource", в схеме которого нет объектов. После каких из нижеприводимых команд пользователь u4 получит в своем сеансе сообщение об ошибке?

a)SELECT * FROM tab3_1;

b)SELECT * FROM u3.tab3_1;

c)EXEC getdata;

d)EXEC u3.getdata;

e)BEGIN

u3.getdata; END; /

f)Я затрудняюсь с ответом на этот вопрос.

4.Пользователю U1 предоставлена системная привилегия "creat e any table", после чего он создает таблицу tab1(at1 numeric) в схеме пользователя U2. Укажите команды, для которых Oracle выдает сообщение об ошибке пользователю U1.

a)CREATE TABLE tab1(at1 NUMERIC);

270

b)SELECT * FROM u2.tab1; (таблица уже создана в схеме u2);

c)CREATE TABLE u2.tab1(at1 NUMERIC);

d)UPDATE TABLE u2.tab1 SET at1=10;

e)INSERT INTO u2.tab1 VALUES(5);

f)Я затрудняюсь с ответом на этот вопрос.

5.Какой пользователь после установки базы данных может запускать в работу и останавливать базу данных?

a)SCOTT;

b)SYS;

c)SYSTEM;

d)LBACSYS;

e)Пользователь с административными правами операционной системы;

f)Я затрудняюсь с ответом на этот вопрос.

6.Польз-лю U1 даны только привилегии "create session", "create any table", "create public synonym". Он создает в схеме польз-ля U2 таблицу tab2(at1 numeric) и public synonym tabx для нее. Укажите команды, для которых польз-лю U2 будет выдано сообщение об ошибке (u2 имеет роли connect,resource, привилегию create view).

a)SELECT * FROM tabx;

b)CREATE TABLE tabx(at1 NUMERIC);

c)CREATE VIEW tabx AS SELECT * FROM tabx;

d)DROP PUBLIC SYNONYM tabx;

e)INSERT INTO tabx VALUES(55);

f)Я затрудняюсь с ответом на этот вопрос.

7.Польз. u1 создан пользователем u2 (АБД): Create user u1 identified by u1

default tablespace my_db temporary tablespace temp quota 1m on my_db;

Затем польз. u2 дал польз.u1 роль "connect", после чего польз. u1 соединяется с сервером Oracle. Какая из команд польз. u1 выдаст сообщение об ошибке?

a)ALTER USER u1 IDENTIFIED BY my_pwd;

b)ALTER USER u1 TEMPORARY TABLESPACE your_db;

c)CREATE TABLE tab1(at1 NUMBE R);

d)SELECT * FROM user_tables;

e)CREATE SEQUENCE my_seq;

f)Я затрудняюсь с ответом на этот вопрос.

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