|
Политика безопасности баз данных |
равила использования меток:субъект может читать информацию из объекта, если уровень секретности субъекта не ниже, чем у объекта, а все категории, перечисленные в метке безопасности объекта, присутствуют в метке субъекта;субъект может записывать информацию в объект, если метка безопасности объекта совпадает (или доминирует) с меткой субъекта.Реализация принудительного управления доступом в СУБДДля реализации полномочного управления доступом необходимо разрабатыватьдополнительный механизм, включающий:механизмы ограничения доступа по чтению субьектами данных таблиц с учетом имен правил управления доступом по чтению данных;механизмы ограничения доступа по модификации субьектами данных таблиц (внесение, изменение, удаление) с учетом имен правил управления доступом по модификации данных.В СУБД PostgreSQL вышеописанные пункты механизма можно создать через:создание виртуальной таблицы (view), учитывающей таблицу БД, таблицу уровней доступа и имя текущего пользователя, работающего с БД;создание правил (rules), перехватывающих операции внесения, изменения и удаления, выполняемых пользователями над таблиц БД3.2.1 Реализация принудительного управления доступом в таблице "КЛИЕНТЫ"Для реализации принудительного управления доступом к таблице KLIENTS со стороны пользователей и групп пользователей СУБД необходимо выполнить следующие шаги.Шаг 1. Создать виртуальную таблицу (view), учитывающую таблицу KLIENTS, таблицу уровней доступа, имя текущего пользователя, работающего с БД, позволяющую в дальнейшем разграничить доступ пользователей к отдельным записям таблицы KLIENTS.CREATE OR REPLACE VIEW KLIENTS_LIST ASSELECT PERSON_ID, NAME, SEX, BIRTHDAYFROM PG_GROUP G, PG_USER U, KLIENTS P,GROUPS_ACCESS_LEVEL LWHEREUSENAME = CURRENT_USER ANDU. USESYSID = ANY (G. GROLIST) ANDL. GROUP_NAME = G. GRONAME ANDP. SPOT_CONF <= L. ACCESS_LEVEL;При создании таблицы используется:функция CURRENT_USER, возвращающая имя текущего пользователя.функция ANY (G. GROLIST) возвращающая любое из значений массива G. GROLISTШаг 2. Для того, чтобы пользователи могли работать только с виртуальной таблицей,необходимо снять права доступа с реальной таблицы БД и установить права на чтение на виртуальную.Снять права доступа к реальной таблицы:REVOKE ALL ON KLIENTS FROM GROUP USERS;Установить права доступа на виртуальную таблицу:GRANT SELECT ON KLIENTS_LIST TO GROUP USERS;Шаг 3. Проверить работу механизмаЗаполнить таблицу persons тестовыми данными:INSERT INTO KLIENTS_LIST VALUES (1,'ABC','ФИРМА','12-11-1980');UPDATE KLIENTS SET SPOT_CONF = 1;INSERT INTO KLIENTS _LIST VALUES (1,'IBM','ФИРМА','30-12-1988');UPDATE KLIENTS SET SPOT_CONF = 1;INSERT INTO KLIENTS_LIST VALUES (1,'IVANOV','М','11-10-1965');UPDATE KLIENTS SET SPOT_CONF = 1;INSERT INTO KLIENTS_LIST VALUES (1,'PETROV','М','17-02-1989');UPDATE KLIENTS SET SPOT_CONF = 1;INSERT INTO KLIENTS_LIST VALUES (1,'SIDOROV','М','23-05-1975');UPDATE KLIENTS SET SPOT_CONF = 1;Для проверки работы механизма необходимо соединиться с БД, используя имя пользователя ABC.Выполнить пользователем director два запроса для проверки работы механизма:SELECT FROM KLIENTS;SELECT FROM KLIENTS_LIST;Изменить метку конфиденциальности отдельных записей пользователем-администратором:UPDATE KLIENTS SET SPOT_CONF = 3 WHERE KLIENTS_ID = 2;Повторно проверить работу механизма пользователем ABC:SELECT FROM KLIENTS_LIST;Шаг 4. Создать правила (rules), перехватывающие операции внесения, изменения иудаления, выполняемые пользователями над таблиц KLIENTSСоздать правило на операции внесения, пример которого представлен ниже:DROP RULE KLIENTS_LIST_INSERT ON KLIENTS_LIST;CREATE RULE KLIENTS_LIST_INSERT AS ON INSERT TOKLIENTS _LISTDO INSTEADINSERT INTO KLIENTSSELECT CASE WHEN NEW. KLIENTS _ID IS NULLTHEN NEXTVAL (' KLIENTS _ID') ELSE NEW. KLIENTS _ID END,NEW. NAME, NEW. SEX, NEW. BIRTHDAY, L. ACCESS_LEVELFROM PG_GROUP G, PG_USER U, GROUPS_ACCESS_LEVEL LWHEREU. USENAME = CURRENT_USER ANDU. USESYSID = ANY (G. GROLIST) ANDL. GROUP_NAME = G. GRONAME;Предоставить права на внесение записей в виртуальной таблице:GRANT INSERT ON KLIENTS _LIST TO GROUP USERS;GRANT SELECT,UPDATE ON KLIENTS _ID TO GROUP USERS;Проверить работу механизма:INSERT INTO KLIENTS _LIST VALUES (21,'IVANOV','М','10-10-1980');Создать правило на операции изменения, пример которого представлен ниже:DROP RULE KLIENTS _LIST_UPDATE ON KLIENTS _LIST;CREATE RULE KLIENTS _LIST_UPDATE AS ON UPDATETO KLIENTS _LISTDO INSTEADUPDATE KLIENTS SET KLIENTS _ID = NEW. KLIENTS _ID,NAME = NEW. NAME, SEX = NEW. SEX, BIRTHDAY = NEW. BIRTHDAY,SPOT_CONF = L. ACCESS_LEVELFROM PG_GROUP G, PG_USER U, GROUPS_ACCESS_LEVEL LWHEREKLIENTS _ID = OLD. KLIENTS _ID ANDSPOT_CONF = L. ACCESS_LEVEL ANDU. USENAME = CURRENT_USER ANDU. USESYSID = ANY (G. GROLIST) ANDL. GROUP_NAME = G. GRONAME;Предоставить права на изменение записей в виртуальной таблице:GRANT UPDATE ON KLIENTS _LIST TO GROUP USERS;Проверить работу правила: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 TOKLIENTS _LISTDO INSTEADDELETE FROM KLIENTS WHEREKLIENTS _ID = OLD. PERSON_ID ANDSPOT_CONF = GROUPS_ACCESS_LEVEL. ACCESS_LEVEL ANDPG_USER. USENAME = CURRENT_USER ANDPG_USER. USESYSID = ANY (PG_GROUP. GROLIST) ANDGROUPS_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 ASSELECT OPERS_ID, NAME, SEX, BIRTHDAYFROM PG_GROUP G, PG_USER U, KLIENTS P,GROUPS_ACCESS_LEVEL LWHEREUSENAME = CURRENT_USER ANDU. USESYSID = ANY (G. GROLIST) ANDL. GROUP_NAME = G. GRONAME ANDP. SPOT_CONF <= L. ACCESS_LEVEL;При создании таблицы используется:функция CURRENT_USER, возвращающая имя текущего пользователя.функция ANY (G. GROLIST) возвращающая любое из значений массива G. GROLISTШаг 2. Для того, чтобы пользователи могли работать только с виртуальной таблицей,необходимо снять права доступа с реальной таблицы БД и установить права на чтение на виртуальную.Снять права доступа к реальной таблицы:REVOKE ALL ON OPERS FROM GROUP USERS;Установить права доступа на виртуальную таблицу:GRANT SELECT ON OPERS_LIST TO GROUP USERS;Шаг 3. Проверить работу механизмаЗаполнить таблицу persons тестовыми данными:INSERT INTO OPERS_LIST VALUES (1,'SALMIN','M','15-10-1988');UPDATE OPERS SET SPOT_CONF = 1;INSERT INTO OPERS_LIST VALUES (1,KIRICHUK','M','30-12-1988');UPDATE OPERS SET SPOT_CONF = 1;Для проверки работы механизма необходимо соединиться с БД, используя имя пользователя ABC.Выполнить пользователем director два запроса для проверки работы механизма:SELECT FROM OPERS;SELECT FROM OPERS_LIST;Изменить метку конфиденциальности отдельных записей пользователем-администратором:UPDATE OPERS SET SPOT_CONF = 3 WHERE OPERS_ID = 2;Повторно проверить работу механизма пользователем ABC:SELECT FROM OPERS_LIST;Шаг 4. Создать правила (rules), перехватывающие операции внесения, изменения иудаления, выполняемые пользователями над таблиц OPERSСоздать правило на операции внесения, пример которого представлен ниже:DROP RULE OPERS_LIST_INSERT ON OPERS_LIST;CREATE RULE OPERS_LIST_INSERT AS ON INSERT TOOPERS_LISTDO INSTEADINSERT INTO OPERSSELECT CASE WHEN NEW. OPERS _ID IS NULLTHEN NEXTVAL (` OPERS _ID') ELSE NEW. OPERS_ID END,NEW. NAME, NEW. SEX, NEW. BIRTHDAY, L. ACCESS_LEVELFROM PG_GROUP G, PG_USER U, GROUPS_ACCESS_LEVEL LWHEREU. USENAME = CURRENT_USER ANDU. USESYSID = ANY (G. GROLIST) ANDL. GROUP_NAME = G. GRONAME;Предоставить права на внесение записей в виртуальной таблице:GRANT INSERT ON OPERS_LIST TO GROUP USERS;GRANT SELECT,UPDATE ON OPERS_ID TO GROUP USERS;Проверить работу механизма:INSERT INTO KLIENTS _LIST VALUES (21,'IVANOV','М','10-10-1980');Создать правило на операции изменения, пример которого представлен ниже:DROP RULE OPERS_LIST_UPDATE ON OPERS_LIST;CREATE RULE OPERS_LIST_UPDATE AS ON UPDATETO OPERS_LISTDO INSTEADUPDATE OPERS SET OPERS_ID = NEW. OPERS_ID,NAME = NEW. NAME, SEX = NEW. SEX, BIRTHDAY = NEW. BIRTHDAY,SPOT_CONF = L. ACCESS_LEVELFROM PG_GROUP G, PG_USER U, GROUPS_ACCESS_LEVEL LWHEREOPERS_ID = OLD. OPERS_ID ANDSPOT_CONF = L. ACCESS_LEVEL ANDU. USENAME = CURRENT_USER ANDU. USESYSID = ANY (G. GROLIST) ANDL. GROUP_NAME = G. GRONAME;Предоставить права на изменение записей в виртуальной таблице:GRANT UPDATE ON OPERS_LIST TO GROUP USERS;Проверить работу правила:UPDATE OPERS_LIST SET NAME = 'SALMIN' WHERE OPERS_ID =1;Создание правил на операции удаления, пример которого представлен ниже:DROP RULE OPERS_LIST_DELETE ON OPERS_LIST;CREATE RULE OPERS_LIST_DELETE AS ON DELETE TOOPERS_LISTDO INSTEADDELETE FROM OPERS WHEREOPERS_ID = OLD. OPERS_ID ANDSPOT_CONF = GROUPS_ACCESS_LEVEL. ACCESS_LEVEL ANDPG_USER. USENAME = CURRENT_USER ANDPG_USER. USESYSID = ANY (PG_GROUP. GROLIST) ANDGROUPS_ACCESS_LEVEL. GROUP_NAME = PG_GROUP. GRONAME;Предоставить права на удаление записей в виртуальной таблице:GRANT DELETE ON OPERS_LIST TO GROUP USERS;Проверить работу механизма:DELETE FROM OPERS_LIST WHERE OPERS_ID = 2;4. Реализация требований стандарта по критерию "подотчётность"4.1 Обеспечение идентификации и аутентификацииЗаписи в файле могут иметь следующие формы:local имя_БД имя_пользователя метод_доступаhost имя_БД имя_пользователя IP-адрес метод_доступаhostssl имя_БД имя_пользователя IP-адрес метод_доступаПервое поле записи - тип соединения:local - Unix-сокет соединение без использования протокола TCP/IP,host - соединение с использованием протокола TCP/IPhostssl - соединение с использованием протокола TCP/IP SSL-протоколаВторое поле - имя БД, может принимаит значения:all - разрешен доступ ко всем БД СУБДsameuser - разрешен доступ к БД, имя которой совпадает с именем пользователяимя БД или список имен, разделенных запятойТретье поле - имя пользователя или список имен, разделенных запятойЧетвертое поле - IP-адрес компьютера, которому разрешен доступ или маска адреса.Пятое поле - метод доступа:trust - доступ без пароляreject - доступ запрещенpassword - доступ по нешифруемому паролюcrypt - доступ по шифруемому паролю алгоритмом cryptmd5 - доступ по шифруемому паролю алгоритмом md54.2 Построим таблицу для пользователей нашей БД|
Тип соединения | Имя БД | Имя пользователя | IP: | Тип аути/и: | | host | Банк | АВС | 183.22.12.1 | md5 | | host | Банк | IBM | 183.22.12.2 | md5 | | hostssl | Банк | Иванов А.А. | 183.22.12.3 | md5 | | hostssl | Банк | Петров П.П. | 183.22.12.4 | md5 | | hostssl | Банк | Сидоров В.Г. | 183.22.12.5 | md5 | | hostssl | Банк | Джавров В.Г. | 183.22.12.6 | md5 | | hostssl | Банк | Салмин Ю.Л. | 184.22.12.1 | md5 | | hostssl | Банк | Киричук А.Г. | 184.22.12.2 | md5 | | hostssl | Банк | Корниенко В.А. | 127.0.0.1 | trust | | local | Банк | Манько А.А. | 183.22.12.2 | md5 | | local | Банк | Яновский Г.Х. | 184.22.12.3 | md5 | | |
Страницы: 1, 2, 3, 4
|
|
|
© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент. |
|
|