|
Программирование >> Реляционные базы данных
Необходимые привилегии доступны, если они были переданы владельцем данных пользователю, чей ID является текущим ID аеторизации, или пользователю PUBLIC. Это иллюстрируют описанные выще сит>аиии (3) и (4). Необходимые привилегии становятся досгупнымн, когда модуль выполняется тем. кто владеет и этим гюдулем. и данными, или тем, кому были передины привилегии на эти данные. Это иллюстрируют описанные выше ситлаиии (1) и (3). Законный способ выполнения операиии - выполнение модуля н течение сеанса, ID авторизации которого С01шадает с ID пользователя, имеющего все необходимые привилегии. Это иллюстрируют описанные выше ситуации (2) и (4), 7.4.4 Присвоение привилегий Пример 7.21 показывает, как важно для пользователя (т.е. ID авторизации) иметь привнлепш. Ранее было сказано, что создатель и владелец элемента БД имеют на него все привилегии. Присвоить их другому пользователю можно с помощью оператора GRANT. При этом привилегии сохраняются и у того, кто их присваивает, поэтому GRANT можно считать копией привилегий. Между присвоением привилегии и ее копированием есть одно существенное различие. С любой привилегией связан режим передачи. Один пользователь на отношение Movie может иметь привилегию типа SELECT с правом передачи, а другой - без этого права. Тогда первый пользователь может присвоить эту привилегию третьему пользователю, причем с правом или без права передачи, в то время как BTOpoil пользователь, лишенный права передачи, не имеет возможности присвоить ее больше никому. Если третий пользователь получает эту же приви-пегию с правом передачи, он может присвоить ее четвертому пользователю с правом или без права передачи и тл. В оператор присвоения входят следующие элементы: 1. Ключевое слово GRANT. 2. Список прив)1легий, например SELECT или INSERT(name). Здесь при желании можно применить ключевые слова ALL PRIVILEGES для сокращения списка всех привилегий, которые владелец может законно присвоить рассматриваемому элементу БД (элементу, упоминаемому ниже, в пункте 4). 3. Ключевое слово ON. 4. Элемент БД. Обычно это отношение, т.е. таблица базы или представление. Элементом .чожет быть также область или другой элемент, который здесь не рассматривается (см. заключенный в рамку текст под названием Что еше входит в схему в разделе 7.3.2), но в этом случае имени элемента должно предшествовать ключевое слово DOMAIN или другие подходящие ключевые слова. 5. Ключевое слово ТО. 6. Список пользователей (список ID авторизации). 7. Ключевые слова WITH GRANT OPTION (при необходимости). Форма оператора присвоения привилегий: GRANT <список привилегий> ON <элемент БД> ТО <список пользователей> В конце MorjT стоять ключевые слова WITH GRANT OPTION, Для корректного выполнения этого оператора выполняющий его пользователь должен иметь се присваиваемые привилегии, причем с правом передачи. Однако ои может иметь и более обшую привилегию (с правом передачи) по сравнению с lOii, которую оп присваивает кому-то другому. Например, можно присвоить кому-го привилегию INSERT(name) на таблицу Studio, имея на эту таблицу 6otce общую привилегию INSERT с правом передачи. Пример 7.22. Пользователь janeway, являющийся влааельием схемы MoveSchema. содержащей два отношения; Moviepie, year, length, inColor, studioName. producerC#) Studio(name. address, presC#) присваивает пользователям kirk и picard привилегии INSERT и SELECT на таблицу Sludio и привилегию SELECT на таблицу Movie. Эти привилегии присваиваются с правом передачи. Операторы присвоения; GRANT SELECT. INSERT ON Studio TO kirk, picard WITH GRANT OPTION; GRANT SELECT ON Movie TO kirlt. picard WITH GRANT OPTION; Теперь picard прнсиаивает пользователю sisko те же привилегии, но уже без права передачи; GRANT SELECT, INSERT ON Studio TO Sisko; GRANT SELECT ON Movie TO sisko: kirk присваннаег sisko мннимгшьные привилегии. иеоб,ходимые лля операиии вставки из рис. 7.14, а именно INSERT(name) и SELECT на таблицу Studio и SELECT на таблицу Movie: GRANT SELECT. INSERT{name) ON Studio TO sisko; GRANT SELECT ON Movie TO sisko; Заметим, что sisko получил привилегию SELECT на Studio и Move от двух различных пользователей и дважды получил привилегию INSERT{name) на Studio: прямо от пользователя kirk и косвенно через более общую привилегию INSERT от пользователя picanJ. □ 7-4-5 Диаграммы присвоения привилегий Поскольку в результате ряда присвоетшй может возникнуть сложная сеть присвоений и частично перекрывающихся привилегий, полезно представлять присвоения а виде диаграмм присвоения привилегий. Система SQL использует такую диа1рамму для отслеживания привилегий и их источников (в случае отмены привилегии, см. раздел 7.4.6). Диаграмма присвоения привилегий - это граф, кажды! узел которого соответствует пользователю и привилегии. Если пользователь У присваивает привилегию Р пользователю У и это присвоение основано на ом. что V имеет привилегию Q (О может совпадать с Р в режиме передачи ти быть обобщением Р с режимом передачи], пропод1гтся ориентированное ребро от узла U/Q к узлу 1-7Л Пример 7.23. На рис. 7.15 показана диаграм.ма присвоения, которая получается нз ряда применений операторов присвоения привилегий из примера 7.22. По согла-и[снию. символ * после комбинации пользователь - привилегия обозначает право передачи, символ означает, что привилегия вытекает из владения рассмагривае .\(ым элементом БД, а не присвоена каким-то другим источником. Последнее различие важно при анализе отмены привШ1егий (см. раздел 7.4.6). Привилегия, отмеченная двумя звездочками, автоматически предполагает право передачи. □ JanewayX SELECT , on Movie / Janeway INSERT . on Movie Janeway SELECT on Studio JnnewEty INSERT on Studio J Kli-k SELECT on Movie, t Kirk SELECT , on Studio * Picard SELECT , on Movie , Picard SELECT , on Studio * Picard INSERT on Studio . * Siako SELECT on Movie Sisko SELECT , on Studio Sisko INSERT , on Studio j Рис. 7.15. /Зиогроммо 1¥]исвоений привилел<й 7А6 Отмена привилегий Присооенная привилегия может быть отменена в любое время. Фактически отмену привилегий можно проводить каскадио п том смысле, что отмена привилегии с правом передачи, которая была передана другим пользователям, может требовать, чтобы все пользователи были лн1иены этой привилегии. Простой оператор отмены включает в себя следующие элементы: 1. Ключевое слово REVOKE 2. Список прнви.чеги!) 3. Ключевое слово ON 4. Элемент БД. представленный о пункте (4) описания оператора присвоения привилегии 5. Ключевое слово FROM. 6. Список пользователеП (список ID авторизации) Форма оператора отмены привилегий: REVOKE <список привилегий> ON <элемент БД> FROM <список пользователей>
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |