Программирование >>  Sql: полное руководство 

1 ... 122 123 124 [ 125 ] 126 127 128 ... 264


в СУБД другого типа привилегия Сью могла бы сохраниться, так как у Ларри сохранилась привилегия, предоставленная Джорджем. Таким образом, то, как далеко паспространятся последствия выполнения инсгрукции revoke, зависит не только от самих привилегий, но и от хронологической последовательности инструкций grant и pEVOKE. Для получения желаемых результатов вьщача привилегий с правом предоставления и аннулирование таюгх привилегий должны выполняться очень осторожно.

Инструкция REVOKE и стандарт ANSI/ISO

В соответствии со стандартом SQL1, инструкция grant входит в язык определения данных (DDL). Вспомним (глава 13), что в SQLl с помощью DDL дается статическое определение структуры базы данных и не требуется, чтобы в СУБД существовала возможность динамического изменения структуры базы данных. Такой же подход используется по отношению к безопасности базы данных. Согласно стандарту SQL1, возможность доступа к таблицам и представлениям определяется набором инструкций grant, входящих в схему базы данных. После того как создано определение базы данных, изменить ее схему невозможно. Поэтому инструкция revoke, так же как инструкция drop table, отсутствует в стандарте SQL1.

Несмотря на это, инструкция revoke присутствует, по сути, во всех коммерческих реляционных СУБД с самых первых их версий. Как и в случае с инструкциями drop И alter, стандарт на инструкцию revoke был разработан позднее на основе диалекта SQL, используемого в DB2. В стандарт SQL2 вошла спецификация инструкции revoke, образцом для которой, с некоторыми изменениями, послужила одноименная инструкция из DB2. Одно из изменений дает пользователю возможность осуществлять явный контроль над отменой привилегий, предоставленных, в свою очередь, другим пользователям. Другое изменение позволяет отменять право предоставления привилегий, не отменяя при этом сами привилегии.

Стандарт SQL2 требует, чтобы в инструкции revoke присутствовал параметр cascade или restrict, Определяющий, каким образом должна производиться отмена привилегий, предоставленных другим пользователям. (Подобное требование, как упоминалось в главе 13, предъявляется в стандарте SQL2 ко многим инструкциям семейства drop.) Предположим, что Ларри были даны привилегии select и update на таблицу orders с правом дальнейшего предоставления и что Ларри передал эти привилегии Биллу. Тогда данная инструкция revoke:

REVOKE SELECT, UPDATE ON ORDERS FROM LARRY CASCADE

Отменяет привилегии не только Ларри, но и Билла. Таким образом, действие этой инструкции revoke распространяется на всех остальных пользователей, чьи привилегии являются производными от первоначальной инструкции grant.

Теперь предположим, что при тех же обстоятельствах вьшолняется следующая Инструкция revoke:

REVOKE SELECT, UPDATE ON ORDERS FROM LARRY RESTRICT

В данном случае инструкция revoke выполнится неуспешно. Параметр restrict означает, что СУБД не должна выполнять эту инструкцию, если в базе данных Имеются привилегии, производные от удаляемой. Сообщение об ошибке привлекает



внимание пользователя к тому факту, что имеются (возможно, непреднамеренные) побочные эффекты выполнения инструкции revoke, и дает возможность пересмотреть решение Если пользователь решит отменять привилегии, то может воспользоваться параметром cascade.

Стандарт SQL2 дает пользователю возможность осушествлять с помошью инструкции revoke более детальный контроль над привилегиями и правом их предоставления. Предположим еше раз, что Ларри получил привилегии на таблицу orders с правом их предоставления. Обычная инструкция revoke для этих привилегий;

REVOKE SELECT, UPDATE ON ORDERS FROM LARRY

отменяет как привилегии, так и право предоставлять их другим пользователям. Стандарт SQL2 допускает другой вариант инструкции revoke.

REVOKE GRANT OPTION FOR SELECT, UPDATE ON ORDERS FROM LARRY CASCADE

После успешного выполнения этой инструкции Ларри потеряет право предоставлять привилегии другим пользователям, но сам сохранит привилегии. Как и прежде, стандарт SQL2 требует присутствия параметра cascade или restrict для указания способа выполнения инструкции, если Ларри, в свою очередь, дал право предоставления привилегий другим пользователям.

Резюме

Безопасность реляционной базы данных обеспечивается с помошью языка SQL. Зашита данных в SQL основана на привилегиях (разрешенных действиях), предоставляемых имеюшггм идентификаторы пользователям (или группам пользователей) на конкретные объекты базы данных (например, таблшц>1 или представления). Представления играют ключевую роль в зашите данных, так как они применяются для ограничения доступа к строкам и столбцам таблиц.

Инструкция grant используется для предоставления привилегий; если пользователь получил привилегии с правом предоставления, то, в свою очередь, он может выдавать их другим пользователям.

Инструкция revoke применяется для отмены привилегий, предоставленных ранее посредством инструкции grant.





стао


Системн



1 ... 122 123 124 [ 125 ] 126 127 128 ... 264

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