рефератырефератырефератырефератырефератырефератырефератырефераты

рефераты, скачать реферат, современные рефераты, реферат на тему, рефераты бесплатно, банк рефератов, реферат культура, виды рефератов, бесплатные рефераты, экономический реферат

"САМЫЙ БОЛЬШОЙ БАНК РЕФЕРАТОВ"

Портал Рефератов

рефераты
рефераты
рефераты

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

2

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

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

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

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

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

АМКР.АМ035м.0909

Зміст

  • Вступ 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 с.

рефераты
РЕФЕРАТЫ © 2010