Курсовая работа: Захист інформації в інформаційних системах
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 (