Управление доступом к данным
Для того чтобы защитить данные от несанкционированного доступа, предусмотрено формирование списка пользователей, причем каждому пользователю предоставляются права на доступ к определенным данным.
Управление доступом к данным включает управление списком пользователей и правами их доступа к данным и процедурам.
Создание списка пользователей
Создание списка пользователей производится при помощи утилиты IBConsole. Для того чтобы создать пользователя, необходимо зарегистрировать сервер, выполнив команду меню SERVER ® USER SECURITY.
В диалоговом режиме создается новый пользователь, и при необходимости добавляются его характеристики.
З а м е ч а н и е! Не рекомендуется удаление пользователя SYSDBA. Удаление данного пользователя связано с необходимостью переустановки InterBase для восстановления базы поддержания секретности isc4.gdb.
Задание прав
Создание нового пользователя само по себе не дает ему никаких прав на доступ к объектам БД.
Права доступа предоставляются командой GRANT. Пользователь, выдающий команду GRANT, может делегировать другим пользователям только те права, которыми обладает он сам.
Для доступа к объектам БД пользователь нуждается в правах, перечень которых приведен в табл. 13.1.
Т а б л и ц а 13.1
Права пользователей
Право | Описание |
ALL | Делегируются все права |
SELECT | Дает право выбирать строки из таблицы (представления) |
DELETE | Дает право удалять строки из таблицы (представления) |
INSERT | Дает право добавлять строки в таблицу (представления) |
UPDATE | Дает право изменять строки в таблице (представление). Может быть ограничено определенным набором столбцов |
REFERENCES | Дает право ссылаться при работе с внешним ключом на специфицированные столбцы (как минимум это должны быть все столбцы внешнего ключа) |
EXECUTE | Дает право выполнять хранимую процедуру |
Пользователи могут получить разрешение на дальнейшую передачу прав (тех, которыми владеют сами), которое задается опцией WITH GRANT OPTION.
Синтаксис команды GRANT следующий:
GRANT {ALL [PRIVILEGES] | SELECT | DELETE | INSERT | UPDATE(<список столбцов>) | REFERENCES (<список столбцов>)}
ON [TABLE]{<имя таблицы> | <имя обзора>}
TO {<объект> | <список пользователей>}
/ EXECUTE ON PROCEDURE<имя процедуры>
TO {<объект> | <список пользователей>};
В табл. 13.2 приведен перечень возможных значений опции <объект>.
Т а б л и ц а 13.2
Возможные значения опции <объект>
Объект | Описание | |
PROCEDURE <имя процедуры> | Права передаются процедуре <имя процедуры>, которая должна существовать и храниться в БД | |
TRIGGER <имя триггера> | Права передаются триггеру <имя триггера>, который должен существовать и храниться в БД | |
VIEW <имя обзора> | Права передаются обзору <имя обзора>, который должен существовать и храниться в БД | |
PUBLIC | Права передаются всем пользователям. Причем данная опция распространяется только на пользователей, а не на объекты БД |
Например, передача всех прав для работы с таблицей STUDENT пользователю NIK, который может также передавать права другим пользователям, будет выглядеть так:
GRANT ALL ON STUDENT TO NIK WITH GRANT OPTION;
Ликвидация прав
Команда REVOKEликвидирует права доступа к объектам БД. Права – это действия с объектом, которые разрешены пользователю.
SQL-права описаны в табл. 13.3.
При использовании команды REVOKE возможны следующие ограничения:
- ликвидировать права может только тот пользователь, который их выдал;
- одному пользователю могут быть переданы одни и те же права на объект БД от любого числа разных пользователей. Команда REVOKE влечет за собой лишение выданных ранее именно этим пользователем прав;
- права, выданные всем пользователям опцией PUBLIC, могут быть ликвидированы командой REVOKE только с опцией PUBLIC.
Т а б л и ц а 13.3
SQL-права
Право | Описание |
ALL | Ликвидируются все права |
SELECT | Дает право выбирать строки из таблицы (представления) |
DELETE | Дает право удалять строки из таблицы (представления) |
INSERT | Дает право добавлять строки в таблицу (представление) |
UPDATE | Дает право изменять строки в таблице (представлении). Может быть ограничено определенным набором столбцов |
EXECUTE | Дает право выполнять хранимую процедуру |
GRANT OPTION FOR | Делегирование прав другим пользователям |
Синтаксис команды REVOKE следующий:
REVOKE {ALL [PRIVILEGES] | SELECT | DELETE | INSERT | UPDATE(<список столбцов>) | REFERENCES(<список столбцов>)}
ON [TABLE]{<имя таблицы> | <имя обзора>}
FROM {<объект> | <список пользователей>}
/ EXECUTE ON PROCEDURE<имя процедуры>
FROM {<объект> | <список пользователей>};
Возможные значения <объект> перечислены в табл. 13.2.
Например, у пользователя Nik команда ликвидирует право на удаление из таблицы student.
REVOKE DELETE ON STUDENT FROM NIK;
Практическая часть
Порядок выполнения работы
1. В зависимости от варианта для созданных таблиц создать триггеры для каждой таблицы (по три триггера для таблицы, возможные ситуации включения триггеров предусмотреть по собственному усмотрению).
2. Использовать команду изменения триггеров, применив ее на нескольких триггерах.
3. Научиться использовать команду удаления триггеров.
4. Создать несколько пользователей. Делегировать пользователям следующие права:
- права системного администратора с возможностью передавать эти права другим пользователям;
- права системного администратора без права передавать эти права другим пользователям;
- права на добавление и выборку записей из всех таблиц;
- права на удаление, добавление и выборку данных из нескольких таблиц, с указанием полей, которые разрешено изменять.
5. Научиться пользоваться командой, которая ликвидирует права.
6. Сохранить резервную копию БД на съемном носителе для дальнейшего использования.
Контрольные вопросы
1. Каким образом можно ограничить доступ пользователям к БД?
2. Какие виды ограничений бывают?
3. Каким образом можно ликвидировать права пользователей?
Лабораторная работа 14