Курсовая работа: Политика безопасности баз данных
UPDATE KLIENTS _LIST SET NAME = 'IVANOV' WHERE KLIENTS _ID = 21;
Создание правил на операции удаления, пример которого представлен ниже:
DROP RULE KLIENTS _LIST_DELETE ON KLIENTS _LIST;
CREATE RULE KLIENTS _LIST_DELETE AS ON DELETE TO
KLIENTS _LIST
DO INSTEAD
DELETE FROM KLIENTS WHERE
KLIENTS _ID = OLD. PERSON_ID AND
SPOT_CONF = GROUPS_ACCESS_LEVEL. ACCESS_LEVEL AND
PG_USER. USENAME = CURRENT_USER AND
PG_USER. USESYSID = ANY (PG_GROUP. GROLIST) AND
GROUPS_ACCESS_LEVEL. GROUP_NAME = PG_GROUP. GRONAME;
Предоставить права на удаление записей в виртуальной таблице:
GRANT DELETE ON KLIENTS_LIST TO GROUP USERS;
Проверить работу механизма:
DELETE FROM KLIENTS_LIST WHERE KLIENTS_ID = 2;
3.2.2 Реализация принудительного управления доступом в таблице "ОПЕРАЦИОНИСТЫ"
Для реализации принудительного управления доступом к таблице OPERS со стороны пользователей и групп пользователей СУБД необходимо выполнить следующие шаги.
Шаг 1. Создать виртуальную таблицу (view), учитывающую таблицу OPERS, таблицу уровней доступа, имя текущего пользователя, работающего с БД, позволяющую в дальнейшем разграничить доступ пользователей к отдельным записям таблицы OPERS.
CREATE OR REPLACE VIEW OPERS_LIST AS
SELECT OPERS_ID, NAME, SEX, BIRTHDAY
FROM PG_GROUP G, PG_USER U, KLIENTS 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;
При создании таблицы используется:
функция CURRENT_USER, возвращающая имя текущего пользователя.