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

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

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

Сразу скажу: я нифига не понял.
...
Рейтинг: 0 / 0
как динамически менять права на просмотр таблички
    #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
как динамически менять права на просмотр таблички
    #35342257
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
knuckleДа, но grant может раздавать DBA, а он хочет чтоб процедура или скрипт запускалась от имени пользователя user1.

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

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

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

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

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

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

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

Так вопрос то не мой =)
...
Рейтинг: 0 / 0
как динамически менять права на просмотр таблички
    #35343729
jeka2201
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
товарисчи, пасиба, не партесь.
я уже разобрался.. ниче не получится.
все верно, права раздает DBA, а скрипт выполняется в пользовательской сесии, потому переопределить полномочия просто не хватает привелегий :о(
...
Рейтинг: 0 / 0
как динамически менять права на просмотр таблички
    #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
как динамически менять права на просмотр таблички
    #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
как динамически менять права на просмотр таблички
    #35344242
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
knuckle
Так а grant кто будет делать?grant role? А не надо. Вам проверить слабо?

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


Ну автор темы вроде уже не считает вопрос актуальным =)
...
Рейтинг: 0 / 0
как динамически менять права на просмотр таблички
    #35344368
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
knuckleНу автор темы вроде уже не считает вопрос актуальным =)
Автор темы, похоже, не совсем в теме :)
Денис ведь прав, повторяя старую истину - "рассказывайте, что вам нужно, а не то, что вы хотите сделать".
...
Рейтинг: 0 / 0
как динамически менять права на просмотр таблички
    #35344451
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisАвтор темы, похоже, не совсем в теме :)
Денис ведь прав, повторяя старую истину - "рассказывайте, что вам нужно, а не то, что вы хотите сделать".Ко мне постоянно приходят люди и рассказывают, что шли по лесу, свернули направо, потом налево, потом снова направо, а там тупик, и что нам теперь делать? Долго разбираемся и в конце концов выясняем что в не надо было в лес заходить.
...
Рейтинг: 0 / 0
как динамически менять права на просмотр таблички
    #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
как динамически менять права на просмотр таблички
    #35347023
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a.spirinЭто может показаться необычным, но это работает.
А в чем необычность ? Это стандартный прием , описанный в документации и литературе.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / как динамически менять права на просмотр таблички
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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