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

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

1 Создание ; роли, . то < есть > объявление i ее : в 1 базе i (создание : имени и . пустого . множества).

• Формирование списка прав, связанных с ролью (включение элементов - прав в множество).

• Формирование прав пользователей на основе ролей

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

Команды CREATEROLE, DROPROLE

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

Синтаксис:

CREATE ROLE rolename;

Таблица 8.9. Опции команды CREATE ROLE

Параметр Описание
Rolename Имя роли; должно быть уникальным среди функциональных имен в базе данных

Пример 8.10

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

CREATE ROLE bibrole;

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

Синтаксис:

DROP ROLE rolename;

Таблица 8.10. Опции команды DROP ROLE

Параметр Описание
Rolename Имя существующей роли, которая удаляется из базы данных

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

Пример 8.11

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

DROP ROLE bibrole;

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

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

GRANT {all /privileges] / LJ5T_<privilege>} CN [table]

{tablename / viewname^

TO LIST_<user>

/EXECUTE ON PROCEDURE procname TO / LIST_<user> /with grant option]

<privilege> .•; = SELECT / DELETE / INSERT / UPDATE [ (LJST_co]/)

I REFERENCES [ (LIST_col) ]

<user>;:= /USERJ username / rolename / Unix„user}

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

Таблица 8.11. Описание синтаксических элементов команды GRANT для ролей

Аргумент Описание
privilege Имя предоставленного права. Допустимые значения: SELECT, DELETE, INSERT, UPDATE, REFERENCES
Col Имя столбца, на который выдаются права.
Tablename Имя существующей таблицы, на которую распространяются права
Аргумент Описание
Viewname Имя существующего обзора, на который распространяются права
username Имя пользователя, которому передаются права
WITH GRANT OPTION Передает права на передачу прав пользователям, перечисленным в списке LIST_<user>
rolename Имя существующей роли, созданной командой CREATE ROLE

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

Пример 8.12

CREATE ROLE bibrole;

GRANT EXECUTE ON PROCEDURE PAUTHOR TO bibrole;

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

GRANT LIST_rolename ТО

{PUBLIC / LJST_<grants> /WITH ADMIN OPTIOM7 } ; <grants>;;= fuSBRj username

Таблица 8.11. Описание синтаксических элементов команды GRANT для передачи прав ролей пользователям

Аргумент Описание
username Имя пользователя, которому передаются права
rolename Имя существующей роли, созданной командой CREATE ROLE

Рассмотрим передачу пользователям прав, присвоенных ролям. Пример 8.13

bibrole ТО misha, masha, Ivan_Ivanovitch;

Связывание пользователей с ролями В InterBase с пользователем во время его сеанса работы с базой может быть связана только одна роль. В то же время команд GRANT на передача прав от ролей пользователю может быть несколько.

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

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

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

CONNECT USER 'username' PASSWORD 'password' ROLE 'rolename ' ;

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

Пример 8.14

CONNECT USER 'MISHA' PASSWORD '1234 5' ROLE 'bibrole';

MISHA получил права на процедуру PATHOR

CONNECT USER 'MISHA' PASSWORD '12345';

MISHA не получил права на процедуру PATHOR

Задание прав. команда grant | Введение в InterBase | 8.5. копирование и восстановление базы данных


Введение в InterBase



Новости за месяц

  • Апрель
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс