Пример создания роли библиотекаря:
CREATE ROLE "LIBRAR" IDENTIFIED BY "LIBRAR";
Пример создания роли читателя:
CREATE ROLE "READER" IDENTIFIED BY "READER";
Библиотекарь должен обладать правами на чтение, удаление, измене- ние, добавление во все таблицы схемы ADMIN_BOOKS, а также должен иметь возможность инициировать сессию и запускать на исполнение про- цедуры и функции схемы ADMIN_BOOKS. Поэтому роли библиотекаря из системных привилегий назначаем CREATE SESSION, а из привилегий доступа к объектам назначаем DELETE, INSERT, UPDATE, SELECT, поз-
же в лабораторной работе №5 для созданных процедур и функций доба-
вить EXECUTE.
Читатель должен обладать правами на чтение из таблиц
ADMIN_BOOKS.AUTHORS, ADMIN_BOOKS.BOOKS, ADMIN_BOOKS.PUBLISHING_HOUSE, а также должен иметь возмож-
ность инициировать сессию и запускать на исполнение процедуры и функции схемы ADMIN_BOOKS. Поэтому роли читателя из системных привилегий назначаем CREATE SESSION, а из привилегий доступа к объ- ектам назначаем SELECT, позже в лабораторной работе №5 для создан- ных процедур и функций добавить EXECUTE.
Оператор представления привилегий
Синтаксис:
GRANT <привилегия>, ...
ON < объект >, … TO <имя>
[WITH grant option];
Атрибут with grant option дает право пользователю самому раздавать права, которые он получил.
С помощью оператора grant для каждого пользователя формируется список привилегий, привилегии управляют работой сервера данных с точ- ки зрения защиты данных. Выполнению каждой транзакции предшествует проверка привилегий пользователя, сеанс которого породил транзакцию.
Пример: grant select, update (Sales, num) ON Sales_data TO user1
with grant option;
Пользователь, предоставивший привилегию другому, называется гран- тор (grantor — предоставитель). Привилегия является предоставляемой, если право на нее можно предоставить другим пользователям.
30
PUBLIC — имя пользователя, который распространяет привилегии на все множество зарегистрированных в системе пользователей.
Роль библиотекаря названа LIBRAR с аналогичным паролем LIBRAR. Операторы назначения прав доступа ниже:
GRANT DELETE, INSERT, UPDATE, SELECT
ON "ADMIN_BOOKS"."BOOKS" TO "LIBRAR"; GRANT DELETE, INSERT, UPDATE, SELECT
ON "ADMIN_BOOKS"."AUTHORS" TO "LIBRAR"; GRANT DELETE, INSERT, UPDATE, SELECT
ON "ADMIN_BOOKS"."DELIVERIES" TO "LIBRAR"; GRANT DELETE, INSERT, UPDATE, SELECT
ON "ADMIN_BOOKS"."PUBLISHING_HOUSE" TO "LIBRAR"; GRANT DELETE, INSERT, UPDATE, SELECT
ON "ADMIN_BOOKS"."PURCHASES" TO "LIBRAR"; GRANT CREATE SESSION TO "LIBRAR";
Commit;
Роль читателя названа READER с аналогичным паролем READER. Опера- торы назначения прав доступа ниже:
GRANT SELECT ON "ADMIN_BOOKS"."BOOKS" TO "READER"; GRANT SELECT ON "ADMIN_BOOKS"."AUTHORS" TO "READER"; GRANT SELECT ON "ADMIN_BOOKS"."PUBLISHING_HOUSE" TO "READER";
GRANT CREATE SESSION TO "READER"; Commit;
Создание пользователей с определенной ролью
Пример создания библиотекаря Ivanov_Lib и присвоения роли: CREATE USER "Ivanov_Lib"
PROFILE "DEFAULT"
IDENTIFIED BY "Ivanov_Lib" DEFAULT TABLESPACE "DB_BOOKS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
GRANT "LIBRAR" TO "Ivanov_Lib";
Commit;
Пример создания читателя Petrov_Read и присвоения роли: CREATE USER "Petrov_Read"
PROFILE "DEFAULT" IDENTIFIED BY "Petrov_Read"
DEFAULT TABLESPACE "DB_BOOKS"
31
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK;
GRANT "READER" TO "Petrov_Read"; Commit;
Управление паролями
Если система управления паролями доступна, то пользователи не могут изменить пароли командой ALTER USER. Пользователь должен изменять пароли, используя SQL*Plus или OCIPasswordChange, в которых прини- маются в качестве параметров старый и новый пароли.
Оператор отмены привилегий
Синтаксис отмены привилегий:
REVOKE [with grant option] < привилегии >,…
ON < объект >,…
FROM <имя_пользователя>;
Предложение with grant option сохраняет за пользователем перечис- ленные привилегии, но отменяет его право передавать их кому-либо дру- гому.
Пример:
REVOKE SELECT ON "ADMIN_BOOKS"."AUTHORS" FROM "READER";
Оператор изымания роли у пользователя:
Revoke <список ролей> from <список пользователей>.
Пример:
REVOKE READER FROM "Petrov_Read";
Варианты заданий к лабораторной работе №3
Общие положения
Вутилите SQL *Plus Worksheet выполнить примеры, которые даны по ходу работы.
По индивидуальному варианту базы данных, которая выполнена в ла- бораторной работе №1, определить 2-3 должностных лица, которые могут работать с таблицами БД. Для каждого должностного лица определить на- бор привилегий, которыми он может пользоваться.
Вутилите SQL *Plus Worksheet создать под каждое должностное лицо соответствующую роль, наделить эту роль определенными привилегиями. Далее создать по одному пользователю на каждую должность и присвоить им соответствующие роли.
32
Сохранить последовательно операторы с указанием заданий в файле с названием ФамилияСтудента_ЛАб_3_№варианта_общее, результаты выполнения задания по варианту сохранить в файле ФамилияСтуден- та_ЛАб_3_результаты. Операторы создания ролей, привилегий и пользо- вателей сохранить в файле с названием ФамилияСтуден-
та_ЛАб_3_№варианта_роли.
Лабораторная работа №4
ОСВОЕНИЕ ПРОГРАММИРОВАНИЯ С ПОМОЩЬЮ ВСТРОЕННОГО ЯЗЫКА PL/SQL В ORACLE
Цель работы – знакомство с основными принципами программирования в ORACLE средствами встроенного языка PL/SQL.
Содержание работы:
1.Знакомство с правилами обозначения синтаксиса команд в справоч-
ной системе ORACLE (утилита SQL *Plus WorkSheet).
2.Изучение правил написания программ на PL/SQL.
3.Изучение правил построения идентификаторов, правил объявления переменных и их типов.
4.Изучение работы с циклами и ветвлениями.
5.Изучение работы с переменными типа Table, Record и Cursor.
6.Проработка всех примеров, анализ результатов их выполнения в утилите SQL *Plus WorkSheet.
7.Выполнение индивидуальных заданий по вариантам.
Пояснения к выполнению работы
Для освоения программирования используем пример базы данных в табличном пространстве DB_Books, которая была создана в лабораторной работе №1. При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта.
Описание языка PL/SQL
Программа на PL/SQL состоит из трех блоков: блок описаний пере- менных, констант и пользовательские типы данных; исполнительный блок; блок обработки исключительных ситуаций. Специальные знаки и про- стейшие операторы языка PL/SQL приведены в табл. 4.1.
Структура программы
SET -- настройки окружения сервера;
DECLARE --объявление переменных;
33
BEGIN
--Операторы или NULL;
EXCEPTION
--Операторы обработки исключительных ситуаций;
END;
Таблица 4.1
Специальные знаки и простейшие операторы в PL/SQL
Знак |
Назначение |
* |
Знак умножения |
|
|
- |
Знак вычитания |
|
|
** |
Возведение в степень |
+ |
Знак сложения или конкатена- |
|
ции (объединение двух строк в |
|
одну) |
= |
Знак равенства или сравнения |
<= |
Меньше или равно |
>= |
Больше или равно |
!= |
Не равно |
|| |
Оператор конкатенации |
|
|
:= |
Знак присвоения |
|
|
-- |
Однострочный комментарий |
|
или комментарий с текущей |
|
позиции и до конца строки |
Знак Назначение
"" В них заключают названия объ- ектов, например таблиц, столб- цов и т.п.
‘ ’ |
В них заключают строковые зна- |
|
чения |
<> |
Не равно |
REM |
Однострочный комментарий, на- |
|
чинающийся после REM |
|
|
!< |
Не менее чем |
!> |
Не более чем |
> |
Больше |
< |
Меньше |
. |
Разделяет родительские и подчи- |
|
ненные объекты |
/Знак деления.
При установке в начале строки- знак завершения текста процеду- ры и команда к интерпретации и выполнению процедуры в SQL *Plus
/* */ Многострочный комментарий
Идентификаторы
Идентификаторы – это имена объектов, на которые можно ссылаться в программе, написанной на языке PL/SQL. Первый символ может состо- ять из букв английского алфавита, внутри может содержать цифры или “_”, “#”, «$». Имя идентификатора не должно совпадать с зарезервирован- ным словом. Регистр для идентификаторов не важен, длина его не должна превышать 30 символов.
Примеры правильных идентификаторов: t2
phone# credit_limit
34