Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_KL_2010_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
28.97 Mб
Скачать

5.1.2.Команда revoke

Ликвидация ранее выданных прав осуществляется командой REVOKE. Ее формат:

REVOKE <права> ON [TABLE] {имяТаблицы | имяПросмотра}

FROM {<объект> | <списокПользователей>}

Пример, лишить пользователя Petrov права вставки данных в таблицу Owner:

REVOKE INSERT ON Owner FROM Petrov

5.2.Назначение прав исполнения хранимых процедур

Система безопасности InterBase-сервера позволяет решать проблему разрешения манипуляции данными не только на уровне прав пользователей, но и на уровне прав вызова хранимой процедуры. Другими словами, если пользователь не имеет прав, например, на вставку данных в таблицу, то такая операция все же будет произведена, если этим правом обладает исполняемая в данный момент хранимая процедура.

Синтаксис команды предоставления прав на уровне хранимой процедуры:

GRANT EXECUTE ON PROCRDURE ИмяПроцедуры TO

{<объект> | <списокПользователей>}

Здесь под <объект> понимают:

PROCEDURE имяПроцедуры |

TRIGGER имяТриггера |

VIEW имяПросмотра |

PUBLIC

[, <объект> . . . ]

а <списокПользователей> – это

{[USER] имяПользователя | имяРоли}

[, <списокПользователей> . . .] [их права]

Например, следующая команда предоставляет право вызова процедуры MAX_VALUE пользователю Petrov и процедуре CALC_BALANCE:

GRANT EXECUTE ON PROCRDURE MAX_VALUE TO Petrov,

PROCRDURE CALC_BALANCE

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;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]