Изменения

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

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

4267 байт добавлено, 10:33, 20 декабря 2021
Представления и права
= Представления и права =
Использование представлений дает возможность выдавать права не на всю таблицу целиком, а только на ее часть, позволяя производить более тонкую настройку доступа.
 
== Фильтрованная таблица ==
Создается '''представление''' только '''для части кортежей''', для которой определяются права. Данное представление '''может быть изменяемым'''.
 
=== Пример ===
<font color=green>-- Создать представление, состоящее только из студентов факультета ИТиП</font>
<font color=blue>create view <font color=black>FITPStudents <font color=blue>as</font>
<font color=blue>select <font color=gray>* <font color=blue>from <font color=black>Students</font>
<font color=blue>where <font color=black>GId <font color=blue>in</font>
<font color=gray>(<font color=blue>select <font color=black>GId <font color=blue>from <font color=black>Group <font color=blue>where <font color=black>FId <font color=gray>= <font color=green>'ИТиП'<font color=gray>)<font color=black>
 
<font color=green>-- Выдать все права на это представление декану ИТиПа</font>
<font color=blue>grant all priviledges on <font color=black>FITPStudents <font color=blue>to <font color=black>FITPDean<font color=gray>;<font color=black>
 
== Спроецированная таблица ==
Создается '''представление''' только '''для части атрибутов''', для которой определяются права. Данное представление '''может быть изменяемым'''.
 
=== Пример ===
<font color=green>-- Создать представление, состоящее только из табельных номеров, имен и фамилий студентов</font>
<font color=blue>create view <font color=black>PublicStudents <font color=blue>as</font>
<font color=blue>select <font color=black>SId<font color=gray>, <font color=black>FirstName<font color=gray>, <font color=black>LastName <font color=green>-- без данных группы, паспорта и тд</font>
<font color=blue>from <font color=black>Students
 
<font color=green>-- Выдать публичное право выборки для созданного представления</font>
<font color=blue>grant select on <font color=black>PublicStudents <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 to public<font color=grey>;<font color=black>
436
правок

Навигация