Передача привилегий (предложение WITH GRANT OPTION)
Если пользователь создает в базе данных объект и, тем самым становитесь его владельцем, то только он может предоставлять привилегии на этот объект. Когда он предоставляет привилегии другим пользователям, они могут пользоваться объектом, но не могут передавать эти привилегии кому-то еще. Таким образом, владелец объекта сохраняет строгий контроль над тем, кому какие формы доступа к объекту разрешены.
Но бывают ситуации, когда владелец может захотеть передать другим пользователям право предоставлять привилегии на свой объект.
grant select on orders to secretary with grant option;
Наличие предложения WITH GRANT OPTION означает, что инструкция GRANT наряду с привилегиями дает право на предоставление этих привилегии другим пользователям.
Теперь SECRETARY может выполнить следующую инструкцию GRANT:
grant select on orders to somebody;,
которая позволяет SOMEBODY извлекать данные из представления ORDERS. Так как SECRETARY не включил в свою инструкцию GRANT предложение WITH GRANT OPTION, цепочка заканчивается на SOMEBODY; он может извлекать данные из представления ORDERS, но не может давать право на доступ к нему другому пользователю.
В большинстве реляционных баз данных привилегии, предоставленные посредством инструкции GRANT, могут быть отобраны с помощью инструкции REVOKE, синтаксическая диаграмма которой изображена на рисунке 34. Инструкция REVOKE, имеющая структуру, аналогичную структуре инструкции GRANT, содержит набор отбираемых привилегий, объект, к которому относятся эти привилегии, и идентификаторы пользователей, у которых отбираются привилегии.
Посредством инструкции REVOKE можно отобрать только те привилегии, которые вы предоставили ранее некоторому пользователю. У него могут быть также привилегии, предоставленные другими пользователями; ваша инструкция REVOKE не влияет на эти привилегии.
Рисунок 34 Синтаксическая диаграмма инструкции
REVOKE
При использовании инструкции REVOKE следует учитывать, что если два разных пользователя предоставляют третьему пользователю одну и ту же привилегию на один и тот же объект, а затем один из них отменяет привилегию, то вторая привилегия остается в силе и по-прежнему разрешает пользователю доступ к объекту. Такую ситуацию в литературе иногда называют перекрытием привилегий.