Есть база данных, как организовать архитекрурально доступ только к тем данным к которым юзер имеет допуск.
Скажем есть 500 или 1000 типов обьектов в базе.
Юзер имеет право просматривать эти типы данных, но не все, а строго в соответсвии со своими правами доступа.
Лезит в голову одно лишь, при заходе в систему генерировать на лету в базе темп таблицу со всеми Id всех типов обьектов к которым етот юзер имеет достууп.
И при любом get из базы жойнить с этой таблицой.
А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...
Здравствуйте, black_sr, Вы писали:
_>Есть база данных, как организовать архитекрурально доступ только к тем данным к которым юзер имеет допуск. _>И при любом get из базы жойнить с этой таблицой. _>А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...
А роли баз данных вы по каким причинам не хотите использовать? Мне кажется, это самое просто и логичное решение и ничего сложного не надо городить.
Здравствуйте, sunsquirel, Вы писали:
S>Здравствуйте, black_sr, Вы писали:
_>>Есть база данных, как организовать архитекрурально доступ только к тем данным к которым юзер имеет допуск. _>>И при любом get из базы жойнить с этой таблицой. _>>А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...
S>А роли баз данных вы по каким причинам не хотите использовать? Мне кажется, это самое просто и логичное решение и ничего сложного не надо городить.
Я как то не улавливаю, как роли БД могут мне помочь..
Можете немножко поподробнее описать што вы имелли в виду?
Здравствуйте, black_sr, Вы писали:
_>Лезит в голову одно лишь, при заходе в систему генерировать на лету в базе темп таблицу со всеми Id всех типов обьектов к которым етот юзер имеет достууп. _>И при любом get из базы жойнить с этой таблицой. _>А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...
Как вариант, добавить в саму таблицу (таблицы) поле со ссылкой на роль и триггером заполнять его при вставке записи, согласно определенным правилам.
Здравствуйте, black_sr, Вы писали:
_>Я как то не улавливаю, как роли БД могут мне помочь..
Заводите роль, назначаете ей права, включаете пользователей в роль.
Если же у вас row-level-security (а из вашего поста это неочевидно), то придётся хорошо помучаться — закрыть прямой доступ к таблицам и написать кучу view/sp которые и будут проверять доступ пользователя.
Детали реализации зависят от кучи вещей, для начала — от используемой СУБД.
Ну и сразу могу сказать: если вы с самого начала не проектировали приложений с учётом разруливания доступа к данным — граблей не оберётесь.
Здравствуйте, black_sr, Вы писали:
_>Есть база данных, как организовать архитекрурально доступ только к тем данным к которым юзер имеет допуск. _>Скажем есть 500 или 1000 типов обьектов в базе. _>Юзер имеет право просматривать эти типы данных, но не все, а строго в соответсвии со своими правами доступа. _>Лезит в голову одно лишь, при заходе в систему генерировать на лету в базе темп таблицу со всеми Id всех типов обьектов к которым етот юзер имеет достууп. _>И при любом get из базы жойнить с этой таблицой. _>А што делать с данными кототрые в реальном времени добавляются другими юзерами и к которым наш юзер должен иметь доступ...
Если ролей не много, можно добавить в таблицу дополнительный столбец типа int32 или int64, и в нем хранить битовую маску ролей, имеющих доступ к объекту.
Тогда в where можно будет просто, а возможно, и быстро, отфильтровать нужные данные.