Реферат по предмету "Информатика, программирование"


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

МІНІСТЕРСТВОНАУКИ І ОСВІТИ УКРАЇНИ
Одеськийнаціональний політехнічний університет
Кафедракомп’ютерних інтелектуальних систем та мереж
ЗАХИСТ ІНФОРМАЦІЇ В ІНФОРМАЦІЙНИХСИСТЕМАХ
Курсова робота
АМКР.АМ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:
CREATETABLE Account (num INT PRIMARY KEY, balance INT NOT NULL, CHECK(balance>=0)).
CREATETABLE Operation (code INT PRIMARY KEY, dat DATE, credit_num INT, debet_num INT,change INT NOT NULL).
CREATETABLE Branch (num INT PRIMARY KEY, name VARCHAR(50) NOT NULL UNIQUE, adress VARCHAR(50),capital INT NOT NULL, CHECK(capital>=0)).
CREATETABLE Operations (branch INT REFERENCES Branch, operation INT REFERENCESOperation).
CREATETABLE Accounts (branch INT REFERENCES Branch, account INT REFERENCES Account).
3.        Реалізація елементів безпеки
Однієюз важливих складових безпеки є розподілення прав доступу між користувачами.
Створимодвох користувачів та одну групу. Для кожного користувача також створимо схему.
CREATEROLE user1;
CREATEROLE user2;
CREATEROLE users NOLOGIN;
GRANTusers TO user2;
CREATESCHEMA schema1;
ALTERSCHEMA schema1 OWNER TO user1;
ALTERSCHEMA schema2 OWNER TO user2;
Надамодеякі права новим користувачам.
GRANTINSERT ON Accounts TO user2;
GRANTSELECT ON Accounts TO users;
GRANTUPDATE ON Operations TO user2.
Більшгнучкішим засобом контролю за доступом до таблиць БД є віртуальна таблиця(view). Нижчеприведені SQL-запити для створення віртуальних таблиць для вибору щоденнихоперацій, рахунків одеської філії банку та операцій з переводами коштів дофілії:
CREATEVIEW Today_Operations AS
          SELECT* FROM Operation WHERE dat = CURRENT_DATE
CREATEVIEW Odessa_Branch_Accounts AS
          SELECT* FROM Account WHERE num IN (SELECT account FROM Accounts WHERE branch IN(SELECT num FROM Branch WHERE name = 'Odessa'))
CREATEVIEW Income_Operations AS
          SELECT* FROM Operation WHERE change > 0.
УСКБД “Postgres” для віртуальних таблиць можлива заміна запитів UPDATE, INSERT, DELETE до цих таблиць назапити користувача.
CREATERULE Income_Operations_INSERT AS ON INSERT TO schema1.Income_Operations
DOINSTEAD INSERT INTO Income_Operations
SELECTNEW.code, NEW.dat, NEW.credit_num, NEW.debet_num
WHERENEW.change >0;
CREATERULE Income_Operations_UPDATE AS ON UPDATE TO schema1.Income_Operations
DOINSTEAD UPDATE Income_Operations SET
code=NEW.code,dat=NEW.dat, credit_num=NEW.credit_num, debet_num=NEW.debet_num
WHERENEW.change >0;
CREATERULE Income_Operations_DELETE AS ON DELETE TO schema1.Income_Operations
DOINSTEAD DELETE FROM Income_Operations WHERE NEW.change >0;
CREATERULE Today_Operations_INSERT AS ON INSERT TO schema1.Today_Operations
DOINSTEAD INSERT INTO Today_Operations
SELECTNEW.code, NEW.dat, NEW.credit_num, NEW.debet_num
WHERENEW.dat = CURRENT_DATE;
CREATERULE Today_Operations_UPDATE AS ON UPDATE TO schema1.Today_Operations
DOINSTEAD UPDATE Income_Operations SET
code=NEW.code,dat=NEW.dat, credit_num=NEW.credit_num, debet_num=NEW.debet_num
WHERENEW.dat = CURRENT_DATE;
CREATERULE Today_Operations_DELETE AS ON DELETE TO schema1.Today_Operations
DOINSTEAD DELETE FROM Income_Operations WHERE NEW.dat = CURRENT_DATE;
CREATERULE Odessa_Branch_Accounts_UPDATE AS ON UPDATE TOschema1.Odessa_Branch_Accounts
DOINSTEAD UPDATE Account SET
balance=NEW.balanceWHERE NEW.num IN (SELECT account FROM Accounts WHERE branch IN (SELECT num FROMBranch WHERE name = 'Odessa'))
CREATERULE Odessa_Branch_Accounts_DELETE AS ON DELETE TOschema1.Odessa_Branch_Accounts
DOINSTEAD DELETE FROM Account WHERE NEW.num IN (SELECT account FROM AccountsWHERE branch IN (SELECT num FROM Branch WHERE name = 'Odessa'))
Дляорганізації більш складної системи розмежування прав та введення рівнівсекретності треба створити окремі структури даних з цією інформацією та ввестидодаткові правила перевірки відповідності рівня користувача запиту рівнюдоступу до даної таблиці. Таблиця PERSONS містить список усіх користувачів, таблицяACCESS_LEVELS – рівні доступу, GROUPS_ACCESS_LEVEL – призначені рівні доступугрупам користувачів.
CREATESEQUENCE PERSON_ID;
CREATETABLE PERSONS (
          PERSON_IDINTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL('PERSON_ID')
          NAMEVARCHAR(30)
          SEXCHAR(1)
          BIRTHDAYDATE
          CONSTRAINTVALID_SEX CHECK (SEX IN ('M','W')));
CREATETABLE ACCESS_LEVELS (
          ACCESS_LEVEL_IDINTEGER PRIMARY KEY
          ACCESS_LEVELVARCHARUNIQUE);
INSERTINTO ACCESS_LEVELS VALUES (1,'public');
INSERTINTO ACCESS_LEVELS VALUES (2,'private');
INSERTINTO ACCESS_LEVELS VALUES (3,'secret');
INSERTINTO ACCESS_LEVELS VALUES (4,'top secret');
CREATETABLE GROUPS_ACCESS_LEVEL (
          GROUP_NAMEVARCHAR PRIMARY KEY
          ACCESS_LEVELINTEGER REFERENCES
          ACCESS_LEVELS(ACCESS_LEVEL_ID));
REVOKEALL ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;
GRANTSELECT ON GROUPS_ACCESS_LEVEL TO GROUP USERS;
INSERTINTO GROUPS_ACCESS_LEVEL VALUES ('users',2);
ALTERTABLE PERSONS
          ADDCOLUMN SPOT_CONF INTEGER DEFAULT 1
          REFERENCESACCESS_LEVELS(ACCESS_LEVEL_ID);
CREATEOR REPLACE VIEW PERSONS_LIST AS
          SELECTPERSON_ID, NAME, SEX, BIRTHDAY
          FROMPG_GROUP G, PG_USER U, PERSONS P
GROUPS_ACCESS_LEVELL
WHERE
USENAME= CURRENT_USER AND
U.USESYSID= ANY (G.GROLIST) AND
L.GROUP_NAME= G.GRONAME AND
P.SPOT_CONF
REVOKEALL ON PERSONS FROM GROUP USERS;
GRANTSELECT ON PERSONS_LIST TO GROUP USERS;
INSERTINTO PERSONS_LIST VALUES (1,'Tkachuk','M','23-02-1986');
UPDATEPERSONS SET SPOT_CONF = 4 WHERE PERSON_ID = 1;
INSERTINTO PERSONS_LIST VALUES (1,'Ivanov','M','15-03-1987');
UPDATEPERSONS SET SPOT_CONF = 1 WHERE PERSON_ID = 2;
DROPRULE PERSONS_LIST_INSERT ON PERSONS_LIST;
CREATERULE PERSONS_LIST_INSERT AS ON INSERT TO PERSONS_LIST DO INSTEAD
INSERTINTO PERSONS
SELECTCASE WHEN NEW.PERSON_ID IS NULL THEN NEXTVAL('PERSON_ID') ELSE NEW.PERSON_IDEND
NEW.NAME,NEW.SEX, NEW.BIRTHDAY, L.ACCESS_LEVEL
FROMPG_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;
GRANTINSERT ON PERSONS_LIST TO GROUP USERS;
GRANTSELECT,UPDATE ON PERSON_ID TO GROUP USERS;
DROPRULE PERSONS_LIST_UPDATE ON PERSONS_LIST;
CREATERULE PERSONS_LIST_UPDATE AS ON UPDATE TO PERSONS_LIST
DOINSTEAD
UPDATEPERSONS SET PERSON_ID = NEW.PERSON_ID
NAME= NEW.NAME, SEX = NEW.SEX, BIRTHDAY = NEW.BIRTHDAY
SPOT_CONF= L.ACCESS_LEVEL
FROMPG_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;
GRANTUPDATE ON PERSONS_LIST TO GROUP USERS.
4.        Реалізація елементів гарантованості
Длястворення резервної копії бази даних СКБД Postgres слід виконати команду:
pg_dumpmy_database –f my_database_15.05.2008.dump
Шифруваннядампу виконується за допомогою бібліотеки openssl алгоритмом DES:
opensslenc –e –des-cbc –iv smart_initial_value –k very_good_long_key –inmy_database_15.05.2008.dump –out my_database_15.05.2008.dump.arh
Розшифруванняархівної копії:
opensslenc –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
5.        Реалізаціяелементів Підзвітності
a.         Забезпечення надійності з’єднання
Длягенерації сертифікатів центру сертифікації виконаємо наступну команду:
opensslreq –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’
Длягенерації сертифікатів клієнтів виконаємо наступну команду:
opensslreq –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 ONINSERT TO Account
DO
INSERT INTO Account_logs
(OPER_TYPE, num_new ,balance_new )
VALUES('I', NEW.num, NEW.balance);
DROP RULE Account_logs _UPDATE ONAccount;
CREATE RULE Account_logs _ UPDATE AS ONUPDATE 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 ONDELETE 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 ONINSERT 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 ONUPDATE 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 ONDELETE 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 ONINSERT 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 ONUPDATE 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 DELETETO 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 с.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.