Группы в Access или роли в Oracle?
fox_student
Дата: 05.12.2006 12:33:30
Поскажите, пожалуйста, новичку...
Есть база на Оракле и клиент на Аксессе. Надо организовывать безопасность через группы пользователей и конкретные права доступа для этих групп. Средства для этого есть и в Аксесс (группы) и в Оракле (роли). Как лучше(правильней?) сделать - в Оракле или средствами Аксесса?
barrabas
Дата: 05.12.2006 12:41:56
ИМХО на сервере нужно делать, т.к. клиент может быть переписан в будующем на что угодно в связи например с нежеланиме платить за лицензию акса или нужно будет дополнительно веб интерфейс присабачивать.
_____________________________________
Мое конг-фу сильнее твоего
barrabas
Дата: 05.12.2006 12:56:21
можно сделать подругому (неиспользуя роли в оракле), сделать таблицы: пользователи, привелегиипользователей на ..., и во всех вьюхах поставить пересечение с этими таблицами, таким образом пользователь удет видеть только то что ему разрешено и еще плюс в комбобоксах выбора отчетов по БЕ и операциям пользователь тоже будет видеть только разрешенные ему БЕ и операции (и по идее даже может не знать о существовании других).
fox_student
Дата: 05.12.2006 17:11:53
Спасибо за разъяснение, Barrabas.
А можно поподробней "во всех вьюхах поставить пересечение с этими таблицами" - это как? В Оракле? И что такое "БЕ", поясните, пожалуйста.
Что-то типа второго варианта уже реализовано, есть таблица пользователей, в кот. забиты их привилегии, и есть таблица, "что доступно по меню текущему пользователю", формируется исходя из привелегий пользователя....
Но задача именно сделать все через группы или роли. Я теперь конфликтов боюсь...
Hummer
Дата: 05.12.2006 17:32:54
2 barrabas
Т.е. ваш механизм лучше ролей в Оракле?:)
Это к тому, что не нужно изобретать велосипед, он уже давно изобретён.
barrabas
Дата: 05.12.2006 17:42:59
Hummer |
2 barrabas Т.е. ваш механизм лучше ролей в Оракле?:) Это к тому, что не нужно изобретать велосипед, он уже давно изобретён. |
БЕ - балансовая единица :)
1. Он не мой, я пришол на работу так было реализованно во время проектирования БД, но я вник и согласен что это круто

2. К ролям он отношения не имеет, т.е. ролью ты можешь назначить права на просмотр вьюхи для пользователя, но ты не сможешь сделать так чтобы каждый пользователь видел в этой вьюхе только те данне которые ему разрешены.
barrabas
Дата: 05.12.2006 17:43:51
домой приду распишу поподробнее, пошел я
_____________________________________
Мое конг-фу сильнее твоего
barrabas
Дата: 05.12.2006 18:50:39
ORDERS
BE | OPER | QTY | TOVAR | Склад Пива | приход | 5 | Мельник | Склад Пива | расход | 1 | Мельник | Склад Пива | приход | 7 | Клинское | Склад Водки | приход | 3 | Путинка | Склад Водки | приход | 1 | Топаз |
|
PRIVIL_USER_ON_BE
USER | BE | Толян | Склад Пива | Толян | Склад Водки | Колян | Склад Водки |
|
PRIVIL_USER_ON_OPER
USER | OPER | Толян | Приход | Колян | Приход | Колян | Расход |
|
Select o.BE,o.OPER,o.QTY,o.TOVAR
from ORDERS O,PRIVIL_USER_ON_BE B, PRIVIL_USER_ON_OPER P
where B.user = GET_USER()
and P.user = GET_USER()
and O.BE=B.BE and O.OPER = P.OPER
если смотрит колян, то он увидит только
BE | OPER | QTY | TOVAR | Склад Водки | приход | 3 | Путинка | Склад Водки | приход | 1 | Топаз |
|
если смотрит Толян, то он увидит только
BE | OPER | QTY | TOVAR | Склад Пива | приход | 5 | Мельник | Склад Пива | приход | 7 | Клинское | Склад Водки | приход | 3 | Путинка | Склад Водки | приход | 1 | Топаз |
|
Еще можно сделать таблицу с настройками, где для пользователей будут хранится всякие текущие даты, БЕ и т.д., чтобы пользователь при открытии формы возвращался к тем данным на которых закончил работу
fox_student
Дата: 05.12.2006 21:19:57
Barrabas, подход и правда интересный. А можно его как-то совместить с группами? Т.е. у меня 100 штук пользователей и им нужно предоставлять определенные права на некоторые таблицы, формы, отчеты и т.д. Если добавить таблицу: Пользователь,Роль и поставить роли: ввод, просмотр, например, а потом в Ваши таблицы вместо пользователей поставить роли, то получим, что каждый пользователь видит только те данные в таблице, на которые у его Роли есть разрешения на просмотр?
Select o.BE,o.OPER,o.QTY,o.TOVAR
from ORDERS O,PRIVIL_USER_ON_BE B, PRIVIL_USER_ON_OPER P, TBL_GROUPS_USERS G
where
G.group = GET_USER()
and B.group=G.group
and P.group=G.group
and O.BE=B.BE and O.OPER = P.OPER
Так?
barrabas
Дата: 05.12.2006 22:14:53
Это был пример.
Конечно нужно делать группы и включать в них пользователей