powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Разделение прав на уровне записи
7 сообщений из 7, страница 1 из 1
Разделение прав на уровне записи
    #32375108
Stas Tristan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас пытаюсь сделать бизнес-логику будущего сервера.
Необходима следующая система привилегий:
Для каждой записи пользователь, ее добавивший, должен иметь возможность назначить:
- список пользователей, которые могут СМОТРЕТЬ эту запись.
- список пользователей, которые могут ИЗМЕНЯТЬ эту запись.
- список пользователей, которые могут УДАЛЯТЬ эту запись.
Причем интерфейс для этого - клиентский GUI, а вот храниться все эти установки должны на сервере - это раз. Два - сервер должен адекватно выполнять запросы в соответствии с этими привилегиями.

Например, юсер Иванов добавил 2 записи в таблицу EXAM_TABLE с такими привилегиями:
СМОТРЕТЬ, ИЗМЕНЯТЬ, УДАЛЯТЬ - только он, юсер Иванов. Предположим, что злоумышленник юсер Петров получил доступ к исходникам клиентского GUI, узнал что есть такая EXAM_TABLE и хочет просмотреть все записи этой таблицы, включая юсера Иванова. Он берет, из консоли логинится под своим именем и в консоли же посылает запрос к серверу: SELECT * FROM EXAM_TABLE. Так вот нужно, чтобы сервер выдал только записи Петрова (если они есть), то есть сервер должен на своей стороне решить (исходя из User & Password) - что кому выдавать.

Вопрос - какой-нибудь из серверов это умеет делать? Если нет, то имеет ли смысл проектировать трехзвенную структуру типа - клиент/сервер приложений/сервер баз данных?
Подскажите, в общем, что-нибудь.

Заранее спасибо всем ответившим!
...
Рейтинг: 0 / 0
Разделение прав на уровне записи
    #32375305
f2f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
f2f
Гость
Да практически любой, которой может запретить доступ напрямую к таблице и дать доступ через представление. А если еще и хранимые процедуры поддерживаются, то и вовсе никаких проблем. Кроме накладных расходов на проверку прав, конечно.
...
Рейтинг: 0 / 0
Разделение прав на уровне записи
    #32375362
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно реализовать собственный механизм привилегий на основе представлений и хранимых процедур. В Oracle также существует:
Fine Grained Access Control, или Детальный Контроль Доступа:
http://www.oracle.com/ru/oramag/august2001/index.html?dev_tkyte.html
Oracle Label Security
http://www.oracle.com/ru/oramag/augsept2003/index.html?general_label.html

Суть первого состоит в неявном добавлении к запросам условия, определенного в политике безопасности. Грубо говоря: при select, insert, update, delete (по выбору) к WHERE самим сервером дописывается условие, возвращаемое пользовательской функции.
...
Рейтинг: 0 / 0
Разделение прав на уровне записи
    #32375479
Berg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А пользователь не заколебается после внесения КАЖДОЙ записи описывать что имеет право с ней делать КАЖДЫЙ другой пользователь?
...
Рейтинг: 0 / 0
Разделение прав на уровне записи
    #32375481
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень-очень для огранияения прав на добавление-удаление-изменение могут помочь триггеры before...
...
Рейтинг: 0 / 0
Разделение прав на уровне записи
    #32375721
Stas Tristan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Denis Popov - именно это неявное добавление к WHERE и нужно. Только вот Oracle это очень дорого.
Какой-нибудь из Open Source это поддерживает?
...
Рейтинг: 0 / 0
Разделение прав на уровне записи
    #32375851
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Какой-нибудь из Open Source это поддерживает?

Наверное имелось в виду freeware?? Если так, то MySql, Interbase, но тогда нужно делать так:
1. Создать таблицу со связью с пользователями много-ко-многим и не давать права на этоу таблицы никому, в это связки поля: ид_твоей табл., ид_юзера и ид_права.
2. потом создаешь вьюшку, в кот. добавляешь в условие, только те узера у кого есть разрешение на просмотр.
create view as select
select * from <table> t, <n-n_table> nt
where nt.id_user = <id_cur_user> and nt.id_table = t.id_table
and nt.id_rights = <can_see>
3. создаешь тригеры на делит, апдейт и инсерт
4. пожинаешь лавры

З.Ы. Все уже было сказано ранее, я всего лишь подитожил.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Разделение прав на уровне записи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]