Программирование >>  Хронологические базы данных 

1 ... 196 197 198 [ 199 ] 200 201 202 ... 348


Таким образом, пользователь В знает, что полученное им сообщение действительно пришло от пользователя А, поскольку алгоритм шифрования ЕСА приведет к получению результата Р, только если в процессе шифрования применялся алгоритм расшифровки DCA. Причем никто, даже пользователь В, не сможет подделать подпись пользователя А.

16.6. Средства языка SQL

в действующем стандарте языка SQL предусматривается поддержка только избирательного метода управления доступом. Она строится на основе двух более или менее независимых функций языка SQL. Первая из них является механизмом представлений, который (как говорилось выше, в главе 8) может быть использован для сокрытия важных данных от несанкционированных пользователей. Вторая функция называется подсистемой полномочий и позволяет одним пользователям, обладающим определенными правами доступа, избирательно и динамично предоставлять эти полномочия другим пользователям, а также отменять предоставленные ими полномочия в случае необходимости. Ниже эти функции языка SQL обсуждаются более подробно.

Представления и защита данных

Продемонстрируем использование представлений для организации защиты данных с помощью записи на языке SQL примеров 2-4 из раздела 16.2.

2. CREATE VIEW LS AS

SELECT S.Sl, S.SNAME, S.STATUS, S.CITY FROM S

WHERE S, CITY = London ;

Это представление определяет данные, по отношению к которым будут предоставлены некоторые привилегии. Само же предоставление привилегий осуществляется с помощью операторов GRANT.

GRANT SELECT, UPDATE ( SNAME, STATUS ), DELETE ON LS

TO Dan, Misha ;

Здесь следует отметить, что, поскольку привилегии задаются с помощью оператора GRANT, а не с помощью гипотетического оператора CREATE AUTHORITY, привилегиям в языке SQL имена не присваиваются. (Хотя для ограничений целостности стандарт языка SQL, наоборот, предусматривает присвоение имен. Подробности приводятся в главе 8.)

3. CREATE VIEW SSPPR AS

SELECT S.S#, S.SNAME, S.STATUS, S.CITY FROM S WHERE EXISTS

( SELECT * FROM SP WHERE EXISTS

( SELECT * FROM P



WHERE s.si = SP.Sl AND SP.pi = P.pi AND P.CITY = Rome ) ) ;

Собственно предоставление привилегий выполняется с помощью следующего оператора GRANT.

GRANT SELECT ON SSPPR TO Giovanni ;

4. CREATE VIEW SSQ AS

SELECT S.si, ( SELECT SUM (SP.QTY) FROM SP

WHERE SP.Sl = S.si ) as sq

FROM S ;

Собственно предоставление привилегий выполняется с помощью следующего оператора GRANT.

GRANT SELECT ON SSQ TO Fidel ;

В примере 5 из раздела 16.2 демонстрируется предоставление контекстно-зависимых полномочий. В языке SQL поддерживается несколько не имеющих аргументов встроенных функций: CURRENT USER, CURRENT DATE, CURRENT TIME и т.д., каждая из которых, помимо всего прочего, может быть использована и для определения контекстно-зависимых представлений. (Обратите внимание, что в языке SQL не поддерживается аналог оператора DAY(), используемого в исходном варианте примера 5.) Ниже приводится пример создания такого представления.

CREATE VIEW S NINE TO FIVE as

selects.si, S.NAME, S.STATUS, S.CITY FROM S

WHERE CURRENT TIME > TIME 09:00:00 AND CURRENT TIME < TIME 17:00:00

Соответствующий оператор GRANT выглядит так.

GRANT SELECT, UPDATE ( STATUS ) ON S NINE TO FIVE TO Purchasing ;

Обратите внимание, что представление S NINE TO FIVE демонстрирует очень странный тип представлений, так как его содержимое меняется со временем, причем даже в том случае, когда данные в базе вовсе не изменялись. Более того, представление, в определение которого встроен оператор CURRENT USER, может (а точнее, скорее всего, обязательно будет) иметь разное содержание для различных пользователей. Такие представления действительно отличаются от традиционных представлений, поскольку по сути они являются параметризованными. Предпочтительнее было бы, по крайней мере концептуально, разрешить пользователям определять собственные (потенциально параметризованные) функции, оперирующие значениями в виде переменных-отношений, и рассматривать представления , подобные S NINE TO FIVE, в качестве особых случаев таких функций.



Как бы там ни было, приведенные выше примеры хорошо иллюстрируют тот факт, что механизм представлений косвенно обеспечивает важные функции защиты данных ( косвенно потому, что этот механизм включен в систему для достижения совсем других целей). Более того, значительная часть процедуры контроля прав доступа (в том числе зависящая от конкретных значений) может быть выполнена еще на этапе компиляции, а не во время выполнения, что позволяет достичь существенного выигрыша в производительности. Тем не менее подходу с использованием представлений для организации защиты также свойственны определенные недостатки. В частности, некоторому пользователю в одно и то же время могут потребоваться разные права доступа в отношении разных подмножеств данных одной и той же таблицы. В качестве примера можно привести сложность реализации приложения, в котором пользователю разрешается просматривать и распечатывать данные о деталях из Лондона, и дополнительно разрешается обновлять данные о некоторых из них (например, только о красных деталях) непосредственно в процессе просмотра.

Операторы GRANT и REVOKE

Механизм представлений языка SQL позволяет концептуально разделять базу данных на части таким образом, чтобы важная информация была скрыта от несанкционированных пользователей. Однако этот механизм не позволяет указывать тот набор операций, которые разрешается применять в отношении данных частей санкционированным пользователям. Подобная задача (как было показано выше) решается с помощью оператора GRANT.

Обратите внимание, что в языке SQL создателю любого объекта автоматически предоставляются все привилегии в отношении этого объекта. Например, создателю таблицы Т автоматически разрешается выбирать (SELECT), вставлять (INSERT), обновлять (UPDATE), удалять (DELETE) таблицу Т и ссылаться (REFERENCES) на нее (ниже эти привилегии разъясняются подробнее). Более того, привилегии в каждом случае даются с правом их передачи , т.е. обладатель некоторых полномочий в подобном случае имеет право предоставить их и другим пользователям.

Ниже приводится общий синтаксис оператора GRANT.

GRANT <список привилегий> ON <об!Бех!Г>

ТО <список идентификаторов пользователей> [ WITH GRANT OPTION ] ;

Пояснения

Допустимыми значениями параметра <список привилегиям могут быть ключевые слова USAGE (использование), SELECT (выборка), INSERT (вставка), UPDATE (обновление), DELETE (удаление) и REFERENCES (ссылка). Привилегия USAGE необходима для получения права использования некоторого конкретного SQL-домена, привилегия REFERENCES - для получения права обращаться к указанной таблице при задании ограничений целостности. Назначение остальных привиле-

После добавления в стандарт в 1996 году понятия постоянно хранимые модули (Persistent Stored Modules - PSM) появилась новая привгсчегия EXECUTE (выполнение).



1 ... 196 197 198 [ 199 ] 200 201 202 ... 348

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика