Файл: Тема 26. Защита баз данных.pdf

Добавлен: 20.10.2018

Просмотров: 607

Скачиваний: 9

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

подсхемы:  разные  категории  пользователей  могут  иметь  разные  права  на 

выполнение операций чтения, добавления, удаления и модификации. 

Языки  запросов  могут  быть  использованы  для  определения  привилегий 

доступа почти так же, как и при определении ограничений целостности. 

Секретность в SQL 

Стандарт  SQL  определяет  два  оператора  GRANT  и  REVOKE  для 

предоставления и отмены привилегий.  

Предоставление привилегий 

GRANT {список_действий | ALL PRIVILEGES} 

ON имя_объекта TO { имя_пользователя |  PUBLIC} 

[ WITH GRANT OPTION],  

где  список_действий  –  действия  из  набора:  SELECT,  INSERT,  DELETE, 

UPDATE (для таблиц); 

ALL PRIVILEGES – все действия; 

имя_объекта – имя таблицы, представления, хранимой процедуры, триггера; 

PUBLIC – права предоставляются всем пользователям; 

WITH GRANT OPTION  - передаются не только права на действия, но и право 

на передачу прав другим пользователям. 

Пример

С  базой  данных  работают  три  пользователя  с  именами  User1,  User2, 

User3.  Пользователь  User1  создал  объект  Table1  и  может  передать  права  на 

работу  с  ним  другим  пользователям.  Предполагается,  что  пользователь  User2 

будет  только  просматривать  таблицу,  а  User2  может  вводить  новые  записи.  В 

этом случае права можно распределить следующим образом: 

GRANT SELECT ON Table1 TO User2; 

GRANT INSERT ON Table1 TO User3; 

Оператор отмены привилегий 

REVOKE { список_операций | ALL PRIVILEGES} ON имя_объекта 

FROM {список_пользователей | PUBLIC } {CASCADE | RESTRICT}. 


background image

Вариант CASCADE - отмена привилегий не только упомянутых пользователей, 

но  и  всех  пользователей,  получивших  привилегии  от  данного  пользователя; 

RESTRICT – отмена привилегий только упомянутых пользователей. 

Секретность в QBE 

В  QBE  признаются  права  на  включение  (I.),  удаление  (D.),  обновление 

(U.)  и  чтение  (P.).  Чтобы  предоставить  пользователю  некоторые  права  на 

отношение  R,  владелец  этого  отношения  записывает  специальный  кортеж  в 

таблицу  для  R:  AUTR(список_прав).имя.  Здесь  имя  является  либо  именем 

человека, либо переменной, представляющей произвольное лицо. Если список 

прав  опущен,  то  предоставляются  все  четыре  права.  Если  имя  опущено,  то 

права предоставляются всем пользователям.  

В  строке  ограничений  в  колонках  атрибутов  записываются  переменные, 

константы,  выражения.  Переменная  указывает,  что  право  применяется  к 

данному  столбцу.  Константа  означает,  что  право  распространяется  только  на 

кортежи  с  указанным  значением  атрибута.  Пробел  –  доступ  к  атрибуту 

запрещен. Выражение представляет некоторое условие. 

Примеры

Заказы 

Фамилия  Товар  Количество 

AUTR(P.).Петров  _n 

_i 

_q 

Петров имеет право читать любую информацию из отношения Заказы. 

 

Заказы 

Фамилия  Товар  Количество 

AUTR().Петров  _n 

_i 

_q 

Петров может выполнять любые операции над отношением Заказы. 

 

Покупатели 

Фамилия  Адрес  Баланс 

AUTR(P.)._Петров  _n 

 

>0 

Все покупатели могут читать положительный баланс и фамилию, но не адрес. 

Покупатели 

Фамилия  Адрес  Баланс 


background image

AUTR(P.)._Петров  _Петров   

_b 

Покупатели могут читать только собственные балансы. 

Секретность статистических баз данных 

Базы  данных,  позволяющие  получать  совокупную  (агрегированную) 

информацию  о  больших  подмножествах  некоторого  множества  объектов, 

называются  статистическими.  Примерами  могут  служить  базы  данных 

переписи населения, местных органов власти, налоговых служб, медицинские и 

др.  Помимо  обычных  проблем  обеспечения  секретности  в  статистических  БД 

существует проблема запрета доступа к данным, касающихся конкретных лиц. 

Другими  словами,  разрешается  доступ  к  совокупной  информации  большой 

категории лиц, и запрещается выдача сведений о конкретных лицах. 

Проблема возникает вследствие того, что данные о конкретной личности 

могут  быть  получены  косвенным  путем  посредством  нескольких  совокупных 

запросов. Например, запрос 1 относится к некоторой группе лиц, а запрос 2 к 

той  же  группе  плюс  конкретное  лицо.  Сравнивая  ответы  на  два  запроса, 

нетрудно сделать вывод о данных интересующего нас лица. 

Можно  показать,  что  раскрытие  индивидуальных  данных  максимально 

осложняется, если разрешается делать запросы только для больших групп лиц, 

и размер пересечения любых двух запросов должен быть мал. Это соображения 

используются при реализации защиты статистических баз данных.