Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
72
Добавлен:
01.05.2014
Размер:
669.7 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

TO <список пользователей>

Список полномочий позволяет перечислить несколько полномочий (чтения, удаления и/или обновления) в одной команде.

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

CREATE VIEW имя_представления_данных (список нужных атрибутов, если не совпадает с базовой таблицей) AS запрос.

Рассмотрим конкретный пример, в котором используется таблица 4.1. Предположим, что мы хотим ограничить доступ к этой таблице пользователю , позволяя ему просматривать только информацию о работнике, номер которого 1235.

GREAТE VIEW № Работника 1235 АS SELECT № Работника, Фамилия, Недельная зарплата, Специальность

FROM Работник

WHERE № Работника = 1235

Предположим, что позволено просматривать всю информацию таблицы «Работник», кроме информации о зарплате. Соответствующее представление данных выглядит так:

CREATE VIEW Работник1

AS SELECT № Работника, Фамилия, Специальность

FROM Работник

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

CREATE VIEW МОИ_ТАБЛИЦЫ

AS SELECT *

FROM SYSTABLES

WHERE CREATOR = USER

USER – ключевое слово, требующее присвоения значения во время выполнения. Таким образом, если вводит команду

SELECT *

FROM МОИ_TAБЛИЦЫ

система выполняет запрос, как если бы было написано

SELECT *

FROM МОИ_TAБЛИЦЫ

WHERE CREATOR =

Запросы такого рода называются контекстно-зависимыми, поскольку выдаваемый ими результат зависит от контекста ().

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

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 Петров

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

Соседние файлы в папке Базы данных1