|
Программирование >> Sql: полное руководство
SELECT INSERT DELETE UPDATE -► Представление EASTREPS
Таблица SAtESREPS -> X Нет доступа -> X Чб доступа Представпение WESTREPS
SELECT INSERT DELETE UPDATE
Рис. 15.4. OtpkitfHH&HHe доступа с строкам таблицы с помощью горизонтального Конечно, представления могут быть гораздо сложнее, чем простое подмножество строк и столбцов одной таблицы, как в приведенном примере. Создавая представление посредством запроса с группировкой, пользователю можно предоставить доступ к итоговым данным, а не к подробным данным исходной таблицы. В представлении можно объединять данные из двутс или более таблиц, разрешая полюователю доступ именно к тем данным, которые ему необходимы, и запрещая доступ ко всем остальным. Использование представлений для защиты данных в SQL ограничивается двумя важными факторами, упомянутыми ранее в главе 14; Ограничения на обновление данных. Если представление доступно только для выборки, то для него можно установить привилегию select, но привилегии insert, delete и aPDATE не и.меют для него смысла. Когда пользователь должен обновлять данные, видимые в доступном только для выборки представлении, ему следует дать разрешение на обновление исходных таблиц и он должен иметь возможность вьшолнять инструкции insert, delete и update по отношению к этим таблицам. Производительность. Так как СУБД преобразует каждое обращение к представлению в соответствующие обращения к исходным таблицам, при использовании представлений может значительно увеличиться трудоемкость операций, проводимых в базе данных. Поэтому представления нельзя неосмотрительно применять для ограничения доступа к данным - это неизбежно влечет за собой снижение общей производительности СУБД. предоставление привилегий (инструкция GRAN7 Инструкция gpant, синтаксичсская диаграмма которой изображена на рис !5 5, используется для предоставления пользователям привилегий на объекты базы данных. Обычно инструкцией grant пользуется владелец таблицы или представления, чтобы разрешить друтим пользователям доступ к этим данным. Как видно из рисунка, инструкция grant содержит список пpeдocтaвяeмыx привтаегий, имя таблицы, для которой назначаются привилегии, и идентификатор пользователя, получающего их. grant - select- - delete- - insert- - update- references-! [-jr-имя стоп5и,а -r) all privileges - usage on- on имя таблицы domain имя домена - character иия наборз символов- - collation имя порядка сортироаки- - translation имя правипа конвертираватя - -ТО- имя лопьэовэтеля PUBLIC - with grant option- Рис. }5.5.-С (так<Ач;Щ}Я}татдашла mucpytk GRA№S Синтаксическая диаграмма инструкции grant, изображенная на рисунке, соответствует стандарту ANSI/ISO. Многие СУБД придерживаются синтаксиса инструкции grant, который применяется в DB2. Он более гибок и позволяет задавать список идентификаторов пользователей и список таблиц, упрощая предоставление большого числа привилегий. Вот несколько примеров простых инструкций grbnt для учебной базы данных: Предоставить пользователям из отдела обработки заказов полный доступ к таблице orders. GRANT SELECT, INSERT, ON ORDERS TO OPUSER DELETE, UPDATE Разрешить пользователям финансового отдела извлекать данные о заказчиках и добавлять данные о новых заказчиках в таблицу customers; пользователям отдела обработки заказов разрешить только выборку из этой таблицы. GRANT SELECT, INSERT ON CUSTOMERS TO ARUSER GRANT SELECT ON CUSTOMERS TO OPUSER Разрешить Сэму Кларку добавлять и удалять информацию об офисах. GRANT INSERT, DELETE ON OFFICES TO SAM При предоставлении большого числа привилегий или предоставлении привилегий большому числу пользователей в инструкции grant для удобства применяются два сокращения. Вместо того чтобы перечислять все привилегии для некоторого объекта, можно использовать предложение all privileges. Приведенная ниже инструкция grant разрешает вице-президенту по сбыту Сэму Кларку полный доступ к таблице salesreps: Предоставить Сэму Кларку все привилегии по отношению к таблице salesreps. GRANT ALL PRIVILEGES ON SALESREPS TO SAM Вместо того чтобы давать привилегии по отдельности каждому пользователю базы данных, можно с помощью ключевого слова public предосавить их сразу всем пользователям, имеющим право работать с базой данных. Следующая инструкция grant разрешает всем пользователям извлекать данные из таблицы offices: Дать всем пользователям привилегию select для таблицы offices. GRANT SELECT ON OFFICES TO PUBLIC Обратите внимание: такая инструкция grant дает привилегии всем нынешним и будущим пользователям базы данных, а не только тем, кто имеет право работать с базой данных в настоящее время. Это устраняет необходимость явно предоставлять привилегии новым пользователям при их появлении Привилегии на столбцы Стандарт SQL1 позволяет выдавать привилегию update на отдельные столбцы таблицы или представления, а стандарт SQL2 дает возможность предоставлять таким же образом привилегии insert и references. Список столбцов располагается после ключевого слова update, insert или references и заключается в круглые скобки. Вот, например, инструкция grant, разрешающая сотрудникам отдела обработки заказов обновлять в таблице customers только столбцы с названием компании и идентификатором закрепленного за ней служащего: Разрешить пользователям отдела обработки заказов изменять названия компании, а также закрепленных за ними служаищх. GRANT UPDATE (COMPANY, CUST REP) ON CUSTOMERS TO OPUSER
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |