Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по субд Крупская.doc
Скачиваний:
57
Добавлен:
15.06.2014
Размер:
2 Мб
Скачать
☆

31 Привилегии доступа к объектам схемы. Правила предоставления привилегий

Существуют привилегии двух типов:

-системные привилегии(system privileges), контролирующие общий доступ к базе данных;

-объектные привилегии(object privileges), контролирующие доступ к конкретным объектам базы данных.

Для управления привилегиями определены следующие правила:

-объект принадлежит пользователю, его создавшему (если синтаксисом не указано создание объекта -другого пользователя, конечно, при соответствующих полномочиях);

-владелец объекта, согласно стандарту, может изменять привилегии своего объекта (в коммерческих СУБД, таких как Oracle, уровни полномочий представляют собой более сложную иерархию);

-объектная привилегия всегда соотносится с конкретным объектом, а системная - с объектами вообще.

Язык SQL поддерживает следующие привилегии:

ALTER- позволяет выполнять операторALTER TABLE;

SELECT- позволяет выполнять оператор запроса;

INSERT- позволяет выполнять добавление строк в таблицу;

UPDATE- позволяет изменять значения во всей таблице или только в некоторых столбцах;

DELETE- позволяет удалять строки из таблицы;

REFERENCES- позволяет устанавливать внешний ключ с использованием в качестве родительского ключа любых столбцов таблицы или только некоторых из них;

INDEX- позволяет создавать индексы (не входит в стандарт SQL-92);

DROP- позволяет удалять таблицу из схемы базы данных.

32 Предоставление и отмена привилегий (инструкция grant и revoke).

Предоставление привилегий (инструкция GRANT)

Когда он предоставляет привилегии другим пользователям, они могут пользоваться объектом, но не могут передавать эти привилегии кому-то еще. Таким образом, владелец объекта сохраняет строгий контроль над тем, кому какие формы доступа к объекту разрешены.

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

grant select on orders to secretary with grant option;

Отмена привилегий(REVOKE)

Посредством инструкции REVOKE можно отобрать только те привилегии, которые вы предоставили ранее некоторому пользователю. У него могут быть также привилегии, предоставленные другими пользователями; ваша инструкция REVOKE не влияет на эти привилегии.

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

33 Работа с привилегиями при помощи ролей. Системные роли, определение, изменение, удаление ролей

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

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

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

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

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

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

Роли, определяемые пользователями

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

Разрешение и запрещение ролей

Пользователь, которому предоставлена роль, не всегда имеет доступ к ее привилегиям. В ORACLEприложения могут разрешать и запрещать роли для любого пользователя. После того как приложениеразрешаетроль для пользователя, ему становятся доступны ее привилегии. И, соответственно, когда приложениезапрещаетроль для пользователя, он более не имеет доступа к ее привилегиям.

Возможность динамически управлять набором привилегий позволяет приложениям обеспечивать постоянную корректность наборов привилегий пользователей во время работы с данным приложением. Например, когда пользователь запускает приложение по вводу заказов, с помощью SQL-команды SET ROLE это приложение разрешает ему применять для работы роль ORDER_ENTRY (см. пример). Когда пользователь завершает свою работу, приложение запрещает для него эту роль, и он не может применять привилегии приложения по вводу заказов во время работы с другим приложением.