Команда CREATE ROLE реализует первый этап действий при работе с ролями: создает (объявляет) роль в базе данных. Синтаксис команды:
CREATE ROLE ИмяРоли;
Следующая команда создает роль, называемую «bibrole».
CREATE ROLE bibrole;
Команда DROP ROLE
Команда DROP ROLE выполняет действия, обратные CREATE ROLE – удаляет роль из базы данных. Синтаксис команды:
DROP ROLE ИмяРоли;
Роль может быть удалена либо ее создателем, либо пользователем SYSDBA, либо другим пользователем с аналогичными правами.
Следующая команда удаляет роль, называемую «bibrole».
DROP ROLE bibrole;
Формирование списка прав, связанных с ролью
Ролям, созданным командой CREATE ROLE, могут быть предоставлены права так же, как и пользователям. Предоставление прав ролям осуществляется командой GRANT.
Рассмотрим пример предоставления прав (привилегий) роли «bibrole» на выполнение процедуры PAUTHOR.
CREATE ROLE bibrole;
GRANT EXECUTE ON PROCEDURE PAUTHOR TO bibrole;
Формирование прав пользователей на основе ролей
Сами по себе роли носят вспомогательный характер. С базой данных работают пользователи, а не роли, следовательно, именно пользователям и должны передаваться права на работу с объектами базы данных. Передача прав пользователям на объекты базы данных, объявленных для ролей, осуществляется командой GRANT.
|
|
Рассмотрим пример, в котором пользователю передаются права, присвоенные ролям.
GRANT bibrole TO misha, masha, Ivan_Ivanovitch;
Связывание пользователей с ролями
В InterBase с пользователем во время его сеанса работы с базой может быть связана только одна роль. В то же время команд GRANT на передачу прав ролей может быть несколько. Такой механизм позволяет динамически связывать набор прав пользователя при его конкретном соединении. Это имеет смысл в тех случаях, когда один и тот же человек выступает в различном качестве. Например, сегодня он работает как кассир, а завтра как приемщик товаров.
Таким образом, связь между ролью и пользователем осуществляется не при выдаче команды GRANT, а при соединении пользователя с базой. Реализация такой связи осуществляется командой CONNECT. Базовый синтаксис команды CONNECT для нашего случая выглядит следующим образом:
CONNECT USER ‘username’
PASSWORD ‘password’
ROLE ‘rolename’;
Таким образом, один и тот же пользователь при входе в систему может получить различные наборы прав.