Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
управление данными 2.doc
Скачиваний:
13
Добавлен:
07.11.2018
Размер:
2.08 Mб
Скачать

11.4.4. Права

Права в InterBase – это разрешение какому-либо пользователю, хранимой процедуре или триггеру совершить какую-либо операцию над определенным объектом базы данных.

Для таблиц (TABLE), представлений (VIEW), а также их полей права выдаются на выполнение операций SELECT, DELETE, INSERT и UPDATE.

Для хранимых процедур права выдаются на операцию EXECUTE.

Права на объекты базы данных раздаются с помощью команды GRANT.

Примеры выдачи прав:

1. Выдать пользователю USER1 права на выборку из таблицы Table1:

GRANT SELECT ON Table1 TO USER1;

2. Выдать пользователю USER1 права на чтение и вставку данных, но не на изменение:

GRANT SELECT, INSERT ON Table1 TO USER1;

3. Выдать всех возможных прав на таблицу:

GRANT ALL ON Table1 TO USER1;

4. Выдать права сразу нескольким пользователям:

GRANT ALL ON Table1 TO USER1, USER2;

5. Выдать права сразу всем пользователям InterBase:

GRANT SELECT, INSERT ON Table1 TO PUBLIC;

6. Выдача права на чтение данных только из нескольких полей таблицы или представления:

GRANT SELECT ON Table1(Field1, Field3) TO USER1;

7. Выдача разрешения выполнять хранимую процедуру:

GRANT EXECUTE ON PROCEDURE Proc1 TO USER1;

8. Разрешение вызова процедуры Proc2 из процедуры Proc1 без наличия таких прав у пользователя, вызвавшего Proc1:

GRANT EXECUTE ON PROCEDURE Proc2 TO Proc1;

Чтобы уменьшить количество выдаваемых разрешений, пользователей объединяют в группы по принципу наличия у них одинаковых прав. Чтобы использовать роль необходимо выполнить следующие действия:

1. Создать роль.

2. Выдать этой роли все необходимые права.

3. Назначить конкретным пользователям эту роль.

4. При подсоединении к базе данных указать не только имя пользователя и пароль, но и роль, права которой будет иметь пользователь.

CREATE ROLE READER;

GRANT SELECT ON Table1 TO READER;

GRANT READER TO USER1;

Теперь пользователь USER1 должен при подключении к базе данных указать роль READER, и тогда он получит все права, назначенные для этой роли.

Раздавать права может только владелец объекта и пользователь SYSDBA. Владельцем объекта считается пользователь, который его создал. Чтобы не только выдать пользователю права на доступ к объекту, но и разрешить передачу этих прав другим пользователям, в конце обычной команды GRANT необходимо добавить WITH GRANT OPTIONS.

Для отмены прав используется команда REVOKE, синтаксис которой аналогичен команде GRANT.

Пример отмены у пользователя USER1 права на удаление из таблицы Table1:

REVOKE DELETE ON Table1 FROM USER1;

Задание

Лабораторную работу следует выполнять в следующем порядке:

1. Создать аналогично предыдущим лабораторным работам рабочую папку и назвать ее "ЛР11".

2. Скопировать в эту папку файл сценария, созданный при выполнении пре-дыдущей лабораторной работы.

3. Открыть в приложении "IB Expert" этот сценарий.

4. Исправить текст комментариев и сделать, чтобы база данных теперь соз-давалась в папке "ЛР11".

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

6. Выполнить сценарий и сохранить его в рабочей папке.

7. Зарегистрировать созданную базу данных в программе "IB Expert" и под-ключиться к ней по имени пользователя, который не является хозяином базы данных или администратором сервера, с использованием каждой из ролей.

8. Проверить правильность функционирования ограничения доступа.

9. Создать в своей базе данных одну роль с названием "TestRole" в диалоговом режиме.

10. Выдать этой роли права на чтение данных из всех таблиц.

11. Создать в рабочей папке резервную копию базы данных.

12. Создать и сохранить в папке "ЛР11" файл с отчетом о выполнении лабора-торной работы, который должен называться "Отчет.doc".

Ход работы

Для создания роли в диалоговом режиме программы "IB Expert" необходимо выполнить следующие действия:

1. Подключиться к базе данных.

2. Выполнить команду "Database->New Role".

3. Ввести в единственном поле диалогового окна "Create Role" имя роли и нажать кнопку [OK].

Для выдачи роли или пользователю прав на выполнение операций с объектами базы данных служит окно "Grant Manager", открываемое по команде "Tools->Grant Manager".

Окно просмотра и изменения привилегий

Выданные привилегии на какую-либо операцию обозначаются зеленым кружком в соответствующей ячейке. Например, на рисунке для роли TestRole можно увидеть для таблицы Employee выданные права на выполнение опера-ций SELECT, UPDATE, DELETE и INSERT. Для остальных видимых в окне таблиц имеются права только на чтение.

Чтобы выдать или отменить право на выполнение какой-либо операции, надо всего лишь сделать двойной щелчок мышью в соответствующей ячейке.

Отчет о выполнении работы

Отчет о выполнении лабораторной работы необходимо оформить на листах формата A4.

Отчет должен содержать описание и результаты работы, представляемые в следующей последовательности:

1. Описание видов пользователей, которые будут работать с разрабатываемой базой данных, и необходимых им привилегий.

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

3. Перечень файлов, полученных при выполнении лабораторной работы с указанием их имен, места расположения, даты изменения и размеров (сценарий, база данных, резервная копия базы данных, файл с отчетом).