|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
Здравствуйте, Разрабатываем БД (СУБД PostgreSQL) и клиентские приложения ( 2-х звенка ). На данный момент пользователей около 50 и уже становится не очень удобно раздавать права, а что будет когда пользователей перевалит за 100 трудно представить. Вроде ничего сложного: 1)Определил необходимые роли для пользователей 2)Создал эти роли/группы 3)Даешь пользователям необходимые роли Но сейчас раздачей прав занимается администратор БД и возникла необходимость переложить или отдать часть этой работы другому человеку. К тому же сложность в выделении конкретного списка ролей по обязанностям. Как я это вижу: Создается приложение в котором пользователь галками проставляет пользователям необходимые права. Пользователь этой программы понятия может не иметь о структуре БД, функциях и т.д., он оперирует действиями предметной области. То есть на экране он видит нечто "Создание договоров", "Редактирование спецификации", "Просмотр заявок своего подразделения" и т.д. При отметке соответствующего пункта пользователю даются необходимые права на объекты БД, которые связаны с этим действием. На данный момент две идеи: 1)Описывается связь между операциями над системными объектами и операциями(предм. область) Смотрим (Упрощенно) Создаются таблицы: operations (Операции/действия применительно к предметной области) id opname1 Просмотр номенклатуры2 Редактирование спецификаций user_operation (Назначение операций ролям) role_name operation_idvasya 1vasya 2 db_objects (Объекты БД) id obj_name obj_type999 PRODUCT TABLE db_operations (Операции с объектами БД: SELECT, EXECUTE, UPDATE, etc.) id dbop_name dbop_define5 'ВЫБОРКА' 'SELECT' dbobj_operation (Определение необходимых действий над системными объектами для операции) operation_id db_operation_id db_object_id1 5 999 И теперь вся работа по раздаче прав ведется через приложение, которое при проставлении галочек формирует SQL запрос(GRANT/REVOKE) на необходимые объекты и выполняет его. Админу необходимо только заполнять таблицу связи операций с объектами БД (dbobj_operation). 2) В качестве операций используются специально созданные роли Смотрим Так же создается таблица операций operations (Операции/действия применительно к предметной области) id opname1 Просмотр номенклатуры2 Редактирование спецификаций Но привязывать операции буду к специально созданным ролям/группам. user_operation (Назначение операций ролям) priv_role_name operation_idpriv_product_select 1priv_edit_sp 2 То есть создаются специальные группы/роли, например с префиксом priv_ для того, что бы отличать их от обычных ролей. Этим ролям (priv_*) админом раздаются необходимые права на объекты БД. А приложению при проставлении/снятия галочки останется только включить/исключить реального пользователя в эту группу. Пример: есть таблица - product роль пользователя - vasya привилегия(роль) - priv_product_select Операция - Просмотр номенклатуры Админ дает Код: plaintext
В силу простоты мне больше нравится 2 вариант, но настораживает использование ролей не совсем так как задумано и большим количеством этих ролей. Насколько разумно использовать роли в таких целях? Хочется услышать/получить совет как решают подобные задачи(раздачу прав) профессионалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2010, 19:34 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
Хотелось бы узнать как вы реализовали это ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2012, 15:53 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
westvovik, ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 11:35 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
Сколь угодно сложную систему прав можно реализовать одной, совсем не широкой таблицей. Суть крайне проста: ИмяПрава, ИД юзера, ИД типа объекта, значение(целое число, можно использовать как битовую маску). Если добавить строчное/флоат/дата поля, то в добавок там же можно хранить различные индивидуальные параметры для юзера. У каждого юзера индивидуальный набор прав. Можно иметь "эталонных" юзеров, чтоб с них копировать типичные наборы прав. В коде (как в приложении так и в SQL) достаточно вызвать функцию: IsMyRight('Документ', MyUserID, ID типа документа "КарточкаТовара") = .... чтоб узнать, что можно юзеру делать, например с карточкой товара. И т.д. У нас есть "Документ", "Репорт" и прочие права (что-то типа "ЗапретПравитьЧужуюКарточку", "ВидетьЧужуюХХХХХНакладную" и т.д.). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 12:15 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
LSVСколь угодно сложную систему прав можно реализовать одной, совсем не широкой таблицей. Ну в принципе любую сколь угодно сложную систему чего угодно можно реализовать одной таблицей с одним полем и одной записью. Тем не менее, я был бы несколько осторожнее в утверждениях. Например, в этой "неширокой таблице" будет немного проблематично реализовать такой полезный функционал как "на время отпуска сотрудника X некую операцию от его имени может делать сотрудник Y". Есть и другие моменты, например "документы на сумму до X cотрудник может утверждать самостоятельно, для документов с суммой от X до Y при попытке утверждения автоматически запрашивается разрешение от начальника, а больше Y вообще нельзя". ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 13:02 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
Не, Сахават, так не канает. Сначала вам придется описать сущности и элементарные действия. Кстати и о метамодели: выделяемые сущности должны в нее вписываться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 13:45 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
guest_20040621, не въехал, обясни ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 14:58 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
> не въехал, обясни Вместо "Настройка форм" у вас будет что-то типа: роль -> модуль -> интерфейс -> действия. Элементы интерфейса есть смысл описать как расширение метамодели. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 18:15 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
guest_20040621, "Настройка форм" означает, что пользователь может перенастроить внешний вид любой доступной ему формы (визуальное представление макротипа) (сами формы генерируются автоматически) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 18:52 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
ViPRos, тут у меня не хватает одного слоя репозитария (что типа пользователи - модератора роли, могут создать изменения для всей роли) тогда можно было бы пользователю совать не автоформы, а формы настроенные модератором-дизайнером роли сделаю как нить ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2012, 19:00 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
guest_20040621> не въехал, обясни Вместо "Настройка форм" у вас будет что-то типа: роль -> модуль -> интерфейс -> действия. Элементы интерфейса есть смысл описать как расширение метамодели. Роли зачастую очень неудобны. Приложнение -> модуль->действие->разрешения/запрещения для группы и/или пользователя ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 10:58 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
softwarerНапример, в этой "неширокой таблице" будет немного проблематично реализовать такой полезный функционал как "на время отпуска сотрудника X некую операцию от его имени может делать сотрудник Y". Есть и другие моменты, например "документы на сумму до X cотрудник может утверждать самостоятельно, для документов с суммой от X до Y при попытке утверждения автоматически запрашивается разрешение от начальника, а больше Y вообще нельзя". это смешивание в одну кучу различных сущностей. Первое реализуется элементарной опцией "активности" разрешения и штатными для подобных систем условиями И-ИЛИ . Второе, вообще типичная прикладная задача из области документооброта и визирования. Рассматривание этого с позиций системы управления доступом - типичная ошибка, когда что-то применяется не по назначению . Ввиду этого, самостоятельно создаются трудности, а затем, героически преодолеваются. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 11:36 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
SeVa, "Приложение" в ВИПРОС - понятие "гулящее" Вот дали тебе права на набор макротипов и их методы - и это твое "приложение" "Модуль" воще ни о чем не говорит - метод може быть описан где угодно (хоть в собственной папке пользователя в виде текста, который доступен только для него), кто угодно может расширить-заменить метод (при соответствующих правах) вощеи имеется изменяемый набор кирпичиков (типы, макротипы и их методы (хотя не их и вовсе, а приданные из которых для каждого можно собрать что угодно потому права и даются на эти кирпичики при этом функциональность этих кирипичиков можно ограничить для каждого через правила и фильтры ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 11:37 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
ViPRos, что бы поля читались нормально продублирую ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 11:41 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
iscrafm__Первое реализуется элементарной опцией "активности" разрешения и штатными для подобных систем условиями И-ИЛИ . Мне кажется, что Вы в стремлении возразить немного забыли, о чём мы вообще говорим. Реализовать можно всё, и почти всё - не особенно сложно. Вопрос в том, что "одна неширокая таблица" при этом начинает "расширяться". iscrafm__Второе, вообще типичная прикладная задача из области документооброта и визирования. Рассматривание этого с позиций системы управления доступом - типичная ошибка, когда что-то применяется не по назначению . Не соглашусь. Представьте себе, что Вы через дверь уговариваете пятилетнюю двоюродную племянницу пустить Вас в квартиру - вот и система управления доступом. И если она бежит "бабушка, там кто-то говорит, что он двоюродный дядя" - это что, использование не по назначению? iscrafm__Ввиду этого, самостоятельно создаются трудности, а затем, героически преодолеваются. Для эротических фантазий у нас предусмотрен другой форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 11:48 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
softwareriscrafm__Ввиду этого, самостоятельно создаются трудности, а затем, героически преодолеваются. Для эротических фантазий у нас предусмотрен другой форум. у кого у вас и к чему это вообще ляпнуто? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 11:54 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
iscrafm__у кого у вас У адекватных подписчиков sql.ru iscrafm__и к чему это вообще ляпнуто? К тому, чтобы Вы несли их туда и не замусоривали ими проффорум. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 11:57 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
softwareriscrafm__Первое реализуется элементарной опцией "активности" разрешения и штатными для подобных систем условиями И-ИЛИ . Мне кажется, что Вы в стремлении возразить немного забыли, о чём мы вообще говорим. Реализовать можно всё, и почти всё - не особенно сложно. Вопрос в том, что "одна неширокая таблица" при этом начинает "расширяться". мне кажется, что ты в стремлении возразить немного забываешь о чем речь идет. Тебе конкретно сказано, что твой пример с "сотрудник в отпуске" элементарно решается, а твой пример с "суммами" - вообще из другой области. softwareriscrafm__Второе, вообще типичная прикладная задача из области документооброта и визирования. Рассматривание этого с позиций системы управления доступом - типичная ошибка, когда что-то применяется не по назначению . Не соглашусь. Представьте себе, что Вы через дверь уговариваете пятилетнюю двоюродную племянницу пустить Вас в квартиру - вот и система управления доступом. И если она бежит "бабушка, там кто-то говорит, что он двоюродный дядя" - это что, использование не по назначению? не соглашайся, твое право. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 12:01 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
Ладно, Валер, выпей уже и успокойся. Полезней будет. Dixi. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 12:04 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
iscrafm__, Валер, а как в Искре устройство прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 12:09 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
softwareriscrafm__у кого у вас У адекватных подписчиков sql.ru iscrafm__и к чему это вообще ляпнуто? К тому, чтобы Вы несли их туда и не замусоривали ими проффорум. ты себя после такого считаешь адекватным? мда... Здесь адекватных практически не осталось. Но к теме это не относится. Если ты не понимаешь о чем речь идет, то лучше не встревай в разговор. Это элементарное правило надеюсь понятно для тебя? Бабушка...пятилетняя племянница... образец адекватного подписчика (слово то какое придумал)... по теме: 1. Твой пример №1 элементарная задача 2. Твой пример №2 вообще не относится к задачам, обсуждаемым в теме. Так твой проффорум меньше захламляется? Или нет упоминания о бабушках и племянницах, не подходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 12:09 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
softwarerЛадно, Валер, выпей уже и успокойся. Полезней будет. Dixi. я не пью, с утра. спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 12:10 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
ViPRosiscrafm__, Валер, а как в Искре устройство прав? Сахават, Пользователи...Профили -> а-ля Роли. Профиль определяет полный "контент" (содержание) того, что получает пользователь в свое распоряжение, т.е. никаких матриц, в классическом понимании, не существует. Пользователь может воспользоваться содержанием одного или нескольких профилей. "Кто он" сейчас определяется в момент регистрации в системе. Действует так называемое "динамическое разделение обязанностей", "временное ограничение обязанностей", в классических терминах ролевого доступа. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 12:28 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
iscrafm__, ясно ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 12:40 |
|
(СУБД) Роли как привилегия/операция
|
|||
---|---|---|---|
#18+
> Роли зачастую очень неудобны Вы не умеете их готовить. Никаких других эффективных способов ограничения доступа до сих пор не придумали. Вопрос на самом деле заключается в том, как именно вы определяете функционально законченные элементы приложения. Регистрация исключений - часть ролевой модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2012, 13:45 |
|
|
start [/forum/topic.php?fid=33&msg=37840747&tid=1547836]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 173ms |
0 / 0 |