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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

296

Рис. 11.2 ERD диаграмма предметной области (English)

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

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; 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;

297

Соединяемся с базой данных администратором приложения: 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;

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

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;

298

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;

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

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

connect system/system@orcl

GRANT create public synonym TO ch_cert;

299

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

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;

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

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

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

300