Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.32 Mб
Скачать

23.2.Защищаемые объекты

Средства защиты в SQL применяются по отношению к отдельным объектам базы данных. В стандарте SQL1 указаны два типа защищаемых объектов – таблицы и представления. Таким образом, каждая таблица и представление могут быть защищены индивидуально. Доступ к ним может быть разрешен для одних пользователей и запрещен для других. Стандарт SQL2 расширяет круг защищаемых объектов, включая в него домены, и пользовательские наборы символов.

В большинстве коммерческих реляционных СУБД дополнительно могут быть защищены и другие объекты. Например, в ORACLE важным объектом базы данных является хранимая процедура. С помощью средств защиты SQL устанавливается, какие пользователи могут создавать и удалять хранимые процедуры и какие пользователи могут их выполнять.

23.3.Привилегии

Как уже указывалось привилегии – это права пользователя на проведение тех или иных действий над определенным объектом базы данных. В SQL предоставление тех или иных прав над различными объектами баз данных возможно посредством инструкции GRANT. Обычно инструкцией GRANT пользуется владелец таблицы или представления, чтобы разрешить другим пользователям доступ к этим данным. Особенности данной инструкции рассматриваются ниже в настоящем разделе. Здесь же следует указать, что многие коммерческие СУБД поддерживают набор системных привилегий. Системная привилегия – это мощная привилегия, которая предоставляет пользователю возможность выполнять системную операцию определенного вида. Для примера ниже приведены некоторые из почти ста системных привилегий, существующих в ORACLE8i:

• CREATE SESSION (установить сеанс) – позволяет пользователю соединяться с сервером баз данных и устанавливать с ней сеанс связи;

• CREATE TABLE (создать таблицу) – позволяет пользователю создавать таблицы в своей собственной схеме;

• CREATE ANY TABLE (создать любую таблицу) – позволяет пользователю создавать таблицы в любой схеме базы данных;

• CREATE ANY TYPE (создать любой тип) – позволяет пользователю создавать типы и тела соответствующих типов в любой схеме базы данных;

• SELECT ANY TABLE (выбрать любую таблицу) – позволяет пользователю обращаться с запросами к любой таблице базы данных;

• EXECUTE ANY PROCEDURE (выполнить любую процедуру) – позволяет пользователю выполнять любую хранимую процедуру, хранимую функцию или модульный компонент базы данных.

Отметим, что вопросы создания и использования таких объектов баз данных как хранимые процедуры, функции и модули будут рассмотрены ниже в разделе, посвященном PL/SQL, процедурного языка программирования, который встроен в большинство продуктов корпорации ORACLE – ведущего производителя промышленных СУБД.

23.3.1 Работа с привилегиями при помощи ролей

Вполне возможно, что для использования обычного приложения баз данных придется назначать множество системных привилегий. Когда с приложением работает множество пользователей, управление привилегиями может быстро превратиться в достаточно трудную задачу, так как нужно будет предоставлять привилегии каждому пользователю. Чтобы упростить процесс обеспечения безопасности системы некоторые СУБД в частности ORACLE позволяют воспользоваться ролями. Роль – это совокупность системных привилегий, предоставляемых пользователям и другим ролям. Например, при создании нового приложения можно создать новую роль с привилегиями, необходимыми для выполнения данной программы. После того как пользователю приложения предоставляется эта роль, он может запускать приложение, соединяться с базой данных и выполнять свою работу. Если привилегии, необходимые для выполнения приложения изменяются, то нужно только быстро модифицировать набор привилегий, заданных в роли. Все пользователи, которым предоставлена эта роль, автоматически отслеживают происшедшие изменения и продолжают работу с приложением, имея на то необходимые привилегии. Надо отметить, что СУБД может предоставлять пользователям некоторое количество предварительно установленных ролей. Так ORACLE определяет несколько предварительно установленных ролей, некоторые из которых перечислены ниже.

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

RESOURCE – роль, предназначенная для разработчиков приложений; помимо таблиц, представлений и т. д. позволяет создавать процедуры, функции, триггеры и объектные типы в соответствующей схеме.

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

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

DELETE_CATALOG_ROLE – роль, позволяющая удалять записи из журнала аудита базы данных.

EXECUTE_CATALOG_ROLE – роль, посредством которой пользователь может выполнять модули утилиты DBMS (модуль DBMS_OUTPUT описывается ниже, в разделе посвященном PL/SQL).

EXP_FULL_DATABASE, IMP_FULL_DATABASE – роли, позволяющие экспортировать и импортировать информацию, содержащуюся в базе данных, при помощи утилит экспорта и импорта.

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