Базы данных. Учебное пособие

       

Проверка полномочий и представления данных


Представление  данных это  средство  предоставления  пользователю  его  личной  модели  базы  данных.  Это  также  удобный  способ  ограничения  доступа  пользователя  к  различным  частям  базы  данных:  данные,  которые  пользователю  не  нужно  видеть,  просто  спрятаны  от  него.  Это  упрощает  работу  с  системой,  повышая  попутно  защищенность  базы  данных.  Представления  данных  могут  создаться  при  помощи  операции  выбора,  создания  проекций  или  соединения  существующих  таблиц.  Таким  образом,  возможности  пользователя  могут  быть  ограничены  рассмотрением  только  части  некоторой  существующей  таблицы  или  же  соединения  некоторых  таблиц.

Типы  доступа  к  представлениям  данных.  Для  каждого  представления  данных  возможны  различные  типы  доступа:

1.    Право  чтения:  позволено  только  чтение  данных,  но  не  их  изменение.

2.    Право  ввода:  позволен  ввод  новых  данных,  но  не  изменение  существующих.

3.    Право обновления:  позволено  изменение  данных,  но  не  их  удаление.

4.    Право  удаления:  позволено  удаление  данных.

Эти  типы  доступа  обычно  обеспечиваются  назначением  для  предоставления  данных  нескольких  паролей.  Например,  предположим,  что  у  нас  есть  таблица 4.1 «Работник»  и  мы  хотим,  чтобы  пользователь  Васильев  имел  доступ  только  к  атрибутам  № РАБОТНИКА   и ФАМИЛИЯ,  причем  только  для  чтения.   Этого  можно  добиться,  создав  представление  данных,  содержащее  только  атрибуты  № РАБОТНИКА  и  ФАМИЛИЯ.  Для  представления  данных  № РАБОТНИКА_ФАМИЛИЯ  можно  создать  пароль,  дающий  право  доступа  только  для  чтения (команда SQL):

GRANT  READ ACCESS ON № РАБОТНИКА_ФАМИЛИЯ TO  Васильев

Общая  форма  такого  предоставления  права  доступа  в  SQL  с  командой  GRANT  выглядит  следующим  образом:

GRANT  <список  полномочий >  ON  <имя  представления  данных  или  таблицы>


Рассмотрим  пример,  в  котором  используется  таблица  «Проект»,  имеющая  следующую  схему:  ПРОЕКТ (№,  ФАМИЛИЯ, АДРЕС, ПОЧТОВАЯ  ОПЛАТА, ОТДЕЛ).  Например,  пользователю  может  быть,  разрешено  смотреть  только  среднюю  почасовую  оплату  из  таблицы.  Такое  ограничение  поддерживается  следующим  представлением  данных:

    

CREATE   VIEW AVG  (№,  ФАМИЛИЯ,  СР._ОПЛ., OТДЕЛ)

AS  SELECT №,ФАМИЛИЯ,AVG (ПОЧ._ ОПЛ),ОТДЕЛ  

FROM   ПРОЕКТ  GROUP BY OТДЕЛ



Обратите  внимание,  что в  представлении  данных  создается  атрибут  (СР._ОПЛ),  которого  не  существовало  в  базовой  таблице  «Проект».  Его  значения  вычисляются  командой  SELECT - берется  среднее  значение  атрибута  ПОЧТОВАЯ  ОПЛАТА  для  каждого  отдела.

Хотя  применение  представлений  данных  может  быть  эффективным  средством  защиты,  система  должна  уметь  приспосабливаться  к   изменяющимся  со  временем  требованиям.  В  SQL  такую  возможность  дают  команды  GRANT  и  REVOKE.  Приведем примеры:

GRANT  SELECT  ON  TABLE  C  TO  Иванов,  Петров

Команда  означает,  что  Иванову  и  Петрову  предоставлено  право  применять  любые  операции  SELECT  к  таблице «C».

GRANT  SELECT,  UPDATE (ОТДЕЛ)  ON  TABLE  C  TO  Петров

Это  означает,  что  Петров  имеет  право  применять  любые  операции  SELECT  к  таблице «C»,  а  также  обновлять  значения  атрибутов  ОТДЕЛ.

REVOKE   SELECT  ON  TABLE  C  FROM  Иванов

Эта  команда  означает,  что  Иванов  больше  не  имеет  права  выполнять  операции  SELECT  над  таблицей «С».

Список  привилегий,  которые  относятся  к  таблицам: 

SELECT  (выбор)

UPDATE  (обновление)

DELETE  (удаление)

INSERT  (ввод)

Опция  GRANT  может  распространяться   на  других  пользователей.  Например,  если  Иванов  имеет  право  передать  привилегию  А  Петрову,  то  Петров  имеет  право  передать  привилегию  А  другому   пользователю, Васильеву  и т.д. 

Иванов:

GRANT  SELECT  ON  TABLE  C  TO  Петров  WITH  GRANT  OPTION

 

Петров:

GRANT  SELECT ON  TABLE  C  TO Васильев WITH GRANT  OPTION

До  тех  пор  пока  пользователь  получает  GRANT  OPTION,  он  может  передавать  ту  же привилегию  другим  пользователям.

Если  Иванов  позже  хочет  отозвать GRANT  OPTION,  то  он  может  сделать  так: 

REVOKE  SELECT  ON  TABLE  C  FROM   Петров

Такой  отзыв  будет  применен  как  к  Петрову, так и  ко  всем,  кому  он  передал  привилегию,  и  т.д.


Содержание раздела