Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / как динамически менять права на просмотр таблички / 16 сообщений из 16, страница 1 из 1
28.05.2008, 18:08
    #35341088
jeka2201
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
Приветствую вас, о великие гуру информикса :о)
тут такое дело: есть крупная БД, в ней куча таблиц, много разный ролей, сотня пользователей и все такое.. каждый пользователь имеет свои определенные полномочия работы с БД, все это реализованно на уровне ролей.
и вот встала задача динамически на протяжении открытой сессии изменять полномочия пользователя во время выполнения процедур или построения отчетов в программулине. а постоянно давать права пользователю на эту табличку нельзя
например: есть пользователь user1, который не имеет доступ к табличке table1, но есть работа, которую этот пользователь должен выполнить и она предусматривает обращение к этой табличке table1. есть также роль role1, которая дает право выборки из этой таблицы.
пробовал перед выборкой вставить set role role1 - ругается, говорит " Error (-19805): No privilege to set to the role."

подскажите, как это побороть? :о(
...
Рейтинг: 0 / 0
28.05.2008, 18:41
    #35341191
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
jeka2201подскажите, как это побороть? :о(
Только упорным трудом и чтением документации.
Для начала, чтобы можно было дать ссылку на нужную книгу, неплохо бы привести точную версию своего сервера, а еще лучше,
Перед тем, как задать вопрос в этом форуме, прочтите здесь
http://www.sql.ru/forum/actualthread.aspx?tid=229806
...
Рейтинг: 0 / 0
29.05.2008, 08:30
    #35341862
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
jeka2201Error (-19805): No privilege to set to the role."

подскажите, как это побороть? :о(
grant role1 to user1

Сразу скажу: я нифига не понял.
...
Рейтинг: 0 / 0
29.05.2008, 09:42
    #35341966
knuckle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
Журавлев Денис
grant role1 to user1


Да, но grant может раздавать DBA, а он хочет чтоб процедура или скрипт запускалась от имени пользователя user1.

Т.е., в моем понимании это должно выглядить так:

1) DBA:
GRANT role1 TO user1

2) user1:
SET ROLE role1
выполнение скрипта или чего-то там

3) DBA:
REVOKE role1 FROM user1

Получается, что программулина должна иметь два подключения : от пользователя с правами DBA и от пользователя с правами user1.
...
Рейтинг: 0 / 0
29.05.2008, 11:01
    #35342257
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
knuckleДа, но grant может раздавать DBA, а он хочет чтоб процедура или скрипт запускалась от имени пользователя user1.

Т.е., в моем понимании это должно выглядить так:

Получается, что программулина должна иметь два подключения : от пользователя с правами DBA и от пользователя с правами user1.
неправильно вы все понимаете, рассказывайте вам что нужно, а не то что вы хотите сделать.

Вы хотите чтобы у пользователя были права на чтение таблицы с период времени с 7 утра до 5 вечера? А в остальное время не было? Я правильно понял?
...
Рейтинг: 0 / 0
29.05.2008, 14:55
    #35343328
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
jeka2201Приветствую вас, о великие гуру информикса :о)
тут такое дело: есть крупная БД, в ней куча таблиц, много разный ролей, сотня пользователей и все такое.. каждый пользователь имеет свои определенные полномочия работы с БД, все это реализованно на уровне ролей.
и вот встала задача динамически на протяжении открытой сессии изменять полномочия пользователя во время выполнения процедур или построения отчетов в программулине. а постоянно давать права пользователю на эту табличку нельзя
например: есть пользователь user1, который не имеет доступ к табличке table1, но есть работа, которую этот пользователь должен выполнить и она предусматривает обращение к этой табличке table1. есть также роль role1, которая дает право выборки из этой таблицы.
пробовал перед выборкой вставить set role role1 - ругается, говорит " Error (-19805): No privilege to set to the role."

подскажите, как это побороть? :о(
написать хранимую процедуру, которая будет делать то, что нужно и дать пользователю права на выполнение процедуры
...
Рейтинг: 0 / 0
29.05.2008, 15:04
    #35343364
knuckle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
Журавлев Денис knuckleДа, но grant может раздавать DBA, а он хочет чтоб процедура или скрипт запускалась от имени пользователя user1.

Т.е., в моем понимании это должно выглядить так:

Получается, что программулина должна иметь два подключения : от пользователя с правами DBA и от пользователя с правами user1.
неправильно вы все понимаете, рассказывайте вам что нужно, а не то что вы хотите сделать.

Вы хотите чтобы у пользователя были права на чтение таблицы с период времени с 7 утра до 5 вечера? А в остальное время не было? Я правильно понял?

Так вопрос то не мой =)
...
Рейтинг: 0 / 0
29.05.2008, 16:38
    #35343729
jeka2201
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
товарисчи, пасиба, не партесь.
я уже разобрался.. ниче не получится.
все верно, права раздает DBA, а скрипт выполняется в пользовательской сесии, потому переопределить полномочия просто не хватает привелегий :о(
...
Рейтинг: 0 / 0
29.05.2008, 16:50
    #35343783
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
гыгы


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create dba procedure login(usr char(18), pass char(10)) RETURNING char(45)
define srn char(45);
  let srn=null;
  select u_name into srn From  us_user_ref where inf_id=usr and u_password=pass; -- идентификация
  if srn is not null   -- авторизация
  then set role role1; -- персонификация
  else raise exception -952,0,"Неверный пароль";
  end if;
return srn;
end procedure;

grant execute on login to public;

Select  * From mz_pricebm_ref
Error -272. No SELECT permission.

execute procedure login("den", "")
Error -952. User's password is not correct for the database server. Неверный пароль.
Select  * From mz_pricebm_ref
Error -272. No SELECT permission.

execute procedure login("den", " denden")
Successful complete. Журавлев Денис
Select  * From mz_pricebm_ref
Successful complete.
...
Рейтинг: 0 / 0
29.05.2008, 18:43
    #35344229
knuckle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
Журавлев Денисгыгы


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create dba procedure login(usr char(18), pass char(10)) RETURNING char(45)
define srn char(45);
  let srn=null;
  select u_name into srn From  us_user_ref where inf_id=usr and u_password=pass; -- идентификация
  if srn is not null   -- авторизация
  then set role role1; -- персонификация
  else raise exception -952,0,"Неверный пароль";
  end if;
return srn;
end procedure;

grant execute on login to public;


Так а grant кто будет делать?
Если его DBA заранее даст, то получется что пользователь может в любое время приконектится, сделать себе set role и ковырять табличку, что по заданию недопустимо =))
...
Рейтинг: 0 / 0
29.05.2008, 18:48
    #35344242
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
knuckle
Так а grant кто будет делать?grant role? А не надо. Вам проверить слабо?

knuckleЕсли его DBA заранее даст, то получется что пользователь может в любое время приконектится, сделать себе set role и ковырять табличку, что по заданию недопустимо =))
Изначальная задача мне непонятна. От чего зависит может пользователь читать или не может? От температуры на марсе?
...
Рейтинг: 0 / 0
29.05.2008, 19:19
    #35344292
knuckle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
ОК. Ну тогда с темже успехом он может login делать и ковырять табличку.
Просто не понятно, что за работу должен делать данный пользователь и в чём он работает.


Ну автор темы вроде уже не считает вопрос актуальным =)
...
Рейтинг: 0 / 0
29.05.2008, 20:10
    #35344368
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
knuckleНу автор темы вроде уже не считает вопрос актуальным =)
Автор темы, похоже, не совсем в теме :)
Денис ведь прав, повторяя старую истину - "рассказывайте, что вам нужно, а не то, что вы хотите сделать".
...
Рейтинг: 0 / 0
29.05.2008, 21:19
    #35344451
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
vasilisАвтор темы, похоже, не совсем в теме :)
Денис ведь прав, повторяя старую истину - "рассказывайте, что вам нужно, а не то, что вы хотите сделать".Ко мне постоянно приходят люди и рассказывают, что шли по лесу, свернули направо, потом налево, потом снова направо, а там тупик, и что нам теперь делать? Долго разбираемся и в конце концов выясняем что в не надо было в лес заходить.
...
Рейтинг: 0 / 0
29.05.2008, 22:30
    #35344508
a.spirin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
jeka2201тут такое дело: есть крупная БД, в ней куча таблиц, много разный ролей, сотня пользователей и все такое.. каждый пользователь имеет свои определенные полномочия работы с БД, все это реализованно на уровне ролей.
и вот встала задача динамически на протяжении открытой сессии изменять полномочия пользователя во время выполнения процедур или построения отчетов в программулине. а постоянно давать права пользователю на эту табличку нельзя
например: есть пользователь user1, который не имеет доступ к табличке table1, но есть работа, которую этот пользователь должен выполнить и она предусматривает обращение к этой табличке table1. есть также роль role1, которая дает право выборки из этой таблицы.
пробовал перед выборкой вставить set role role1 - ругается, говорит " Error (-19805): No privilege to set to the role."

подскажите, как это побороть? :о( Не так-то легко понять ваши нужды; надеюсь, я отвечаю на правильный вопрос :-)
Динамически, в течение открытой сессии, можно изменить права изменением роли; права на обе роли должны быть даны DBA'ем заблаговременно; команду SET ROLE пользователь может выполнить сам, но только не внутри транзакции. Приведённая Вами ошибка говорит, что права пользователю на роль даны не были.
Альтернативный - хороший - вариант - это написать хранимую процедуру, которая делает требуемую работу (в том числе получает доступ к таблице, на которую у пользователя нет прав), и дать пользователю права на неё, а на таблицу - не давать. Это может показаться необычным, но это работает.
...
Рейтинг: 0 / 0
31.05.2008, 11:53
    #35347023
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как динамически менять права на просмотр таблички
a.spirinЭто может показаться необычным, но это работает.
А в чем необычность ? Это стандартный прием , описанный в документации и литературе.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / как динамически менять права на просмотр таблички / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]