Изменения

Перейти к: навигация, поиск

Управление доступом к данным

105 байт добавлено, 03:02, 24 декабря 2021
м
Удаление прав: cosmetics
{{Определение
|id=sheme1
|definition='''Дискреционная ''' (или избирательная) '''схема''' {{---}} политика, в рамках которой поддерживаются списки, содержащие информацию о том, кто и к чему имеет доступ.
}}
В данной схеме используются следующие понятия:
<font color=blue>on <font color=red>{<font color=blue>table<font color=grey>|<font color=blue>database<font color=grey>|<font color=blue>view<font color=grey>|<font color=blue>procedure<font color=grey>|<font color=blue>function<font color=grey>|<font color=red>…} имя</font>
<font color=blue>to <font color=red>{пользователь<font color=grey>|<font color=blue>group <font color=red>группа<font color=grey>|<font color=blue>public<font color=red>}</font>
<font color=red>[<font color=blue>with grant option<font color=red>]<font color=greenblack> --  Можно добавить возможность наделять этим правом других пользователей и группс помощью опции: <font color=red>[<font color=blue>with grant option<font color=red>]<font color=black>
=== Примеры ===
<font color=green> -- Выдача всех прав на таблицу студентов товаров группе деканов</font> <font color=green> -- менеджеров с возможностью наделения этим правом</font>: <font color=blue>grant all priviledges on <font color=black>Students</font> Items <font color=blue> to group <font color=black>Deans ShopManagers <font color=blue>with grant option<font color=grey>;<font color=black>
<font color=green> -- Выдача публичного права на выборку из таблицы студентов</font>товаров: <font color=blue>grant select on <font color=black>Students Items <font color=blue>to public<font color=grey>;<font color=black>
== Удаление прав ==
<font color=blue>revoke</font>
<font color=red>[<font color=blue>grant option for<font color=red>]<font color=green> -- забрать не само право, а возможность его делегирования</font>
<font color=red>{<font color=blue>select<font color=grey>|<font color=blue>insert<font color=grey>|<font color=blue>update<font color=grey>|<font color=blue>delete<font color=grey>|<font color=blue>create</font>
<font color=grey> |<font color=blue>execute<font color=grey>|<font color=blue>trigger<font color=grey>|<font color=blue>usage<font color=grey>|<font color=red>…<font color=grey>|<font color=blue>all priviledges<font color=red>}</font>
<font color=blue>on <font color=red>{<font color=blue>table<font color=grey>|<font color=blue>database<font color=grey>|<font color=blue>view<font color=grey>|<font color=blue>procedure<font color=grey>|<font color=blue>function<font color=grey>|<font color=red>…} имя</font>
<font color=blue>from <font color=red>{пользователь<font color=grey>|<font color=blue>group <font color=red>группа<font color=grey>|<font color=blue>public<font color=red>}</font>
<font color=red>[<font color=blue>cascade<font color=grey>|<font color=blue>restrict<font color=red>]<font color=greenblack> -- если тот Если группа или пользователь, у кого для которого удаляется право забирается, наделил им кого-то еще,необходимо указать, каким образом следует отзывать право у всех его получивших:* </fontcode> cascade<font color=green/code> -- cascade также забирает право у всей цепочки получивших,;* <code>restrict</fontcode>выдаст ошибку, если право было делегировано;Для указания метода, следует использовать опцию: <font color=greenred>[<font color=blue>cascade<font color=grey>|<font color=blue> -- restrict выдаст ошибку, если право было делегировано<font color=blackred> ]<font color=greenblack> -- аналогично  Для того, как и про чтобы отозвать не само право, так и про а возможность его делегацииделегировать, следует использовать опцию: <font color=red>[<font color=blue>grant option for<font color=red>]<font color=black>
=== Примеры ===
<font color=green> -- Удалить у группы деканов менеджеров право вставки в таблицу студентов</font> <font color=green> -- товаров с отзывом этого права у всех, кто получил его по цепочке от деканов</font>менеджеров: <font color=blue>revoke insert on <font color=black>Students</font> Items <font color=blue> from group <font color=black>Deans ShopManagers <font color=blue>cascade<font color=grey>;<font color=black>
<font color=green> -- Удалить публичное право обновления таблицы студентов</font>товаров: <font color=blue>revoke update on <font color=black>Students Items <font color=blue>from public<font color=grey>;<font color=black>
== Владелец объекта ==
=== Пример ===
<font color=green>-- Создать представление, состоящее только из студентов факультета ИТиП</font>товаров из отдела мебели: <font color=blue>create view <font color=black>FITPStudents FurnitureItems <font color=blue>as</font> <font color=blue>select <font color=gray>* <font color=blue>from <font color=black>StudentsItems</font> <font color=blue>where <font color=black>GId ItemId <font color=blue>in</font> <font color=gray>(<font color=blue>select <font color=black>GId DId <font color=blue>from <font color=black>Group Departments <font color=blue>where <font color=black>FId DId <font color=gray>= <font color=green>'ИТиПFurniture'<font color=gray>)<font color=black>
<font color=green>-- Выдать все права на это представление декану ИТиПа</font>менеджеру отдела мебели: <font color=blue>grant all priviledges on <font color=black>FITPStudents FurnitureItems <font color=blue>to <font color=black>FITPDeanFurnitureManager<font color=gray>;<font color=black>
== Спроецированная таблица ==
=== Пример ===
<font color=green>-- Создать представление, состоящее только из табельных номеровартикулов, имен наименований и фамилий студентов</font>цветов товаров (без данных о расположении на складе, поставщике, сертификации и тд): <font color=blue>create view <font color=black>PublicStudents PublicItems <font color=blue>as</font> <font color=blue>select <font color=black>SIdItemId<font color=gray>, <font color=black>FirstNameName<font color=gray>, <font color=black>LastName <font color=green>-- без данных группы, паспорта и тдColor</font> <font color=blue>from <font color=black>StudentsItems
<font color=green>-- Выдать публичное право выборки для созданного представления</font>: <font color=blue>grant select on <font color=black>PublicStudents PublicItems <font color=blue>to <font color=black>public<font color=grey>;<font color=black>
== Агрегированная таблица ==
=== Пример ===
<font color=green>-- Создать представление, позволяющее смотреть только на средние баллы студентов,</font> <font color=green>-- а не на конкретные значения по предметам</font>:
<font color=blue>create view <font color=black>StudentPoints <font color=blue>as</font>
<font color=blue>select <font color=black>SId<font color=grey>, <font color=black>avg<font color=grey>(<font color=black>points<font color=grey>)</font>
<font color=blue>from <font color=black>Students <font color=blue>natural join <font color=black>Marks
<font color=green>-- Выдать публичное право выборки на созданное представление</font>: <font color=blue>grant select on <font color=black>StudentPoints <font color=blue>to public<font color=grey>;<font color=black><font color=black>
= См. также =
= Литература =
# https://www.kgeorgiy.info/courses/dbms/
# Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательскийдом "Вильяме", 2005. — 1328 с.
# Gulutzan P., Pelzer T.(1999) SQL-99 complete, really. Gilroy,CA:CMP Books
[[Категория: Базы данных]]
436
правок

Навигация