Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

13) Drop any table

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

15) Select any table

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

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

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

19) Lock any table

20) 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!!!

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

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

Общий синтаксис оператора на выдачу объектных привилегий имеют следующий синтаксис:

>grant {<привилегия на доступ к объекту или все привилегии (ALL PRIVILEGIES)>} [{<имя столбца>,…}] on [<имя схемы> ] <имя объекта> to{ <имя пользователя, или, если всем - PUBLIC>} [with grant option]

Параметр привилегии на доступ к объекту, то есть наименование привилегии, обычно совпадает с наименованием SQL-оператора, который осуществляет с данным объектом действие.

Пример:

>connect u2/u2psw;

>create table tab1 (At1 Number);

>grant select, insert, update on tab1 to u1;

>connect u1/u1psw;

>insert into tab1 values (123);

--ok!

>update tab1 set At1 = 345 where At1 = 123;

--ok!

>delete from tab1 where At1 = 876;

--error!

Синтаксис языка предоставляет возможность избирательного доступа к отдельным столбцам таблицы при ее обновлении.

>create Table tab1 (At1 number, At2 number);

>grant select on tab1 to u1;

>grant insert, update (At1) on tab1 to u1;

>connect u1/u1psw

>insert into u2.tab1 values (123, 123)

>update u2.tab1 set At1 = 345;

>select*from u2.tab1;

At1 At2

345 123

>update u2.tab1 set At2 = 678;

--error!

Привилегия на выборку не может быть избирательной!!!

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

Чтобы отменить системные или объектные привилегии, предоставленные пользователям или ролям, используется команда revoke.

Revoke<системная привилегия> from { <пользователь>|<роль>|PUBLIC}

Revoke [{<объектная привилегия>, …}| ALL PRIVILEGIES ] on <объект> from {<пользователь>|<роль>|PUBLIC}

Использование ключевого слова PUBLIC приводит к отмене привилегии для всех пользователей, при этом отмена привилегий, предоставленных пользователю явно или через роль не происходит. Отменяются только те привилегии, которые выдавались Public-у.

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

Отмена привилегий для пользователя или роли наступает немедленно.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...