49657 (Захист інформації в інформаційних системах)

2016-07-30СтудИзба

Описание файла

Документ из архива "Захист інформації в інформаційних системах", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49657"

Текст из документа "49657"

МІНІСТЕРСТВО НАУКИ І ОСВІТИ УКРАЇНИ

Одеський національний політехнічний університет

Кафедра комп’ютерних інтелектуальних систем та мереж


ЗАХИСТ ІНФОРМАЦІЇ В ІНФОРМАЦІЙНИХ СИСТЕМАХ

Курсова робота

АМКР.АМ035м.0909

Зміст

Вступ 3

Основна частина 4

1. Завдання 4

2. Проектування БДІС 4

3. Реалізація елементів безпеки. 5

4. Реалізація елементів гарантованості 10

Заключення 16

Перелік літератури 17

Вступ

Знання критеріїв оцінки інформаційної безпеки здатне допомогти при виборі і комплектуванні апаратно-програмної конфігурації. Крім того, в своїй повсякденній роботі адміністратор безпеки вимушений хоча б до деякої міри повторювати дії сертифікуючих органів, оскільки обслуговувана система швидше за все час від часу зазнає зміни, і потрібно по-перше, оцінювати доцільність модифікацій і їх результату, а, по-друге, відповідним чином коректувати повсякденну практику користування і адміністрування. Якщо знати, на що звертають увагу при сертифікації, можна концентруватися на аналізі критично важливих, аспектів економлячи час і сили і підвищуючи якість захисту.

Основна частина

  1. Завдання

Спроектувати базу даних, що відповідає вимогам: політика безпеки, гарантованість, підзвітність, документація. Для варіанту дев’ять база даних призначена для зберігання інформації з предметної області «Банк», а саме

  • інформація про рахунки по філіях банку (accounts): номер рахунку, назва філії, що обслуговує рахунок, баланс на рахунку;

  • інформація про операції, що виконуються у філії (operations): код, дата, номер кредитного рахунку, номер дебетного рахунку, кошти переводу;

  • інформація про філії (branch): назва, адреса, капітал.

  1. Проектування БДІС

ER-діаграма бази даних зображена на рис. 1. Сутність Філія (Branch) містить багато Операцій(Operation) і Рахунків(Account).

Рис. 1.

Відповідна схема реляційної моделі зображена на рис. 2.

Рис. 2.

Зв'язок «багато-до-одного» у реляційній моделі виконують проміжні таблиці Рахунки(Accounts) і Операції(Operations).

Приведена реляційна модель реалізується наступними виразами мови SQL:

CREATE TABLE Account (num INT PRIMARY KEY, balance INT NOT NULL, CHECK(balance>=0)).

CREATE TABLE Operation (code INT PRIMARY KEY, dat DATE, credit_num INT, debet_num INT, change INT NOT NULL).

CREATE TABLE Branch (num INT PRIMARY KEY, name VARCHAR(50) NOT NULL UNIQUE, adress VARCHAR(50), capital INT NOT NULL, CHECK(capital>=0)).

CREATE TABLE Operations (branch INT REFERENCES Branch, operation INT REFERENCES Operation).

CREATE TABLE Accounts (branch INT REFERENCES Branch, account INT REFERENCES Account).

  1. Реалізація елементів безпеки

Однією з важливих складових безпеки є розподілення прав доступу між користувачами.

Створимо двох користувачів та одну групу. Для кожного користувача також створимо схему.

CREATE ROLE user1;

CREATE ROLE user2;

CREATE ROLE users NOLOGIN;

GRANT users TO user2;

CREATE SCHEMA schema1;

ALTER SCHEMA schema1 OWNER TO user1;

ALTER SCHEMA schema2 OWNER TO user2;

Надамо деякі права новим користувачам.

GRANT INSERT ON Accounts TO user2;

GRANT SELECT ON Accounts TO users;

GRANT UPDATE ON Operations TO user2.

Більш гнучкішим засобом контролю за доступом до таблиць БД є віртуальна таблиця(view). Нижче приведені SQL-запити для створення віртуальних таблиць для вибору щоденних операцій, рахунків одеської філії банку та операцій з переводами коштів до філії:

CREATE VIEW Today_Operations AS

SELECT * FROM Operation WHERE dat = CURRENT_DATE

CREATE VIEW Odessa_Branch_Accounts AS

SELECT * FROM Account WHERE num IN (SELECT account FROM Accounts WHERE branch IN (SELECT num FROM Branch WHERE name = 'Odessa'))

CREATE VIEW Income_Operations AS

SELECT * FROM Operation WHERE change > 0.

У СКБД “Postgres” для віртуальних таблиць можлива заміна запитів UPDATE, INSERT, DELETE до цих таблиць на запити користувача.

CREATE RULE Income_Operations_INSERT AS ON INSERT TO schema1.Income_Operations

DO INSTEAD INSERT INTO Income_Operations

SELECT NEW.code, NEW.dat, NEW.credit_num, NEW.debet_num

WHERE NEW.change >0;

CREATE RULE Income_Operations_UPDATE AS ON UPDATE TO schema1.Income_Operations

DO INSTEAD UPDATE Income_Operations SET

code=NEW.code, dat=NEW.dat, credit_num=NEW.credit_num, debet_num=NEW.debet_num

WHERE NEW.change >0;

CREATE RULE Income_Operations_DELETE AS ON DELETE TO schema1.Income_Operations

DO INSTEAD DELETE FROM Income_Operations WHERE NEW.change >0;

CREATE RULE Today_Operations_INSERT AS ON INSERT TO schema1.Today_Operations

DO INSTEAD INSERT INTO Today_Operations

SELECT NEW.code, NEW.dat, NEW.credit_num, NEW.debet_num

WHERE NEW.dat = CURRENT_DATE;

CREATE RULE Today_Operations_UPDATE AS ON UPDATE TO schema1.Today_Operations

DO INSTEAD UPDATE Income_Operations SET

code=NEW.code, dat=NEW.dat, credit_num=NEW.credit_num, debet_num=NEW.debet_num

WHERE NEW.dat = CURRENT_DATE;

CREATE RULE Today_Operations_DELETE AS ON DELETE TO schema1.Today_Operations

DO INSTEAD DELETE FROM Income_Operations WHERE NEW.dat = CURRENT_DATE;

CREATE RULE Odessa_Branch_Accounts_UPDATE AS ON UPDATE TO schema1.Odessa_Branch_Accounts

DO INSTEAD UPDATE Account SET

balance=NEW.balance WHERE NEW.num IN (SELECT account FROM Accounts WHERE branch IN (SELECT num FROM Branch WHERE name = 'Odessa'))

CREATE RULE Odessa_Branch_Accounts_DELETE AS ON DELETE TO schema1.Odessa_Branch_Accounts

DO INSTEAD DELETE FROM Account WHERE NEW.num IN (SELECT account FROM Accounts WHERE branch IN (SELECT num FROM Branch WHERE name = 'Odessa'))

Для організації більш складної системи розмежування прав та введення рівнів секретності треба створити окремі структури даних з цією інформацією та ввести додаткові правила перевірки відповідності рівня користувача запиту рівню доступу до даної таблиці. Таблиця PERSONS містить список усіх користувачів, таблиця ACCESS_LEVELS – рівні доступу, GROUPS_ACCESS_LEVEL – призначені рівні доступу групам користувачів.

CREATE SEQUENCE PERSON_ID;

CREATE TABLE PERSONS (

PERSON_ID INTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL('PERSON_ID')

NAME VARCHAR(30)

SEX CHAR(1)

BIRTHDAY DATE

CONSTRAINT VALID_SEX CHECK (SEX IN ('M','W')));

CREATE TABLE ACCESS_LEVELS (

ACCESS_LEVEL_ID INTEGER PRIMARY KEY

ACCESS_LEVELVARCHAR UNIQUE);

INSERT INTO ACCESS_LEVELS VALUES (1,'public');

INSERT INTO ACCESS_LEVELS VALUES (2,'private');

INSERT INTO ACCESS_LEVELS VALUES (3,'secret');

INSERT INTO ACCESS_LEVELS VALUES (4,'top secret');

CREATE TABLE GROUPS_ACCESS_LEVEL (

GROUP_NAME VARCHAR PRIMARY KEY

ACCESS_LEVEL INTEGER REFERENCES

ACCESS_LEVELS(ACCESS_LEVEL_ID));

REVOKE ALL ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;

GRANT SELECT ON GROUPS_ACCESS_LEVEL TO GROUP USERS;

INSERT INTO GROUPS_ACCESS_LEVEL VALUES ('users',2);

ALTER TABLE PERSONS

ADD COLUMN SPOT_CONF INTEGER DEFAULT 1

REFERENCES ACCESS_LEVELS(ACCESS_LEVEL_ID);

CREATE OR REPLACE VIEW PERSONS_LIST AS

SELECT PERSON_ID, NAME, SEX, BIRTHDAY

FROM PG_GROUP G, PG_USER U, PERSONS P

GROUPS_ACCESS_LEVEL L

WHERE

USENAME = CURRENT_USER AND

U.USESYSID = ANY (G.GROLIST) AND

L.GROUP_NAME = G.GRONAME AND

P.SPOT_CONF <= L.ACCESS_LEVEL;

REVOKE ALL ON PERSONS FROM GROUP USERS;

GRANT SELECT ON PERSONS_LIST TO GROUP USERS;

INSERT INTO PERSONS_LIST VALUES (1,'Tkachuk','M','23-02-1986');

UPDATE PERSONS SET SPOT_CONF = 4 WHERE PERSON_ID = 1;

INSERT INTO PERSONS_LIST VALUES (1,'Ivanov','M','15-03-1987');

UPDATE PERSONS SET SPOT_CONF = 1 WHERE PERSON_ID = 2;

DROP RULE PERSONS_LIST_INSERT ON PERSONS_LIST;

CREATE RULE PERSONS_LIST_INSERT AS ON INSERT TO PERSONS_LIST DO INSTEAD

INSERT INTO PERSONS

SELECT CASE WHEN NEW.PERSON_ID IS NULL THEN NEXTVAL('PERSON_ID') ELSE NEW.PERSON_ID END

NEW.NAME, NEW.SEX, NEW.BIRTHDAY, L.ACCESS_LEVEL

FROM PG_GROUP G, PG_USER U, GROUPS_ACCESS_LEVEL L

WHERE

U.USENAME = CURRENT_USER AND

U.USESYSID = ANY (G.GROLIST) AND

L.GROUP_NAME = G.GRONAME;

GRANT INSERT ON PERSONS_LIST TO GROUP USERS;

GRANT SELECT,UPDATE ON PERSON_ID TO GROUP USERS;

DROP RULE PERSONS_LIST_UPDATE ON PERSONS_LIST;

CREATE RULE PERSONS_LIST_UPDATE AS ON UPDATE TO PERSONS_LIST

DO INSTEAD

UPDATE PERSONS SET PERSON_ID = NEW.PERSON_ID

NAME = NEW.NAME, SEX = NEW.SEX, BIRTHDAY = NEW.BIRTHDAY

SPOT_CONF = L.ACCESS_LEVEL

FROM PG_GROUP G, PG_USER U, GROUPS_ACCESS_LEVEL L

WHERE

PERSON_ID = OLD.PERSON_ID AND

SPOT_CONF = L.ACCESS_LEVEL AND

U.USENAME = CURRENT_USER AND

U.USESYSID = ANY (G.GROLIST) AND

L.GROUP_NAME = G.GRONAME;

GRANT UPDATE ON PERSONS_LIST TO GROUP USERS.

  1. Реалізація елементів гарантованості

Для створення резервної копії бази даних СКБД Postgres слід виконати команду:

pg_dump my_database –f my_database_15.05.2008.dump

Шифрування дампу виконується за допомогою бібліотеки openssl алгоритмом DES:

openssl enc –e –des-cbc –iv smart_initial_value –k very_good_long_key –in my_database_15.05.2008.dump –out my_database_15.05.2008.dump.arh

Розшифрування архівної копії:

openssl enc –d –des-cbc –iv smart_initial_value –k very_good_long_key –in my_database_15.05.2008.dump.arh –out my_database_15.05.2008.dump

Завантаження інформації з дампу до бази даних:

psql < my_database_15.05.2008.dump

  1. Реалізація елементів Підзвітності

    1. Забезпечення надійності з’єднання

Для генерації сертифікатів центру сертифікації виконаємо наступну команду:

openssl req –config $SSLDIR$/openssl.cnf –new –x509 –nodes –days 1000 –sha1 rsa:1024 –keyout $SSLDIR$/private/ca.key –out $SSLDIR$/ca.crt –subj ‘/C=UA/ST=OdessaRegion/L=Odessa/O=ONPU/OU=CISN/CN=www.ae035.com.ua’

Для генерації сертифікатів клієнтів виконаємо наступну команду:

openssl req –new –sha1 –newkey rsa:1024 –nodes –keyout server.key –out request.pem –subj ‘/O=ONPU/OU=CISN/CN=www.ae035.com.ua’

І команда підписання сертифікату:

openssl ca –config $SSLDIR$/openssl.cnf –policy policy_anything -noemailDN -out $SSLDIR/requests/signed.pem -infiles $SSLDIR/requests/request.pem

    1. Забезпечення журналювання змін

Для забезпечення журналювання змін інформації в таблицях для кожної з них створюється таблиця-журнал та правила для операцій зміни:

CREATE TABLE Account_logs (

USERNAME VARCHAR DEFAULT CURRENT_USER,

OPER_TYPECHAR(1) CHECK (OPER_TYPE IN ('I','U','D')),

OPER_TIMETIMESTAMP DEFAULT NOW(),

num_new INTEGER,

num_old INTEGER,

balance_new INTEGER,

balance_old INTEGER);

CREATE TABLE Operation_logs (

USERNAME VARCHAR DEFAULT CURRENT_USER,

OPER_TYPECHAR(1) CHECK (OPER_TYPE IN ('I','U','D')),

OPER_TIMETIMESTAMP DEFAULT NOW(),

code_new INTEGER,

code_old INTEGER,

dat_new DATE,

dat_old DATE

credit_num_new INTEGER,

credit_num _old INTEGER

debet_num _new INTEGER,

debet_num _old INTEGER

change_new INTEGER,

change _old INTEGER);

CREATE TABLE Branch_logs (

USERNAME VARCHAR DEFAULT CURRENT_USER,

OPER_TYPECHAR(1) CHECK (OPER_TYPE IN ('I','U','D')),

OPER_TIMETIMESTAMP DEFAULT NOW(),

num_new INTEGER,

num_old INTEGER,

name_new VARCHAR(50),

name_old VARCHAR(50),

address_new VARCHAR(50),

address_old VARCHAR(50),

capital_new INTEGER,

capital_old INTEGER);

DROP RULE Account_logs _INSERT ON Account;

CREATE RULE Account_logs _INSERT AS ON INSERT TO Account

DO

INSERT INTO Account_logs

(OPER_TYPE, num_new , balance_new )

VALUES ('I', NEW.num, NEW.balance);

DROP RULE Account_logs _UPDATE ON Account;

CREATE RULE Account_logs _ UPDATE AS ON UPDATE TO Account

DO

INSERT INTO Account_logs

(OPER_TYPE, num_new , balance_new, num_old, balance_old)

VALUES ('U', NEW.num, NEW.balance, OLD.num, OLD.balance);

DROP RULE Account_logs _DELETE ON Account;

CREATE RULE Account_logs _DELETE AS ON DELETE TO Account

DO

INSERT INTO Account_logs

(OPER_TYPE, num_old , balance _old,)

VALUES ('D', OLD.num, OLD.balance);

DROP RULE Operation_logs _INSERT ON Operation;

CREATE RULE Operation_logs _INSERT AS ON INSERT TO Operation

DO

INSERT INTO Operation_logs

(OPER_TYPE, code_new , dat_new, credit_num_new, debet_num_new, change_new )

VALUES ('I', NEW.code, NEW.dat, NEW.credit-num, NEW.debet_num, NEW.change);

DROP RULE Operation_logs _UPDATE ON Operation;

CREATE RULE Account_logs _ UPDATE AS ON UPDATE TO Operation

DO

INSERT INTO Operation_logs

(OPER_TYPE, code_new , dat_new, credit_num_new, debet_num_new, change_new,

code_old, dat_old, credit_num_old, debet_num_old, change_old)

VALUES ('U', NEW.code, NEW.dat, NEW.credit_num, NEW.debet_num, NEW.change,

OLD.code, OLD.dat, OLD.credit_num, OLD.debet_num, OLD.change);

DROP RULE Operation_logs _DELETE ON Operation;

CREATE RULE Operation_logs _DELETE AS ON DELETE TO Operation

DO

INSERT INTO Operation_logs

(OPER_TYPE, code_old , dat_old, credit_num_old, debet_num_old, change_old )

VALUES ('D', OLD.code, OLD.dat, OLD.credit_num, OLD. debet_num, OLD.change);

DROP RULE Branch_logs _INSERT ON Branch;

CREATE RULE Account_logs _INSERT AS ON INSERT TO Branch

DO

INSERT INTO Branch_logs

(OPER_TYPE, num_new , name_new, address_new, capital_new )

VALUES ('I', NEW.num, NEW.name, NEW. address, NEW. capital);

DROP RULE Branch_logs _UPDATE ON Branch;

CREATE RULE Account_logs _ UPDATE AS ON UPDATE TO Branch

DO

INSERT INTO Branch_logs

(OPER_TYPE, num_new , name_new, address_new, capital_new,

num_old , name_ old , address_ old , capital_ old )

VALUES ('U', NEW.num, NEW. name, NEW. address, NEW. capital,

OLD.num, OLD. name, OLD. address, OLD. capital);

DROP RULE Branch_logs _DELETE ON Branch;

CREATE RULE Branch_logs _DELETE AS ON DELETE TO Branch

DO

INSERT INTO Branch_logs

(OPER_TYPE, num_old , name_old, address_old, capital_old )

VALUES ('D', OLD.num, OLD.name, OLD.address, OLD.capital);

Заключення

В даній роботі проведено проектування та реалізація БД у СКБД Postgres. Реалізовані наступні елементи безпеки ІС:

  • цілісність даних на рівні таблиць, перевірка їх коректності;

  • облік користувачів, груп користувачів та їх прав, рівні секретності, контроль доступу до таблиць;

  • організація захищеного з’єднання з СКБД за допомогою протоколу SSL;

  • організація журналювання змін таблиць засобами самої СКБД.

Перелік літератури

  1. Грабер М. SQL. – М: Лори, 2003. – 642 с.

  2. Дейт К. Дж. Введение в системы баз данных. – К: Диалектика, 1998. – 784 с.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее