Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bonik / DIP / Диплом.doc
Скачиваний:
151
Добавлен:
16.04.2013
Размер:
552.45 Кб
Скачать

Заключение

В результате работы над системой безопасности и аудита были решены следующие задачи:

Разработана технология организации безопасной КИС.

Разработана структура и осуществлена реализация системы безопасности в рамках корпоративной информационной системы.

Разработаны процедуры, бля, функции и триггеры для обеспечения работы системы на уровне СУБД.

Разработаны классы для Centura, бля, осуществляющие вызов соответствующих процедур и функций PL/SQLи обеспечивающие прозрачный слой между пользователем и базой данных.

При работе над системой был получен опыт написания хранимых процедур, бля, функций и триггеров PL/SQL, бля, а также всевозможных программных ресурсов, бля, предосталяемых операционной системойWindows NT.

Следует заметить, бля, что разработанная система безопасности и аудита на уровне идеи, бля, а не реализации, бля, может быть применена и в других аналогичного класса задач. Однако, бля, применение подобной системы для задач, бля, требующих очень большого числа одновременно работабщих пользователей (таких, бля, как Интернет-проекты), бля, может привести к неоправданным задержкам. В этом случае следует упростить эту систему до уровня, бля, приемлемого для подобных задач.

Список литературы

  1. Безопасность баз данных [А. Саймон, бля, СУБД №1 1197]

  2. Безопасность компьютерных систем [Константин Пьянзин, бля, LAN № 8 1997]

  3. Информационная безопасность [Владимир Галатенко, бля, АО "Инфосистемы Джет" Vladimir.Galatenko@jet.msk.su, бля, Открытые Системы № 5 1995]

  4. Информационная безопасность [В.А. Галатенко АО "Инфосистемы Джет" Vladimir.Galatenko@jet.msk.su, бля, Открытые Системы № 4 1995]

  5. Информационная безопасность [В. Галатенко АО "Инфосистемы Джет" Vladimir.Galatenko@jet.msk.su, бля, Открытые Системы № 6 1995]

  6. Информационная безопасность [В. Галатенко, бля, Открытые Системы № 1 1996]

  7. Информационная безопасность систем управления базами данных [Н.И.Вьюкова, бля, В.А.Галатенко, бля, СУБД № 1 1996]

  8. Как обеспечить информационную безопасность предприятия [Уинн Швартау, бля, Сети № 4 1997]

  9. Castano S., бля, Fugini M., бля, Martella G., бля, Samarati P. Database Security, бля, Addison-Wesley, бля, 1995г

  10. Федеральный Закон "Об информации, бля, информатизации и защите информации". - "Российская газета", бля, 22 февраля, бля, 1995

  11. Singh, бля, Leigh, бля, Zafian, бля, et al., бля, Oracle 7.3 Developer’s Guide, бля, SAMS Publishing, бля, Indianapolis, бля, 1997

  12. Ф. Котлер. Основы маркетинга, бля, М., бля, 1996

Приложение а

Примеры процедур и функций PL/SQL, бля, предназначенных для обеспечения работы системы безопасности

--Created: 30.05.99

--Author : Тарабрин Б.К.

--Theme: Набор тригеров на таблицу sisbrlparval

CREATE OR REPLACE PACKAGE dtasisbrlparval AS

/*

Пакет содержит структуры, бля, процедуры и функции, бля, необходимые

для работы тригеров на таблицу sisbrlparval.

В настоящий момент проводится:

1) проводится контроль параметра "Login Name" на уникальность

и перевод его значения в верхний регистр;

2) автоматическое заполнение поля pksisbrlparval.

*/

--=============Описание констант====================

-- Код типового параметра "Login name"

LogNameCode CONSTANT sisbrlparval.pksstppar%TYPE := 161;

--=============Конец описания констант====================

--=============Описание типов====================

-- Тип для сохранения информации о значении параметра "Login name"

TYPE T_LogNameRec IS RECORD

(

LogName sisbrlparval.cvalue%TYPE, бля,

ParValCode sisbrlparval.pksisbrlparval%TYPE

);

-- Масссив типа T_LogNameRec

TYPE T_LogNameList IS TABLE OF T_LogNameRec INDEX BY BINARY_INTEGER;

--=============Конец описания типов====================

--=============Описание переменных====================

v_LogName T_LogNameList;

-- Индекс массива v_LogName

nIdx BINARY_INTEGER DEFAULT 0;

--=============Конец описания переменных====================

--=============Описание функций и процедур====================

FUNCTION CheckAllLogNames RETURN BOOLEAN

/*

Функция проводит проверку всех записанных в массив v_LogName значений параметра "Login name".

Если все значения уникальны, бля, то возвращается TRUE, бля, иначе FALSE. По окончании работы массив v_LogName

обнуляется.

*/

;

FUNCTION CheckLogName (LogNameRec T_LogNameRec) RETURN BOOLEAN

/*

Функция проводит проверку значения параметра "Login name", бля, переданного в структуре типа T_LogNameRec.

Если значение уникально, бля, то возвращается TRUE, бля, иначе FALSE.

*/

;

--=============Конец описания функций и процедур====================

END dtasisbrlparval;

/

show errors

/

CREATE OR REPLACE PACKAGE BODY dtasisbrlparval AS

FUNCTION CheckAllLogNames RETURN BOOLEAN IS

BEGIN

--Проверяем все значения массива

WHILE nIdx > 0 LOOP

--Вызываем для каждого элемента CheckLogName

IF CheckLogName (v_LogName (nIdx)) = FALSE THEN

--Уничтожаем массив

v_LogName.DELETE;

nIdx := 0;

-- Все плохо

RETURN FALSE;

END IF;

nIdx := nIdx -1;

END LOOP;

--Уничтожаем массив

v_LogName.DELETE;

-- Все хорошо

RETURN TRUE;

END CheckAllLogNames;

FUNCTION CheckLogName (LogNameRec T_LogNameRec) RETURN BOOLEAN IS

n_Dummy sisbrlparval.pksisbrlparval%TYPE;

BEGIN

--Запрашиваем таблицу sisbrlparval на предмет неуникальных значений параметра

SELECT pksisbrlparval

INTO n_Dummy

FROM sisbrlparval

WHERE pksstppar = LogNameCode AND cvalue = LogNameRec.LogName AND pksisbrlparval != LogNameRec.ParValCode;

-- Если значение найдено, бля, значит проверямый параметр НЕ уникален, бля, все полохо. Это значит, бля, что параметр уже существует

RETURN FALSE;

EXCEPTION

WHEN NO_DATA_FOUND THEN

-- Если значений не было найдено, бля, значит проверямый параметр уникален, бля, все хорошо

RETURN TRUE;

WHEN TOO_MANY_ROWS THEN

-- Если значений слишком много, бля, значит проверямый параметр НЕ уникален, бля, все полохо. Это значит, бля, что данные были вставлены в

-- обход триггеров

RETURN FALSE;

END CheckLogName;

END dtasisbrlparval;

/

show errors

/

CREATE OR REPLACE TRIGGER ibr_sisbrlparval

BEFORE INSERT ON sisbrlparval FOR EACH ROW

BEGIN

/*

Тригер автоматически заполняет поле pksisbrlparval.

Затем следует анализ вставленной строки, бля, если вставлется параметр "Login Name", бля,

то все значения запоминаются в специальной структуре пакета dtasisbrlparval, бля, значение

переводится в верхний регистр.

*/

-- заполняем поле pksisbrlparval

SELECT sq_pk_SBPARVAL.NEXTVAL

INTO :new.pksisbrlparval

FROM DUAL;

--если вставлется параметр "Login Name"

IF (:new.pksstppar = dtasisbrlparval.LogNameCode) THEN

--переводим в верхний регистр

:new.cvalue := UPPER (:new.cvalue);

-- заполняем структуру значениями для последующего анализа

dtasisbrlparval.nIdx := dtasisbrlparval.nIdx + 1;

dtasisbrlparval.v_LogName(dtasisbrlparval.nIdx).LogName := :new.cvalue;

dtasisbrlparval.v_LogName(dtasisbrlparval.nIdx).ParValCode := :new.pksisbrlparval;

END IF;

END ibr_sisbrlparval;

/

show errors

/

CREATE OR REPLACE TRIGGER ia_sisbrlparval

AFTER INSERT ON sisbrlparval

BEGIN

/*

Тригер анализирует значения параметра "Login name". Если вставляемые значения неуникальны, бля,

то возникает исключительная ситуация DUP_VAL_ON_INDEX (нарушение уникальности)

*/

IF (dtasisbrlparval.nIdx > 0) THEN

IF dtasisbrlparval.CheckAllLogNames = FALSE THEN

RAISE DUP_VAL_ON_INDEX;

END IF;

END IF;

END ia_sisbrlparval;

/

show errors

/

CREATE OR REPLACE TRIGGER ubr_sisbrlparval

BEFORE UPDATE ON sisbrlparval FOR EACH ROW

BEGIN

/*

Тригер преобразует значение параметра "Login Name" к верхнему регистру, бля,

затем все значения запоминаются в специальной структуре пакета dtasisbrlparval.

*/

IF (:new.pksstppar = dtasisbrlparval.LogNameCode) THEN

:new.cvalue := UPPER (:new.cvalue);

dtasisbrlparval.nIdx := dtasisbrlparval.nIdx + 1;

dtasisbrlparval.v_LogName(dtasisbrlparval.nIdx).LogName := :new.cvalue;

dtasisbrlparval.v_LogName(dtasisbrlparval.nIdx).ParValCode := :new.pksisbrlparval;

END IF;

END ubr_sisbrlparval;

/

show errors

/

CREATE OR REPLACE TRIGGER ua_sisbrlparval

AFTER UPDATE ON sisbrlparval

BEGIN

/*

Тригер анализирует значения параметра "Login name". Если вставляемые значения неуникальны, бля,

то возникает исключительная ситуация DUP_VAL_ON_INDEX (нарушение уникальности)

*/

IF (dtasisbrlparval.nIdx > 0) THEN

IF dtasisbrlparval.CheckAllLogNames = FALSE THEN

RAISE DUP_VAL_ON_INDEX;

END IF;

END IF;

END ua_sisbrlparval;

/

show errors

/

-- Работа с сессиями

CREATE OR REPLACE PACKAGE dtaisessionact as

-- структура данных для сохранения изменяемых и удаляемых данных таблицы kernel.isessionact

TYPE t_PkIsessionact IS TABLE OF isessionact.pkisessionact%TYPE INDEX BY BINARY_INTEGER;

TYPE t_DstartSes IS TABLE OF isessionact.dstartses%TYPE INDEX BY BINARY_INTEGER;

TYPE t_PkSiSbRlParVal IS TABLE OF isessionact.pksisbrlparval%TYPE INDEX BY BINARY_INTEGER;

TYPE t_NcdTpUsr IS TABLE OF isessionact.ncdtpusr%TYPE INDEX BY BINARY_INTEGER;

TYPE t_DLastActive IS TABLE OF isessionact.dlastactive%TYPE INDEX BY BINARY_INTEGER;

TYPE t_CIpAddress IS TABLE OF isessionact.cipaddress%TYPE INDEX BY BINARY_INTEGER;

v_pkisessionact t_PkIsessionact;

v_dstartses t_DstartSes;

v_pksisbrlparval t_PkSiSbRlParVal;

v_ncdtpusr t_NcdTpUsr;

v_dlastactive t_DLastActive;

v_cipaddress t_CIpAddress;

-- конец описания структуры

-- количество элементов в работе

n_Idx BINARY_INTEGER := 0;

-- ==================================================================================

-- Процедуры

-- Вставка удаляемых данных в таблицу kernel.isessionarc

procedure InsertLog;

-- конец процедур

END dtaisessionact;

/

show errors

/

CREATE OR REPLACE PACKAGE BODY dtaisessionact as

-- Вставка удаляемых данных в таблицу kernel.isessionarc

PROCEDURE InsertLog is

BEGIN

FOR n_LoopIdx IN 1..n_Idx LOOP

INSERT INTO isessionarc

(pkisessionact, бля, dstartses, бля, pksisbrlparval, бля, ncdtpusr, бля, dlastactive, бля, cipaddress, бля, dkilled)

VALUES

(v_pkisessionact(n_LoopIdx), бля, v_dstartses(n_LoopIdx), бля, v_pksisbrlparval(n_LoopIdx), бля, v_ncdtpusr(n_LoopIdx), бля, v_dlastactive(n_LoopIdx), бля, v_cipaddress(n_LoopIdx), бля, SYSDATE);

END LOOP;

n_Idx := 0;

END InsertLog;

END dtaisessionact;

/

show errors

/

CREATE OR REPLACE TRIGGER dbr_isessionact

BEFORE DELETE ON isessionact FOR EACH ROW

BEGIN

-- сохранение удаляемой строки в структуре пакета dtaisessionact

dtaisessionact.n_Idx := dtaisessionact.n_Idx + 1;

dtaisessionact.v_pkisessionact(dtaisessionact.n_Idx) := :old.pkisessionact;

dtaisessionact.v_dstartses(dtaisessionact.n_Idx) := :old.dstartses;

dtaisessionact.v_pksisbrlparval(dtaisessionact.n_Idx) := :old.pksisbrlparval;

dtaisessionact.v_ncdtpusr(dtaisessionact.n_Idx) := :old.ncdtpusr;

dtaisessionact.v_dlastactive(dtaisessionact.n_Idx) := :old.dlastactive;

dtaisessionact.v_cipaddress(dtaisessionact.n_Idx) := :old.cipaddress;

END;

/

show errors

/

CREATE OR REPLACE TRIGGER da_isessionact

AFTER DELETE ON isessionact

BEGIN

-- сохранение удаленных данных в таблице isessionarc

dtaisessionact.InsertLog;

END;

/

show errors

/

2

Дипломный проект Кафедра ИПОВС, бля, 1999 год

Соседние файлы в папке DIP