Страница 1 из 1
По Role подскажите, плиз
Добавлено: 12 фев 2008, 19:39
Kotъ-Begemotъ
Что-то я не понял - вот есть у меня пользователь, есть роль, мне же надо явно указать что данный пользователь ИМЕЕТ ПРАВО подключения с этой ролью? А допустим забыл я это сделать, при попытке подключения этого пользователя с этой ролью, разве ошибка не должна возникать? А не возникает... Всё гладко проходит. Я так и не понял что в этом случае происходит? Пользователь просто под своим именем подключается, так же как если бы он вообще роль при коннекте не указал?
Добавлено: 12 фев 2008, 19:48
Kotъ-Begemotъ
Гм... Вроде разобрался. Действительно не ругалась прога просто потому, что ничего не открывалось - никаких таблиц

А как только попытался открыть таблицу на которую у пользователя прав нет, а у роли есть, тут и получил ошибку...
Хотя странно... По идее ведь ошибка должна возникать при попытке логина с незаданной пользователю ролью? Как считаете?
Добавлено: 13 фев 2008, 00:45
kdv
По идее ведь ошибка должна возникать при попытке логина с незаданной пользователю ролью? Как считаете?
да тут и считать нехрен, достаточно прочитать
www.ibase.ru/devinfo/sqlroles.htm
или описание ролей в доке. тем более, что роли в IB еще с версии 5.0.
Добавлено: 13 фев 2008, 01:47
Kotъ-Begemotъ
kdv писал(а):По идее ведь ошибка должна возникать при попытке логина с незаданной пользователю ролью? Как считаете?
да тут и считать нехрен, достаточно прочитать
www.ibase.ru/devinfo/sqlroles.htm
или описание ролей в доке. тем более, что роли в IB еще с версии 5.0.
Перечитал всё по ролям. Нигде явно не указывается что при попытке юзера подключиться с указанием роли, которая ему не была грантована, не должно возникать ошибки... ИМХО, как-то не очень очевидно. Вот скажем, DBA ревокнул у этого юзера данную роль. А юзер, получается будет логиниться как обычно, указывать роль, и чесать репу - почему не получается проапдейтить/удалить скажем... Ведь при логине он никакого сообщения не получал!!! А просто втихаря залогинился как если бы без указания роли...
Добавлено: 13 фев 2008, 03:35
kdv
не должно возникать ошибки...
а где написано, что ошибка должна возникать?
!!! А просто втихаря залогинился как если бы без указания роли...
ну и нормально. роль отобрана, юзер прав роли лишился.
Добавлено: 13 фев 2008, 03:38
Kotъ-Begemotъ
kdv писал(а):не должно возникать ошибки...
а где написано, что ошибка должна возникать?
!!! А просто втихаря залогинился как если бы без указания роли...
ну и нормально. роль отобрана, юзер прав роли лишился.
Только он-то об этом не знает! Хорошо если у него без роли вообще прав никаких, даже на select - тогда он при попытке первый же датасет отлуп получит... А если разница только в 2-3 табличках на которые у юзера нет INSERT и DELETE а у роли есть? Человек будет работать в системе некоторое время как бы и успешно, а потом откуда ни возьмись появляется... ошибачга!!
"Предупреждать надо!" ©
Добавлено: 13 фев 2008, 10:48
Attid
ну а ошибку то зачем ? ошибок быть не долно, ручками проверяй и будет тебе счастье, после подключения проверяешь
и если не соответсвует предупреждаешь юзвера
Добавлено: 13 фев 2008, 13:14
Merlin
Kotъ-Begemotъ писал(а):
"Предупреждать надо!" ©
Щазз, только шнурки отпарим. В общем случае пользователь даже слова "роль" знать не должен, чтоб не хитрил и не пытался лазать мимо приложения. Не получается - и всё. Почему - потому что нех.
Добавлено: 13 фев 2008, 16:27
Kotъ-Begemotъ
Merlin писал(а):Kotъ-Begemotъ писал(а):
"Предупреждать надо!" ©
Щазз, только шнурки отпарим. В общем случае пользователь даже слова "роль" знать не должен, чтоб не хитрил и не пытался лазать мимо приложения. Не получается - и всё. Почему - потому что нех.
Ну я и не имел в виду ему технческие сообщения выдавать об отсутствии гранта на роль

)) Просто обрабатывать такие ситуации разработчику, имхо, всё равно придётся, а то некрасиво может получиться... В принципе через CURRENT_ROLE попробую...
Добавлено: 16 фев 2008, 18:47
Vit
Kotъ-Begemotъ писал(а):kdv писал(а):не должно возникать ошибки...
а где написано, что ошибка должна возникать?
!!! А просто втихаря залогинился как если бы без указания роли...
ну и нормально. роль отобрана, юзер прав роли лишился.
Только он-то об этом не знает! Хорошо если у него без роли вообще прав никаких, даже на select - тогда он при попытке первый же датасет отлуп получит... А если разница только в 2-3 табличках на которые у юзера нет INSERT и DELETE а у роли есть? Человек будет работать в системе некоторое время как бы и успешно, а потом откуда ни возьмись появляется... ошибачга!!
"Предупреждать надо!" ©
Ну так и сделай чтоб у юзера без роли прав не было даже на Select, а раздачу прав осуществлять на уровне ролей, соответственно все permissions на объекты базы присваивать не пользователям а ролям. Если есть права и у пользователей и у ролей то ИМХО это неправильно построенная система безопасности. Оправдано присваивать права пользователю, а не роли, только если под этой ролью предполагается всегда только один пользователь и лень задавать для него отдельную роль. Например, пользователь IB_Bashi

.
Добавлено: 17 фев 2008, 01:42
Kotъ-Begemotъ
Vit писал(а):Ну так и сделай чтоб у юзера без роли прав не было даже на Select, а раздачу прав осуществлять на уровне ролей, соответственно все permissions на объекты базы присваивать не пользователям а ролям. Если есть права и у пользователей и у ролей то ИМХО это неправильно построенная система безопасности. Оправдано присваивать права пользователю, а не роли, только если под этой ролью предполагается всегда только один пользователь и лень задавать для него отдельную роль. Например, пользователь IB_Bashi

.
У меня так и сделано. У Public доступ на SELECT к единственной таблице - таблице пользователей, поскольку мне надо кое-что оттуда вытаскивать... А уж когда юзер найден в этой таблице, и сделаны необходимые дополнительные проверки, он и коннектится с нужной ролью... Вопрос возник потому, что непонятно откуда возникла ошибка, а анализ показал, что я просто забыл для одного юзера грантовать эту роль... В результате логин проходил нормально, но при попытке открыть рабочие таблицы возникала ошибка, так как без роли у юзера нет прав даже на SELET... Теперь придётся вводить дополнительную проверку на CURRENT_ROLE чтобы гарантировать, что всё прошло как надо... Мало ли.