Администрирование баз данных и приложений. Инфологическая модель базы данных. Пользователи базы данных

Страницы работы

Фрагмент текста работы

Санкт-Петербургский государственный университет информационных технологий, механики и оптики

Администрирование баз данных и приложений

Задание «Разграничению доступа к данным».

                           Выполнил: гр. 5101

                                                                                                                                 

     

Задание:

Создать приложение, иллюстрирующее возможности СУБД Oracle по разграничению доступа к данным. В приложении должны быть задействованы:

1). несколько пользователей базы данных (по количеству работающих над проектом)

2). синонимы,

3). привилегии,

4). роли,

5). возможности создания ролей, защищенных паролем,

6). возможности по включению/выключению ролей из приложения.

В работе рекомендуется использовать проект базы данных и приложения, созданные на предыдущих курсах по дисциплинам, посвященным базам данных.

Инфологическая модель базы данных:

Пользователи базы данных:

- s133873 (владелец объектов);

- s134268.

Создание публичных синонимов:

CREATE PUBLIC SYNONYM name_zimmer FOR s133873.name_zimmer;

CREATE PUBLIC SYNONYM pipl FOR s133873.pipl;

CREATE PUBLIC SYNONYM family FOR s133873.family;

CREATE PUBLIC SYNONYM name_mes FOR s133873.name_mes;

CREATE PUBLIC SYNONYM zanatia FOR s133873.zanatia;

CREATE PUBLIC SYNONYM mebel FOR s133873.mebel;

CREATE PUBLIC SYNONYM name_mebel FOR s133873.name_mebel;

CREATE PUBLIC SYNONYM zimmer FOR s133873.zimmer;

CREATE PUBLIC SYNONYM zimmer_view FOR s133873.zimmer_view;

CREATE PUBLIC SYNONYM pipl_view FOR s133873.pipl_view;

CREATE PUBLIC SYNONYM zimmer_for_add_pipl_view FOR s133873.zimmer_for_add_pipl_view;

CREATE PUBLIC SYNONYM family_for_add_pipl_view FOR s133873.family_for_add_pipl_view;

CREATE PUBLIC SYNONYM zanatia_for_add_pipl_view FOR s133873.zanatia_for_add_pipl_view;

Создание роли, позволяющей выполнять предложения SELECT:

drop role bara_select;

create role bara_select IDENTIFIED BY select12345;

grant select on name_zimmer to bara_select;

grant select on pipl to bara_select;

grant select on family to bara_select;

grant select on name_mes to bara_select;

grant select on zanatia to bara_select;

grant select on mebel to bara_select;

grant select on name_mebel to bara_select;

grant select on zimmer to bara_select;

grant select on zimmer_view to bara_select;

grant select on pipl_view to bara_select;

grant select on zimmer_for_add_pipl_view to bara_select;

grant select on family_for_add_pipl_view to bara_select;

grant select on zanatia_for_add_pipl_view to bara_select;

grant bara_select to s134268;

Создание роли «Администратор»:

drop role bara_dba;

create role bara_dba IDENTIFIED BY dba12345;

grant update, insert, delete on name_zimmer to bara_dba;

grant update, insert, delete on pipl to bara_dba;

grant update, insert, delete on family to bara_dba;

grant update, insert, delete on name_mes to bara_dba;

grant update, insert, delete on zanatia to bara_dba;

grant update, insert, delete on mebel to bara_dba;

grant update, insert, delete on name_mebel to bara_dba;

grant update, insert, delete on zimmer to bara_dba;

grant update, insert, delete on zimmer_view to bara_dba;

grant update, insert, delete on pipl_view to bara_dba;

grant update, insert, delete on zimmer_for_add_pipl_view to bara_dba;

grant update, insert, delete on family_for_add_pipl_view to bara_dba;

grant update, insert, delete on zanatia_for_add_pipl_view to bara_dba;

grant bara_select to bara_dba;

grant bara_dba to s134268;

Триггера уровня форм приложения для базы данных.

Триггер приложения базы данных, срабатывающий в процессе авторизации пользователя (с привилегиями «User»):

declare

xxx number;

begin

:Global.kolerr := (:Global.kolerr + 1);

if :Global.kolerr >= 3 then

Set_Alert_Property('warn',ALERT_MESSAGE_TEXT,'Basta!');

xxx := Show_Alert('warn');

exit_form;

end if;

                 dbms_session.set_role('bara_select IDENTIFIED BY '||:b_passwd.passwd);

:global.cur_role:= 'select';

:global.login := 'yes';

hide_view('k_passwd');

show_view('welcome');

go_block('welcome');

Read_Image_File('/home/s133873/kursovik/1.bmp','bmp','welcome.image1');

end;

Триггер приложения базы данных, срабатывающий при попытке произвести действие, доступное только с правами роли «Администратор»:

DECLARE

AL_Button NUMBER;

bl_id block;

test number;

test1 number;

BEGIN

IF :pipl_view.rem = 'Remove' then

IF :global.cur_role = 'dba' then

Set_Alert_Property('tochno',ALERT_MESSAGE_TEXT,'Tochno udalyaem?');

AL_Button := Show_Alert('tochno');

IF  AL_Button = ALERT_BUTTON1  THEN

select f_id into test1 from pipl where pipl.p_id = :pipl_view.p_id;

select count(p_id) into test from pipl, family where family.f_id = pipl.f_id                      and pipl.f_id = test1;

if test < 2 then

delete from family where f_id in (select family.f_id from                                                               family, pipl where family.f_id = pipl.f_id and pipl.p_id =                                                                      :pipl_view.p_id);

end if;

DELETE  FROM  pipl WHERE  p_id = :pipl_view.p_id;

bl_id := find_block('pipl_view');

set_block_property(bl_id,default_where,'');

execute_query;

Commit_Form;

end if;

end if;

                  IF :global.cur_role = 'select' then

show_view('k_passwd');

go_block('b_passwd');

                 END IF;

END IF;

END;

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

Похожие материалы

Информация о работе