Программирование >>  Sql: полное руководство 

1 ... 120 121 122 [ 123 ] 124 125 126 ... 264


Если список столбцов опущен, то привилегия действительна для всех столбцов таблицы или представления. Например:

Разрешить пользователям финансового отдела изменять всю информацию о клиентах.

GRANT UPDATE

ON CUSTOMERS TO ARUSER

Согласно стандарту ANSI/ISO, не разрешается указывать список столбцов для привилегии select; она должна распространяться на все столбцы таблицы или представления. Но на практике это не является серьезным ограничением. Чтобы обеспечить доступ не ко всем столбцам, на основе таблицы создается представление, включающее только необходимые столбцы, а затем выдается привилегия select на это представление (как описывалось ранее в настоящей главе). Однако представления, созданные исключительно для целей безопасности, могут заметно усложнить структуру простой базы данных. По этой причине в некоторых СУБД разрешается указывать список столбцов для привилегий select. К примеру, ниже приведена инструкция grant, действительная в Sybase, SQL Server и Informuc

Разрешить пользователям финансового отдела только выборку из таблицы SALESREPS столбцов с именами и идентификаторами служащих и идентификаторами офисов.

GRANT SELECT (EMPL NUM, NAME, REP OFFICE) ON SALESREPS TO ARUSER

Такая инструкция grant устраняет необходимость в представлении repinfo, изображенном на рис. 15.3, и на практике может сделать ненужным большое количество представлений в промышленных базах данных. Однако список столбцов для привилегии select применяется только в некоторых диалектах SQL; он не разрешается стандартом ANSI/ISO и реляционными СУБД компании IBM.

Передача привилегий (предложение WITH GRANT OPTION)

Если вы создаете в базе данных объект и становитесь его владельцем, только вы можете предоставлять привилегии на этот объект. Когда вы предоставляете привилегии другим пользователям, они могут пользоваться объектом, но не могут передавать эти привилегии кому-то еще. Таким образом, владелец объекта сохраняет строгий контроль над тем, кому какие формы доступа к объекту разрешены.

Но бывают ситуации, когда владелец может захотеть передать другим пользователям право предоставлять привилегии на свой объект. Например, обратимся еще раз к Представлениям eastreps и westreps в учебной базе данных. Их создал и владеет Ими вице-президент по сбыту Сэм Кларк. Посредством следующей инструкции grant он может дать менеджеру лос-анджелесского офиса Ларри Фитчу разрешение пользоваться представлением westreps.

GRANT SELECT ON WESTREPS TO LARRY

Что произойдет, если Ларри захочет дать Сью Смит (идентификатор пользователя е) разрешение на доступ к представлению westreps в связи с тем, что она



составляет план-прогноз объема продаж для офиса в Лос-Анджелесе? Он не сможет этого сделать, так как предыдущая инструкция grant неявно запрещает подобное действие. Требуемую привилегию может предоставить только Сэм Кларк, так как именно он является владельцем представления.

Если Сэму требуется, чтобы Ларри по своему усмотрению решал, кому давать привилегию на представление westreps, он может воспользоваться следующей разновидностью инструкции grant:

grant select on westreps to larry with grant option

Наличие предложения with grant option означает, что инструкция grant наряду с привилегиями дает право на предоставление этих привилегий другим пользователям.

Теперь Ларри может вьшолнить следующую инструкцию grant:

grant select on westreps to sue

которая позволяет Сью Смит извлекать данные из представления westreps. На рис. 15,6 процедура передачи привилегий изображена фафически: сначала от Сэма к Ларри, а затем от Ларри к Сью. Так как Ларри не включил в свою инструкцию grant предложение with grant option, цепочка заканчивается на Сью; она может изачекать данные из представления westreps, но не может давать право на дост>тт к нему другому пользователю. Однако если бы Ларри вютючил в свою инструкцию grant предложение with grant option, цепочка могла бы протянуться дальше, поскольку Сью получила бы возможность предоставлять право на доступ друтим пользователям.

GRANT

WITH GRANT OPTION


PnailJS.Q, Использование права предосгавлвнт привилегий друтм попьзрваг&пям

Ларри мог бы поступить иначе: создать для Сью представление, вкшочающее только служащих лос-анджелесского офиса, и разрешить ей доступ к этому представлению:

create view lareps as select *



FROM WESTREPS WHERE OFFICE =21

GRANT ALL PRIVILEGES .

ON LAREPS TO SUE

Ларри будет владельцем представления lareps, ho oh не является владельцем представления westreps, на основании которого создается новое представление. Для эффективного обеспечения безопасности требуется, чтобы, прежде чем Ларри мог дать Сью привилегию select на представление lareps, он имел не только привилегию select на представление westreps, но и право выдачи этой привилегии.

Если пользователь имеет какие-либо привилегии с правом предоставления, то он может давать другим пользователям эти привилегии вместе с правом предоставления. Те, в свою очередь, могут дальше передавать привилегии также с правом предоставления. По этой причине следует очень осторожно использовать возможность предоставления привилегий. Обратите внимание; право предоставления касается только тех привилегий, которые указаны в инструкции grant. Если вы хотите дать кому-либо одни привилегии с правом предоставления, а другие - без, то должны воспользоваться двумя отдельными инструкциями grant. Например:

Разрешить Ларри Фитчу извлекать, добавлять, обновлять и удалять данные из представления westreps, а также позволить ему предоставлять другим пользователям разрещение на выборку данных.

GRANT SELECT ON WESTREPS TO LARRY WITH GRANT OPTION

GRANT INSERT, DELETE, UPDATE ON WESTREPS TO LARRY

Отмена привилегий (инструкция REVOKE)

в большинстве реляционных баз данных привилегии, предоставленные посредством инструкции grant, могут быть отобраны с помощью инструкции revoke, синтаксическая диаграмма которой изображена на рис. 15.7. Инструкция revoke, имеющая структуру, аналогичную структуре инструкции grant, содержит набор отбираемых привилегий, объект, к которому относятся эти привилегии, и идентификаторы пользователей, у которых отбираются привилегии.

Посредством инструкции revoke можно отобрать все или только некоторые из привилегий, предоставленных ранее пользователю. Например, рассмотрим такую Последовательность инструкций:

Предоставить определенные привилегии на таблицу salesreps, а затем отменить часть из них.

GRANT SELECT, INSERT, UPDATE ON SALESREPS TO ARUSER, OPUSER



1 ... 120 121 122 [ 123 ] 124 125 126 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика