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

Реализация контроля доступа с помощью хранимых процедур

Хранимая процедура или функция это множество объединенных общим замыслом предложений языка 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

Системные привилегии, определяющие права по работе с пользователями

  1. Create user – разрешает создавать нового пользователя и позволяет определять квоту в табличном пространстве, задавать табличное пространство по умолчанию и временное табличное пространство, а так же определять профиль пользователя.

  2. Drop user – разрешает удалять любых пользователей базы данных

  3. Alter user – разрешает изменять характеристики пользователя, в том числе пароль или метод аутентификации.

  4. Become user – разрешает пользователю регистрироваться в системе, как другой пользователь

Наличие привилегии создания пользователя никак не связано с возможностью предоставления созданному пользователю каких-либо прав.