- •Введение в безопасность баз данных
- •Аутентификация пользователей в системе Oracle
- •Внешняя аутентификация пользователей
- •Аутентификация на основе инфраструктуры сертификатов
- •Методы дискреционного разграничения доступа
- •Предоставление системных привилегий
- •Методы дискреционного разграничения доступа
- •Предоставление системных привилегий
- •Предоставление привилегий на доступ к объекту
- •Отмена привилегий
- •Обеспечение разграничения доступа к данным с помощью представлений
- •Реализация контроля доступа с помощью хранимых процедур
- •Обеспечение защиты данных с помощью триггеров
- •Системные привилегии, определяющие права по работе с пользователями
- •Разграничение доступа на основе ролей
- •Управление допустимостью использования ролей
- •Реализация мандатной модели субд Oracle
Реализация контроля доступа с помощью хранимых процедур
Хранимая процедура или функция это множество объединенных общим замыслом предложений языка PL/SQl, которые хранятся на сервере в откомпилированной форме и исполняются по запросу клиентского приложения. Процедуры и функции создаются для выполнения некоторой конкретной работы пользователя. При этом пользователю достаточно предоставить привилегию на исполнение процедуры, созданной для поддержки его деятельности. Важным фактом является то, что пользователю не требуется предоставление прав доступа к данным, обрабатываемым процедурой. Наличие такого механизма позволяет исключить обработку данных пользователем, не предусмотренным разработчиком системы или администратором безопасности. Для работы с процедурами в Oracle предусмотрены системные привилегии create any procedure, drop any procedure, alter any procedure, execute any procedure, а так же объектная привилегия execute.
Пример
>create or replace procedure
getdate AS
cursor cursel is
select * from Tab1;
>currec Tab1 % ROWTYPE;
>Begin
For currec in cursel Loop
DBMS_OUTPUT.PUT_LINE
(TO_CHAR(currec.AT1)||’ ‘ ||currec.AT2);
>End Loop;
>End getdata
>grant execute on getdata to u2;
>connect u2/u2psw
>exec getdata;
user – имя текущего подключенного доступа, с помощью нее можно ограничивать доступ к базе данных.
Есть еще системная привилегия execute any procedure – её никому давать нельзя.
Обеспечение защиты данных с помощью триггеров
Триггер – совокупность предложений языка PL/SQL , автоматически запускаемая при регистрации сервером определенных событий. Триггер выполняется системой автоматически до или после выполнения таких операций, как insert update delete в некоторой таблице. Особенность триггеров является реализуемая возможность выполнить необходимые проверки полномочий перед выполнением операций над таблицами. При этом на одном множестве таблиц может быть определено несколько триггеров.
Пример
>connect so/sopsw;
>create table AuthTab (At1 varchar (30));
>insert into AuthTab values (‘u1’);
>create or replace function FuncAuth return Numbers AS
Var1 number;
>begin
Select count (*) into var1 from AuthTab
Where At1 in (user);
>return var1;
>end;
>Create table Audit_table(At1 varchar (10), At2 date);
>create table tab1 (At1 varchar (10));
>create public synonym Tab1 for so.Tab1;
>grant insert on Tab1 to public;
>create or replace triggertrig-bfr
BEFORE Insert onTab1
FOR EACH ROW
Begin
If FuncAuth = 0
Then
RAISE_APPLICATION.ERROR
(-20011, ‘НСД!’);
End_if;
End;
>create or replace trigger trig_aft
AFTER Insert or Update on Tab1:
FOR EACH ROW
Begin
insert into Audit_table
Values
(:new.At1, SYSDATE);
END;
>connect u1/u1psw;
>insert into Tab1 values (‘Запись u1’);
>connect u2/u2psw;
>insert into Tab1 values (‘Запись u2’);
Error -20011
>connect so/sopsw;
>select * from Audit_Table;
At1 At2
Запись u1 08.10.2013
Системные привилегии, определяющие права по работе с пользователями
Create user – разрешает создавать нового пользователя и позволяет определять квоту в табличном пространстве, задавать табличное пространство по умолчанию и временное табличное пространство, а так же определять профиль пользователя.
Drop user – разрешает удалять любых пользователей базы данных
Alter user – разрешает изменять характеристики пользователя, в том числе пароль или метод аутентификации.
Become user – разрешает пользователю регистрироваться в системе, как другой пользователь
Наличие привилегии создания пользователя никак не связано с возможностью предоставления созданному пользователю каких-либо прав.
