Посоветуйте архитектуру доступа к данным
От: black_sr http://black.dnh.sk/
Дата: 12.02.10 21:59
Оценка:
Есть база данных, как организовать архитекрурально доступ только к тем данным к которым юзер имеет допуск.
Скажем есть 500 или 1000 типов обьектов в базе.
Юзер имеет право просматривать эти типы данных, но не все, а строго в соответсвии со своими правами доступа.
Лезит в голову одно лишь, при заходе в систему генерировать на лету в базе темп таблицу со всеми Id всех типов обьектов к которым етот юзер имеет достууп.
И при любом get из базы жойнить с этой таблицой.
А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...
Re: Посоветуйте архитектуру доступа к данным
От: sunsquirel США  
Дата: 13.02.10 12:13
Оценка: +1
Здравствуйте, black_sr, Вы писали:

_>Есть база данных, как организовать архитекрурально доступ только к тем данным к которым юзер имеет допуск.

_>И при любом get из базы жойнить с этой таблицой.
_>А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...

А роли баз данных вы по каким причинам не хотите использовать? Мне кажется, это самое просто и логичное решение и ничего сложного не надо городить.
Re[2]: Посоветуйте архитектуру доступа к данным
От: black_sr http://black.dnh.sk/
Дата: 17.02.10 06:29
Оценка:
Здравствуйте, sunsquirel, Вы писали:

S>Здравствуйте, black_sr, Вы писали:


_>>Есть база данных, как организовать архитекрурально доступ только к тем данным к которым юзер имеет допуск.

_>>И при любом get из базы жойнить с этой таблицой.
_>>А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...

S>А роли баз данных вы по каким причинам не хотите использовать? Мне кажется, это самое просто и логичное решение и ничего сложного не надо городить.


Я как то не улавливаю, как роли БД могут мне помочь..
Можете немножко поподробнее описать што вы имелли в виду?
Re: Посоветуйте архитектуру доступа к данным
От: Kerk  
Дата: 17.02.10 07:29
Оценка:
Здравствуйте, black_sr, Вы писали:

_>Лезит в голову одно лишь, при заходе в систему генерировать на лету в базе темп таблицу со всеми Id всех типов обьектов к которым етот юзер имеет достууп.

_>И при любом get из базы жойнить с этой таблицой.
_>А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...

Как вариант, добавить в саму таблицу (таблицы) поле со ссылкой на роль и триггером заполнять его при вставке записи, согласно определенным правилам.
Re[3]: Посоветуйте архитектуру доступа к данным
От: Sinix  
Дата: 18.02.10 01:15
Оценка: +1
Здравствуйте, black_sr, Вы писали:

_>Я как то не улавливаю, как роли БД могут мне помочь..

Заводите роль, назначаете ей права, включаете пользователей в роль.

Если же у вас row-level-security (а из вашего поста это неочевидно), то придётся хорошо помучаться — закрыть прямой доступ к таблицам и написать кучу view/sp которые и будут проверять доступ пользователя.

Детали реализации зависят от кучи вещей, для начала — от используемой СУБД.

Ну и сразу могу сказать: если вы с самого начала не проектировали приложений с учётом разруливания доступа к данным — граблей не оберётесь.
Re: Посоветуйте архитектуру доступа к данным
От: sto Украина http://overstore.codeplex.com
Дата: 19.02.10 11:27
Оценка:
Здравствуйте, black_sr, Вы писали:

_>Есть база данных, как организовать архитекрурально доступ только к тем данным к которым юзер имеет допуск.

_>Скажем есть 500 или 1000 типов обьектов в базе.
_>Юзер имеет право просматривать эти типы данных, но не все, а строго в соответсвии со своими правами доступа.
_>Лезит в голову одно лишь, при заходе в систему генерировать на лету в базе темп таблицу со всеми Id всех типов обьектов к которым етот юзер имеет достууп.
_>И при любом get из базы жойнить с этой таблицой.
_>А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...

Если ролей не много, можно добавить в таблицу дополнительный столбец типа int32 или int64, и в нем хранить битовую маску ролей, имеющих доступ к объекту.
Тогда в where можно будет просто, а возможно, и быстро, отфильтровать нужные данные.
There is no such thing as the perfect design.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.