|
Программирование >> Реляционные базы данных
ЗЗВ Глава 7 Систеш ыс аспекты SQL В Э1ит омерйтор можно тслючать дополнительные элементы. Оператор может заканчиваться ключевым словом CASCADE. В этом случае при OTNrtne усаэаниых в операторе привилегий отменяются все привилегии. Присвоенные только благодаря отмененным привилегиям. Точнее говоря, еслн пользователь U лишает пользователя К припилеп и Р. основанной на прнвплегми О. прннадлежашей Ь. из диаграммы присвоения удапяется ориентированное ребро от U/Q к V/P. При злам удапяется каждый узел, недостижимым из узла апаления (узла, отмеченного двумя звездочками ). Оператор может заканч1Н!атьсй 1С1Ючевым словом RESTRICT, означающи.м, что оператор отмены привилегий не выполним, если правило каскада, описанное в предыдущем абзаие, прмподт к отмене какой-либо привилегии из-за того, что отменяемые этим оператором привилегии были переданы другим пользователям. При замене REVOKE на REVOKE GRANT OPTION FOR сами привилегии сохраняются, но возможность передачи их другим ликвидируется. Та! >й вариант можно использовать п комбинации с CASCADE или RESTRICT. При этом по диаграмме присвоения определяется, нужно ли отменять какие-то другие присвоенные привилегии. Пример 7.24. Продолжая пример 7.22, предположим, что janeway отменяет привилегии, присвоенные picard, с помошью операторов REVOKE SELECT, INSERT ON Studio FROM picard CASCADE; REVOKE SELECT ON Movie FROM picard CASCADE; Ha рис. 7.15 удаляются ориентированные ребра от привилегий janeway к соответствующим привилегиям picard. Поскольку применяется CASCADE, нужно проверить, есть ли привилегии, которые недостижимы в графе из привилегии, отмече1И10й двумя звездочками (основанной на владении). Анализ рис. 7.15 показывает, что привилегии пользователя picard больше недостижимы из отмеченного двумя звездочками узла (они могли быть достижимы, если бы к узлу picard существовал другой путь). Привилегия INSERT пользователя sisko на таблицу Studio тоже больше недостижима. Значит, из диаграммы присвоения удалены не только привн-легш! пользователя picard, но и привилегия INSERT пользователя sisko. Заметим, что не удаляются привилегии SELECT пользователя sisko на таблицы Movie и Studio илн его привилегия INSERT(name) на Studio, так как все они достижимы из основанных на владе1ши привилегий пользователя janeway через привилегии пользователя kirk. В результате получается диаграмма, представтенная на рис. 7.16. □ Пример 7.25 В процедуре удаления есть тонкости, когорые мы проиллюстрируем на абстрактных примерах. Прежде всего, удачяя общую привилегию р. мы не удаляем привилегию, яшнмошуюся ее частным случаем. Рассмотрим, например, лоследоватепьносггь шагов, в которой пользователь U, владелец отношения R, присваивает пользокцелю V прив1Ц1егин INSERT и INSERT(A) на отношение R. LLIar выполняется Действие 1 и GRANT INSERT ON Л ТО К 2 и GRANT INSERT(A) ON R TO V 3 и REVOKE INSERT ON R FROM V RESTRICT Kirk SELECT , on Movie Janeway \ SELECT ) I on Studio / Janeway INSERT , on Studio j Kirk SELECT , on Studio Kirk INSERT on Studio , * / Sisko \ ( INSERT(naine) ) V on Studio J Sisko SELECT on Movie Sisko SELECT on Studio Рие. 7.16. Диофоммо присвоения после отмены гриеилетий пользователя picard Когда и лишает Y привилегии INSERT, привилегия INSERT(A) сохраняется. Диаграмма присвоения привилегий после шагов (2) и (3) показана иа рнс. 7.17. (а) После шага (2) (Ь) После шага (3) Рис. 7,17. Отмено общей привилегии сохроняет более частную привилегию 1 и GRANT /) ТО К WITH GRANT OPTION 2 V GRANT p TO W 3 и REVOKE GRANT OPTION FOR p FROM V CASCADE Ha шаге (1) пользователь U присваивает пользователю (привилегию р с праном передачи. На шаге (2) пользователь У использует право передачи для присвоения привилегии /) пользователю IV. В результате получается диаграмма, показанная на рис. 7.18 (а). (а) После шага (2) (Ь) После шага (3) Рие. 7.18. Отмене Прово передачи сохронпет боэовую привилвплю Затем на шаге (3) пользователь U лишает пользователя У права передачи привмегии р, но не лишает У самой этой привилегии. В результате звездочка удаляется нз узла лля У и р. Но из узла без звездочки не может исходить ориентн рованное ребро, поскапьку такой узел не является источником присвоения приви-леги1[. Значит, нужно удалить и ориентированное ребро от узла У/р к узлу W/p. Теперь к узлу iV/p нет пути от узла с двумя звездочсами, представляющего источник привилегии р. В результате узел fV/p удаляется из диаграммы. Однако узел У/р остается; он только изменяется за счет удаления одной звездочки, обозначающей право передачи привилегии. Результирующая диаграмма присвоения показана на рнс ..18 (Ь). □ 7.4-7 Упражнения к разделу 7.4 Впражнеиме 7.4.1. Укажите, какие привилегии нужнь для выполнения пере-чнслсштых ниже запросов. В к.чждом случае выделите наиболее частные привилегии, .1 также обище привилегии, которых достаточно для выполнения запросов. a) Запрос из рис 5.3 b) Запрос из рис. 5.5 *с) Операш1Я вставки нз рис. 5Л2 d) Операция удаления из примера 5.29 Заметим, что после шага (2) остается ява отдельных узла для двух похожих, ио не одинаковых привилегий, которые имеет пользователь К Режим RESTRICT на шаге (3) не предотвращает отмену привилегии, так как пользователь К никому i-e передавал пр1Н1млегпи. Фактически он не мог этого сделать, поскольку получил привилегии без нрава передачи. □ Пример 7.26. Рассмотрим пример, п котором пользователь U присваивает пользователю (привилегию/) с правом передачи, а затем отменяет только это право. В этом случае нужно ггзменить узел пользователя У, чтобы отразть утрат> права передачи и отменить все прг]сноения прнвмсгии р, выполненные пользователем F, удгыпв ребра, нсходяшне из узла V/p. Полчается следующий ряд шагов: Шаг выполняется Действие
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |