Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Безопасность систем баз данных.docx
Скачиваний:
8
Добавлен:
01.05.2025
Размер:
46 Кб
Скачать
☆

Методы дискреционного разграничения доступа

При дискреционном разграничении доступа, доступ к объектам осуществляется на основе множества разрешенных отношений доступа в виде троек: субъект доступа – тип доступа – объект доступа. Принято выделять 2 подхода управления доступом:

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

  2. Принудительное – введение единого, централизованного администрирования доступа. Для этого выделяется специальный доверенный субъект, называемый администратором, который определяет привилегии на доступ всем остальным субъектам.

При принудительном контроле доступа больше контроля, но меньше гибкости.

Поэтому на практике в большинстве случаев применяется комбинированный способ управления доступом.

Базовым понятием системы дискреционного разграничения доступа является привилегия.

Привилегия – разрешение на выполнение в системе определенного действия. Сервер базы данных поддерживает для каждого пользователя набор привилегий, который может изменяться.

Все привилегии делятся на 2 класса:

  1. Системные привилегии – дают пользователю право на выполнение какой-либо операции в масштабе базы данных.

  2. Привилегии доступа к объектам – разрешение на выполнение определенной операции над определенным объектом.

Каждый объект базы данных находится в определенной схеме. Под схемой понимается некое пространство имен, в рамках которого находятся объекты, которыми владеет некий пользователь. Имя схемы совпадает с именем пользователя. Следует отметить, что владелец объекта (то есть пользователь, в схеме которого объект находится) обладает полным набором привилегий на доступ к этому объекту.

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

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

Grant <системная привилегия> to <пользователь/роль>

Все системные привилегии сгруппированы по объектам Oracle.

Краткий список системных привилегий для работы с таблицами:

  1. Create any table – создать таблицу в любой схеме

  2. Create table – создать таблицу в своей схеме

  3. Drop any table

  4. Alter any table – изменить структуру таблицы в любой схеме

  5. Select any table

  6. Update any table – изменить данные в таблице в любой схеме

  7. Insert any table – добавить строчку в таблицу в любой схеме

  8. Delete any table – удалить строчку в таблицу в любой схеме

  9. Lock any table

  10. Backup any table

Когда в название привилегии присутствует any, это значит, что действие не ограничено своей схемой.

Пример:

>connect so/sopsw;

>create user u1 identified by u1psw default tablespace users;

>grant create session to u1;

>grant create table to u1;

>create user u2 identified by u2ps;

>grant create session to u2;

>connect u1/u1psw:

>create table tab1 (At1 int, At2 int);

--ok!

>create table u2.tab1 (At1 int, At2 int);

--error!

>connect so/sopsw;

>grant create any table to u1;

>connect u1/u1psw;

> create table u2.tab1 (At1 int, At2 int);

--ok!

>connect u2/u2psw;

>select * from u1.tab1;

--таблица u1.tab1 не существует

>connect so/sopsw;

>grant select any table to u2;

>connect u2/u2psw;

>select * from u1.tab1;

--ok!

Этот пример не верный, так как так никто никогда не делает.

Для предоставления системных привилегий всем пользователям системы используется конструкция public:

>connect so/sopsw;

>grant create session to public;

Данная конструкция используется чаще для отладки системы, так как серьезно нарушает принципы безопасности, в том числе и принцип минимальных привилегий. Для передачи некоторой системной привилегии с правом наследования используется конструкция with admin option. Пользователь, которому системная привилегия передана с таким параметром , может выдавать эту же привилегию другим пользователям (что-то типа зам администратора по данной привилегии).

>grant <привилегия> to <пользователь> with admin option;

Пример:

>connect so/sopsw;

>grant select any table to u1 with admin option;

>connect u2/u2psw;

>select * from u2.tab1;

--error!!!

>connection u1/u1psw;

>grant select any table to u2;

>connect u2/u2psw;

>select * from u2.tab1;

--ok!!!