Курсовая

Курсовая на тему Захист інформації в інформаційних системах

Работа добавлена на сайт bukvasha.net: 2014-11-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024


МІНІСТЕРСТВО НАУКИ І ОСВІТИ УКРАЇНИ
Одеський національний політехнічний університет
Кафедра комп’ютерних інтелектуальних систем та мереж

 

ЗАХИСТ ІНФОРМАЦІЇ В ІНФОРМАЦІЙНИХ СИСТЕМАХ
Курсова робота
АМКР.АМ035м.0909

Зміст
  "1-2" Вступ................................................................................................................ 3
Основна частина.............................................................................................. 4
1.       Завдання................................................................................................. 4
2.       Проектування БДІС............................................................................... 4
3.       Реалізація елементів безпеки................................................................. 5
4.       Реалізація елементів гарантованості................................................... 10
Заключення.................................................................................................... 16
Перелік літератури........................................................................................ 17

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

Основна частина
1.                 Завдання
Спроектувати базу даних, що відповідає вимогам: політика безпеки, гарантованість, підзвітність, документація. Для варіанту дев’ять база даних призначена для зберігання інформації з предметної області «Банк», а саме
-                      інформація про рахунки по філіях банку (accounts): номер рахунку, назва філії, що обслуговує рахунок, баланс на рахунку;
-                      інформація про операції, що виконуються у філії (operations): код, дата, номер кредитного рахунку, номер дебетного рахунку, кошти переводу;
-                      інформація про філії (branch): назва, адреса, капітал.
2.                 Проектування БДІС
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).
3.                 Реалізація елементів безпеки
Однією з важливих складових безпеки є розподілення прав доступу між користувачами.
Створимо двох користувачів та одну групу. Для кожного користувача також створимо схему.
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.
4.                 Реалізація елементів гарантованості
Для створення резервної копії бази даних СКБД 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
5.                 Реалізація елементів Підзвітності
a.                  Забезпечення надійності з’єднання
Для генерації сертифікатів центру сертифікації виконаємо наступну команду:
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
b.                 Забезпечення журналювання змін
Для забезпечення журналювання змін інформації в таблицях для кожної з них створюється таблиця-журнал та правила для операцій зміни:
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 с.

1. Реферат на тему Курение и его пагубное влияние
2. Реферат на тему Death Penalty Essay Research Paper Capital Punishment
3. Курсовая Планирование маркетинга - основа планирования деятельности предприятия
4. Реферат Закаливание детей дошкольного возраста
5. Реферат Способи спостереження Агрегатні індекси які застосовуються правовою статистикою
6. Реферат Анализ деятельности цеха готовой продукции
7. Реферат Роздрібна реклама
8. Реферат на тему AntiAffirmative Action Essay Research Paper AntiAffirmative ActionPatrick
9. Курсовая на тему Социальное страхование как форма организации социальной защиты нас
10. Реферат на тему Изучение истории Новосибирской области итоги и перспективы