Команда GRANT
Создание пользователя само по себе не дает ему никаких прав на доступ к объектам базы данных. Права доступа предоставляются командой GRANT. GRANT устанавливает права на объекты базы данных пользователям, ролям или другим объектам базы данных. Когда объект создается право на него имеет только его создатель и только он может выдавать права другим пользователям или объектам.
Для доступа к таблице пользователь или объект нуждается в правах на SELECT, INSERT, UPDATE, DELETE или REFERENCES. Для вызова процедуры в приложении пользователь должен иметь права на EXECUTE. Права могут быть даны всем пользователям опцией PUBLIC на месте списка пользователей.
Перечень прав приведен в нижеследующей таблице.
Права Позволяет пользователям .
ALL.........SELECT, INSERT, UPDATE, DELETE, EXECUTE, REFERENCES
SELECT......Дает право выбирать строки из таблицы или просмотра
INSERT......Дает право добавлять строки в таблицы или просмотры
UPDATE......Дает право изменять строки в таблице или просмотре
DELETE......Дает право удалять строки из таблицы или просмотра
REFERENCES..Дает право ссылаться при работе с внешним ключом на
специфицированные столбцы
EXECUTE.....Дает право выполнять хранимую процедуру
Чтобы показать, насколько гибкой является система безопасности InterBase-сервера, приведем синтаксис команды предоставления прав:
GRANT{
<список прав>
ON [TABLE] {имяТаблицы | имяПросмотра}
TO {<объект> | <списокПользователей>} | <роль>
TO {PUBLIC | <списокРолей>}};
Здесь
<права> = {ALL [PRIVILEGES] | <списокПрав>} где
<списокПрав> = {
SELECT |
INSERT |
UPDATE [(столбец [,столбец ...])] |
REFERENCES [(столбец [,столбец ...])]
[,<списокПрав> ...]}
Это права на выполнение либо отдельных операций SELECT, DELETE, INSERT, UPDATE, REFERENCES, либо их комбинаций, либо всех – ALL. предоставление права REFERENCES означает возможность создавать ссылочную целостность таблиц (ограничения внешнего ключа FOREIGN KEY).
Далее в команде GRANT под <объект> понимают:
<объект> =
PROCEDURE имяПроцедуры |
TRIGGER имяТриггера |
VIEW имяПросмотра |
PUBLIC |
[,<объект> ...]
<списокПользователей> – это пользователи, которым предоставлены права на выполнение хранимых процедур, триггеров и просмотров.
<роль> – в системе безопасности InterBase-сервера пользователей можно объединять в группы. Например, на фирме есть служба, которая использует базы данных, но не может их удалять. То есть ее сотрудникам достаточно прав на выполнение операций SELECT, INSERT, UPDATE. В этом случае создаем роль SEL_INS_UP:
CREATE ROLE SEL_INS_UP
Предоставляем этой роли право на просмотр, вставку и изменение данных таблицы, например, Owner:
GRANT SELECT, INSERT, UPDATE ON Owner TO SEL_INS_UP
Назначаем эту роль каждому из сотрудников данной службы:
GRANT SEL_INS_UP TO <имяПользователя>
Использование роли позволяет, например, исключить возможность ошибки в случае зачисления в штат данной службы нового сотрудника. Как видите, для предоставления пользователю права доступа к таблице необходимо указать как минимум вид права доступа, имя таблицы и пользователя. Но не только администратор имеет полномочия назначать права. Если вы создаете таблицу или хранимую процедуру, то имеете к ней права доступа наравне с администратором. Подробнее роли будут рассмотрены в разделе 5.3.
При назначении прав доступа на операцию можно уточнить, значения каких столбцов может изменять пользователь. Допустим, что пользователь Petrov имеет право изменять цену на предоставление услуги. Предположим, что цена задается в столбце COST таблицы SERVICE. Тогда операция назначения прав пользователю Petrov выглядит следующим образом:
GRANT SELECT, UPDATE (COST) ON SERVICE TO Petrov
Дата добавления: 2015-02-03; просмотров: 848;