Страница 1 из 1

Роли и пользователь

Добавлено: 05 авг 2007, 13:43
Anark1
У меня есть 1 пользователь (помимо PUBLIC и SYSDBA). Клиент соединяется с БД через этого пользователя, но для каждого клиента этому пользователю придаются разные роли. У разных ролей соответственно разные полномочия.
Вопрос такой.
Я не дал абсолютно никаких прав этому пользователю, рассчитывая на то, что права доступа будут определять роли. Но этого не произошло. Как разобраться с ситуацией?
Три роли. У первой - все операции над всеми таблицами, у второй - SELECT надо всеми таблицами, у третьей - SELECT над всеми и INSERT над двумя.

Re: Роли и пользователь

Добавлено: 05 авг 2007, 17:31
Dimitry Sibiryakov
Anark1 писал(а):Я не дал абсолютно никаких прав этому пользователю, рассчитывая на то, что права доступа будут определять роли. Но этого не произошло. Как разобраться с ситуацией?
Для начала - разобраться что же на самом деле произошло. Потом выяснить где теория разошлась с практикой. Ну и потом поправить либо теорию либо практику.

Добавлено: 05 авг 2007, 17:55
Anark1
Я вот не понимаю. Это сложно дать нормальный ответ, все объяснить? Меня такие люди добивают.<< Я знаю, но не скажу.>>

Добавлено: 06 авг 2007, 09:10
AnryGTR
2 Anark1:
поосторожнее со своими репликами!
Просто вопрос надо ставить понятно и тогда обязательно получишь ответ, мне например - данный форум не раз помогал, за что и спасибо всем кто ответил и кто его создал! 8)

Re: Роли и пользователь

Добавлено: 06 авг 2007, 09:50
Slavik
Anark1 писал(а):Я не дал абсолютно никаких прав этому пользователю, рассчитывая на то, что права доступа будут определять роли. Но этого не произошло. Как разобраться с ситуацией?
Тупой вопрос: Клиент точно указывает роль при коннекте? При коннекте под этим пользователем с ролью в IBExpert'е тоже нет прав?

Добавлено: 06 авг 2007, 13:49
Anark1
1. Работаю с BlazeTop
2. Оболочку пишу в C++ Builder

Код: Выделить всё

Main->IBDatabase1->Params->Append("user_name=ESTAB");
        Main->IBDatabase1->Params->Append("password=estab");
        Main->IBDatabase1->Params->Append("sql_role_name="+ROLE);
        Main->IBDatabase1->Params->Append("lc_ctype=WIN1251");
        Main->IBDatabase1->Connected = true;
ROLE - "LOW"\"MED"\"HIGH"
Коннект происходит, ошибок нет. Единственное что можно еще сделать - это половить экспешины, хотя мне не понятно в чем ошибка.

P.S.
А то что Dimitry Sibiryakov посоветовал мне почитать тоерию, а затем её подправить, это вообще весело. Где мне теорию подправить? :lol:
А начитался я достаточно.

Добавлено: 06 авг 2007, 15:16
Slavik
Anark1 писал(а):1. Работаю с BlazeTop
Какая разница? Или он не позволяет приконнектиться с ролью?
Anark1 писал(а):А начитался я достаточно.
Не внимательно читаешь. Повторюсь. В IBExpert'е (или BlazeTop'е) при коннекте под пользователем "ESTAB" с ролями "LOW""MED""HIGH" тоже нет прав на на заданные действия с таблицами базы? Под отладчиком значение переменной ROLE и сформированного Params перед выполнением строки:

Код: Выделить всё

Main->IBDatabase1->Connected = true;
cмотрел?

Добавлено: 06 авг 2007, 16:26
Anark1
1. Подскажи SQL Script для соединения с БД под ролью.
2. У переменной ROLE нужное значение.
3. В дебаге у IBDatabase->Params->Strings значение Getter:Get, Setter:Put. Очевидно, что это что то не то.

Добавлено: 06 авг 2007, 18:25
Anark1
Посмотрел
IBDataBase->Params->Text
Все верно.

Добавлено: 06 авг 2007, 18:37
Merlin
Anark1 писал(а): 2. У переменной ROLE нужное значение.
Поди в смысле - все три роли махом? Или таки одна, но у пользователя нет на неё прав?

Добавлено: 06 авг 2007, 20:10
Anark1
Нет, или "LOW", или "MED", или "HIGH".
Что значит "у пользователя нет прав на роль" ?

Добавлено: 06 авг 2007, 20:17
Merlin
Anark1 писал(а): Что значит "у пользователя нет прав на роль" ?
Это значит невнимательное чтение доки. Про то, что пользователь может входить только с теми ролями, кои ему грантованы.

Добавлено: 06 авг 2007, 21:14
Anark1
Merlin,
огромное спасибо, моё упущение.
Странно только, что ошибки никакой не выскакивает в такой ситуации.

Добавлено: 06 авг 2007, 22:11
Merlin
Anark1 писал(а): Странно только, что ошибки никакой не выскакивает в такой ситуации.
Не, не странно. Логика такая - чем меньше пользователь приложения знает о системе доступа, тем лучше. Ему вообще не надо знать, что существуют какие-то там роли. Скажем, полезет сильно умный интерактивным инструментом общего назначения что-нить курочить, логин-пароль ввёл, а всё равно ему облом и почему - не сказано, дабы не направлять творческую мысль.

Добавлено: 07 авг 2007, 15:45
Dimitry Sibiryakov
Все было бы проще, если бы аффтар догадался посмотреть на результаты SELECT CURRENT_ROLE FROM RDB$DATABASE...

Добавлено: 09 авг 2007, 08:04
kdv
все было бы проще, если бы автор внимательно читал
www.ibase.ru/devinfo/sqlroles.htm

а то вроде как читал, а получается что нет.