По Role подскажите, плиз
-
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
По Role подскажите, плиз
Что-то я не понял - вот есть у меня пользователь, есть роль, мне же надо явно указать что данный пользователь ИМЕЕТ ПРАВО подключения с этой ролью? А допустим забыл я это сделать, при попытке подключения этого пользователя с этой ролью, разве ошибка не должна возникать? А не возникает... Всё гладко проходит. Я так и не понял что в этом случае происходит? Пользователь просто под своим именем подключается, так же как если бы он вообще роль при коннекте не указал?
-
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
Гм... Вроде разобрался. Действительно не ругалась прога просто потому, что ничего не открывалось - никаких таблиц
А как только попытался открыть таблицу на которую у пользователя прав нет, а у роли есть, тут и получил ошибку...
Хотя странно... По идее ведь ошибка должна возникать при попытке логина с незаданной пользователю ролью? Как считаете?

Хотя странно... По идее ведь ошибка должна возникать при попытке логина с незаданной пользователю ролью? Как считаете?
да тут и считать нехрен, достаточно прочитатьПо идее ведь ошибка должна возникать при попытке логина с незаданной пользователю ролью? Как считаете?
www.ibase.ru/devinfo/sqlroles.htm
или описание ролей в доке. тем более, что роли в IB еще с версии 5.0.
-
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
Перечитал всё по ролям. Нигде явно не указывается что при попытке юзера подключиться с указанием роли, которая ему не была грантована, не должно возникать ошибки... ИМХО, как-то не очень очевидно. Вот скажем, DBA ревокнул у этого юзера данную роль. А юзер, получается будет логиниться как обычно, указывать роль, и чесать репу - почему не получается проапдейтить/удалить скажем... Ведь при логине он никакого сообщения не получал!!! А просто втихаря залогинился как если бы без указания роли...kdv писал(а):да тут и считать нехрен, достаточно прочитатьПо идее ведь ошибка должна возникать при попытке логина с незаданной пользователю ролью? Как считаете?
www.ibase.ru/devinfo/sqlroles.htm
или описание ролей в доке. тем более, что роли в IB еще с версии 5.0.
-
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
Только он-то об этом не знает! Хорошо если у него без роли вообще прав никаких, даже на select - тогда он при попытке первый же датасет отлуп получит... А если разница только в 2-3 табличках на которые у юзера нет INSERT и DELETE а у роли есть? Человек будет работать в системе некоторое время как бы и успешно, а потом откуда ни возьмись появляется... ошибачга!!kdv писал(а):а где написано, что ошибка должна возникать?не должно возникать ошибки...
ну и нормально. роль отобрана, юзер прав роли лишился.!!! А просто втихаря залогинился как если бы без указания роли...
"Предупреждать надо!" ©
ну а ошибку то зачем ? ошибок быть не долно, ручками проверяй и будет тебе счастье, после подключения проверяешь
и если не соответсвует предупреждаешь юзвера
Код: Выделить всё
select current_role from rdb$database
-
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
Ну я и не имел в виду ему технческие сообщения выдавать об отсутствии гранта на рольMerlin писал(а):Щазз, только шнурки отпарим. В общем случае пользователь даже слова "роль" знать не должен, чтоб не хитрил и не пытался лазать мимо приложения. Не получается - и всё. Почему - потому что нех.Kotъ-Begemotъ писал(а): "Предупреждать надо!" ©

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



-
- Сообщения: 250
- Зарегистрирован: 25 июл 2007, 21:33
У меня так и сделано. У Public доступ на SELECT к единственной таблице - таблице пользователей, поскольку мне надо кое-что оттуда вытаскивать... А уж когда юзер найден в этой таблице, и сделаны необходимые дополнительные проверки, он и коннектится с нужной ролью... Вопрос возник потому, что непонятно откуда возникла ошибка, а анализ показал, что я просто забыл для одного юзера грантовать эту роль... В результате логин проходил нормально, но при попытке открыть рабочие таблицы возникала ошибка, так как без роли у юзера нет прав даже на SELET... Теперь придётся вводить дополнительную проверку на CURRENT_ROLE чтобы гарантировать, что всё прошло как надо... Мало ли.Vit писал(а):Ну так и сделай чтоб у юзера без роли прав не было даже на Select, а раздачу прав осуществлять на уровне ролей, соответственно все permissions на объекты базы присваивать не пользователям а ролям. Если есть права и у пользователей и у ролей то ИМХО это неправильно построенная система безопасности. Оправдано присваивать права пользователю, а не роли, только если под этой ролью предполагается всегда только один пользователь и лень задавать для него отдельную роль. Например, пользователь IB_Bashi![]()
![]()
.