Название: Базы данных. Концепция баз данных, реляционная модель данных, языки SQL и XML (Токмаков Г. П.)

Жанр: Информационные системы и технологии

Просмотров: 1417


5.3.создание группы управления правами – роли

 

Прежде всего, разберемся с понятием роли. Рассмотрим некоторое множе- ство команд предоставления прав (GRANT) и дадим ему имя. В этом случае вме- сто перечисления команд GRANT можно, указав имя, сослаться на это множество. Такой подход позволяет одной командой передать пользователю права сразу на несколько объектов. Если пользователей много, то действия по отслеживанию их прав становятся достаточно громоздкими и работа с такими множествами существенно ее облегчает. Особенно удобно то, что вместо предоставления прав на какой-либо новый объект или ограничения ранее предоставленных прав каждому из пользователей, можно провести такое изменение в нашем поимено- ванном множестве, которым и является роль.

Процедура работы с ролями включает несколько этапов:

– создание роли, т. е. объявление ее в базе (создание имени и пустого множе-

ства);

– формирование списка прав, связанных с ролью (включение элементов прав в множество);

– формирование прав пользователей на основе ролей;

– связывание пользователей с ролями, т. е. передача им множества прав, опи-

санных в роли.

 

5.3.1. К ОМА Н Д А  CREATE  ROLE

 

Команда CREATE ROLE реализует первый этап действий при работе с ролями:

создает (объявляет) роль в базе данных. Синтаксис команды:

 

CREATE ROLE ИмяРоли;

 

Следующая команда создает роль, называемую «bibrole».

 

CREATE ROLE bibrole;

 

5.3.2. К ОМА Н Д А  DROP  ROLE

 

Команда DROP ROLE выполняет действия, обратные CREATE ROLE – удаляет роль из базы данных. Синтаксис команды:

 

DROP ROLE ИмяРоли;

 

Роль может быть удалена либо ее создателем, либо пользователем SYSDBA,

либо другим пользователем с аналогичными правами.

Следующая команда удаляет роль, называемую «bibrole».

 

DROP ROLE bibrole;

 

5.3.3. Ф ОРМИР О ВАН И Е  СПИС КА  ПРАВ , С В Я ЗАННЫ Х  С  РОЛЬЮ

 

Ролям, созданным командой CREATE ROLE, могут быть предоставлены права так же, как и пользователям. Предоставление прав ролям осуществляется ко- мандой GRANT.

Рассмотрим пример предоставления прав (привилегий) роли «bibrole» на выполнение процедуры PAUTHOR.

CREATE ROLE bibrole;

GRANT EXECUTE ON PROCEDURE PAUTHOR TO bibrole;

 

5.3.4. Ф ОРМИР О ВАН И Е  ПРАВ  П О Л ЬЗОВАТ ЕЛЕЙ  НА  ОСНО ВЕ  РОЛЕЙ

 

Сами по себе роли носят вспомогательный характер. С базой данных рабо- тают пользователи, а не роли, следовательно, именно пользователям и должны передаваться права на работу с объектами базы данных. Передача прав пользо- вателям на объекты базы данных, объявленных для ролей, осуществляется ко- мандой GRANT.

Рассмотрим пример, в котором пользователю передаются права, присвоен-

ные ролям.

 

GRANT bibrole TO misha, masha, Ivan_Ivanovitch;

 

5.3.5. С ВЯЗЫВ АНИЕ П О Л ЬЗОВАТ ЕЛЕЙ С РО Л Я М И

 

В InterBase с пользователем во время его сеанса работы с базой может быть связана только одна роль. В то же время команд GRANT на передачу прав ролей может быть несколько. Такой механизм позволяет динамически связы- вать набор прав пользователя при его конкретном соединении. Это имеет смысл в тех случаях, когда один и тот же человек выступает в различном качестве. Например, сегодня он работает как кассир, а завтра как приемщик товаров.

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

кой  связи  осуществляется  командой  CONNECT.  Базовый  синтаксис  команды

CONNECT для нашего случая выглядит следующим образом:

 

CONNECT USER ‘username’ PASSWORD ‘password’

ROLE ‘rolename’;

 

Таким образом, один и тот же пользователь при входе в систему может по-

лучить различные наборы прав.