Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекциипо СВИО 4.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
45.21 Кб
Скачать

Организация доступа к базе данных

Основными командами DCL являются:

GRANT – представление привилегий

REVOKE – лишение привилегий.

Администраторы баз данных назначают привилегии пользователям.

Пользователи, создающие таблицы, автоматически получают контроль над этими таблицами.

Привилегии (privileges) определяют, может ли отдельный пользователь выполнять данную операцию. Типы привилегий соответствуют нескольким типам операций.

Привилегии БД делятся на две категории:

  • системные (system privileges)

  • объектные (object privileges).

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

Объектные привилегии связаны с конкретным объектом БД – таблицами, представлениями и т.д.

В основе объектных привилегий лежат следующие принципы:

  • Идентификаторы авторизации создают объекты и становятся их владельцами;

  • Владелец объекта назначает и отменяет привилегии для этого объекта;

  • Объектная привилегия логически состоит из двух компонентов объекта, к которому применяются привилегии и операции, которую она разрешает.

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

Например, пусть пользователь Диана (Diane) является владельцем таблицы CUSTOMERS и хочет разрешить Адриану (Adrian) выполнение запросов к этой таблице. Для этого она может ввести следующий оператор:

GRANT SELECT ON CUSTOMERS TO ADRIAN;

Теперь Адриан может выполнять запросы к таблице CUSTOMERS. Без других привилегий ему доступен только оператор SELECT.

Когда СУБД получает команду GRANT, она проверяет привилегии пользователя, выдавшего ее, чтобы определить, разрешена ли ему эта команда. Сам Адриан не может ввести такую команду и не может предоставить привилегию SELECT другому пользователю, т.к. таблица принадлежит Диане.

При назначении других привилегий синтаксис остается прежним.

Например, Адриану принадлежит таблица SELESPEOPLE, он разрешает Диане вводить в нее строки:

GRANT INSERT ON SELESPEOPLE TO DIANE;

Теперь Диана может поместить в таблицу нового продавца.

В одном операторе GRANT допускается перечислять пользователей или привилегий через запятую.

Например, Стефан (Stephen) может назначит привилегии SELECT и INSERT для таблицы ORDERS Адриану и Диане:

GRANT SELECT, INSERT ON ORDERS TO ADRIANE, DIANE;

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

Оператор GRANT может иметь аргументы со специальным значением: ALL PRIVILEGES (или просто ALL) и PUBLIC.

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

Например, GRANT ALL ON Customers TO Stephen;

Аргумент PUBLIC действует аналогично ALL, но обозначает пользователей, а не привилегии.

Когда предоставляются привилегии «всем», их автоматически получает каждый пользователь.

Например, чтобы разрешить просмотр таблицы Orders любому пользователю:

GRANT SELECT ON Orders TO PUBLIC;

Но это делать не рекомендуется. Все привилегии, за исключением SELECT и INDEX, позволяют изменять содержимое таблицы, а значит, провоцируется возникновение проблем.

Некоторые системы позволяют назначать привилегии группам.

Группа (GROUP) – это объект базы данных, содержащий список пользователей или список других групп.

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

Итак, привилегии назначены, пользователи изменяют ваши таблицы и в БД возникает беспорядок. Теперь нужно научиться отменять назначенные привилегии.

Для отмены привилегий используется оператор REVOKE. Его синтаксис аналогичен GRANT, но имеет противоположное значение. Чтобы отменить привилегию INSERT для таблицы Orders, представленную Адриану, можно ввести:

REVORE INSERT ON Orders FROM Adrian;

Как и в GRANT, здесь допустимы списки привилегий и пользователей, поэтому можно ввести оператор

REVORE INSERT, DELETE ON Customers FROM Adrian, Stephen;