Изменения

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

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

4916 байт добавлено, 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=blue>create view <font color=black>FurnitureItems <font color=blue>as</font>
<font color=blue>select <font color=gray>* <font color=blue>from <font color=black>Items</font>
<font color=blue>where <font color=black>ItemId <font color=blue>in</font>
<font color=gray>(<font color=blue>select <font color=black>DId <font color=blue>from <font color=black>Departments <font color=blue>where <font color=black>DId <font color=gray>= <font color=green>'Furniture'<font color=gray>)<font color=black>
 
Выдать все права на это представление менеджеру отдела мебели:
<font color=blue>grant all priviledges on <font color=black>FurnitureItems <font color=blue>to <font color=black>FurnitureManager<font color=gray>;<font color=black>
 
== Спроецированная таблица ==
Создается '''представление''' только '''для части атрибутов''', для которой определяются права. Данное представление '''может быть изменяемым'''.
 
=== Пример ===
Создать представление, состоящее только из артикулов, наименований и цветов товаров (без данных о расположении на складе, поставщике, сертификации и тд):
<font color=blue>create view <font color=black>PublicItems <font color=blue>as</font>
<font color=blue>select <font color=black>ItemId<font color=gray>, <font color=black>Name<font color=gray>, <font color=black>Color</font>
<font color=blue>from <font color=black>Items
 
Выдать публичное право выборки для созданного представления:
<font color=blue>grant select on <font color=black>PublicItems <font color=blue>to <font color=black>public<font color=grey>;<font color=black>
 
== Агрегированная таблица ==
Создается '''представление''', содержащее '''агрегированные данные''' вместо базовых, для которых определяются права. Данное представление, как правило, ''' не является изменяемым'''.
 
Если, при этом, пользователь имеет '''право на изменение''' хотя бы части агрегируемых данных, он может проводить '''дифференцированные атаки''', которые позволят '''определить''' частично или полностью '''исходные данные'''.
 
=== Пример ===
Создать представление, позволяющее смотреть только на средние баллы студентов, а не на конкретные значения по предметам:
<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=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
правок

Навигация