powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Права пользователей (Row Level) & View
25 сообщений из 41, страница 1 из 2
Права пользователей (Row Level) & View
    #34201131
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача:
Есть база данных состоящая из трех таблиц – счет(account), хоз. операция, пользователь(users)
Нужно ограничить доступ пользователю или группе пользователей к части данных таблиц. Например, пользователь может видеть определенный список счетов, и может видеть перечень операций связанных с ними за определенный период времени(данные за прошлый месяц ему видеть нельзя).

Для задания таких условий потребуются такие таблички:
Пользователь-Счет(user_account), Пользователь-Разрешенный интервал дат для работы(user_period)

Вопрос: как реализовать такие ограничения на Informix 10?
Как мне кажется было бы удобно все это реализовать на View
Код: plaintext
1.
2.
3.
4.
5.
  create view  useraccount as
      select column1, column2, ….
         from account, user_account
         where ……
                    and date >= ….(значения из user_period)
                    and user_name =   USER_NAME 

и вот в этом месте у меня проблема, как задать этот самый USER_NAME? Заводить кучу informix пользователей и пользоваться во view selecta функцией Informix USER мне кажется неудобно, поскольку хочется чтобы пользователи системы могли сами создавать других пользователей и раздавать привилегии. В create view использовать темповую табличку, в которой можно было бы хранить имя текщего пользователя – нельзя.

Я что то не понимаю или в Informix никак не получится организовать row level security пользователей на основе view?
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34203644
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня пользователи сами регистрируют пользователей и права им раздают.
Причем они не DBA.
Пользуются хранимой процедурой, написанной с использованием Exec BladeLet.
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34204177
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И это правильное решение? Как это на безопасности скажется? Можно пример из нескольких строчек как добавляют пользователя, если не трудно?
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34204937
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создаем две процедуры:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE login(user, pass)
   DEFINE GLOBAL loggeduser char default '';
   
   Проверяем пользователя/пароль, если неправильно валим эксепшин, если правильно Let loggeduser =user
END PROCEDURE;


CREATE PROCEDURE getusername returning char
   DEFINE GLOBAL loggeduser char default '';
   если loggeduser  = '' валим эксепшин иначе return loggeduser 
END PROCEDURE;

Права на выполнение даем connect.
Пользоваться так:
Код: plaintext
1.
2.
create view ...
 and date >= ….(значения из user_period)
                    and user_name =  getusername()
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34204950
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так намного красивее. спасибо!
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34205004
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис
Права на выполнение даем connect.
to public конечно.
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34206376
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaFИ это правильное решение? Как это на безопасности скажется? Можно пример из нескольких строчек как добавляют пользователя, если не трудно?
Это было осознанное решение - делегировать пользователям функцию раздачи прав. Вы разве не этого же хотите?
Почему оно должно жутким образом сказаться на безопасности?
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34206557
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
второе решение мне нравится больше потому только, что пользователи создают других пользователей и раздают привилегии на уровне приложения, а не Informix'а. Мне кажется такой вариант более гибким.
К тому же использовать динамический SQL мне не нравится (не знаю почему), я никогда его не использовал и не знаю как все это будет работать :)
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34206632
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местные гуру утверждают что ходить в бд одним пользователем неправильно, что надо пользоваться системой прав встроенной в субд.

И то что вы хотите можно добится решением, которое предлагает Таня, т.е. она все правильно говорит.
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34206683
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а где они это говорят и по какому поводу, я не нашел. можно ссылочку. Или обяъснение вкратце - почему. Если не затруднит.
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34206742
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaFа где они это говорят и по какому поводу, я не нашел. можно ссылочку. Или обяъснение вкратце - почему. Если не затруднит.Местные в смысле sql.ruшные в оракловых и делфийных конференциях.
Обяснение простое вы ошибетесь при программировании и однажды пользователи увидят или удалят то что нельзя, ну и еще например админ будет видеть нормальные логины onstat -u
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34206870
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТанУ меня пользователи сами регистрируют пользователей и права им раздают.
Причем они не DBA.
Пользуются хранимой процедурой, написанной с использованием Exec BladeLet.

а можно текст этой процедуры или это секрет?
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34207228
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaFвторое решение мне нравится больше потому только, что пользователи создают других пользователей и раздают привилегии на уровне приложения, а не Informix'а. Мне кажется такой вариант более гибким.
и менее страшным?
А на самом деле пользователи получат одинаковые привилегии, что в одном случае, что в другом.
И пользоваться ими будут через ваше приложение.
Или вы хотите застраховаться на случай применения пользователями eSQLEditor?
SashaFК тому же использовать динамический SQL мне не нравится (не знаю почему), я никогда его не использовал и не знаю как все это будет работать :)
да, тут не поспоришь
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34207242
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaF ТанУ меня пользователи сами регистрируют пользователей и права им раздают.
Причем они не DBA.
Пользуются хранимой процедурой, написанной с использованием Exec BladeLet.

а можно текст этой процедуры или это секрет?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create procedure dba_grant_role (who nchar( 32 ), what nchar( 32 ))
define res lvarchar;
   if lower(what) = 'connect' then 
      call exec('grant connect to '||who) returning res;
   else 
      call exec('grant default role '||what||' to '||who) returning res;
   end if;
end procedure;                                      
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34207574
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извините за занудство, а как пользователя из хр. процедуры создать? я хотел текст вот этой процедуры :)
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34208085
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaFизвините за занудство, а как пользователя из хр. процедуры создать? я хотел текст вот этой процедуры :)это она и есть
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34208880
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaFизвините за занудство, а как пользователя из хр. процедуры создать? я хотел текст вот этой процедуры :)Пользователя в операционке? Можно из хранимой процедуры вызвать шелскрипт ос, а на скрипт суидный бит, и владельцем рута.
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34208953
Журавлев ДенисМестные гуру утверждают что ходить в бд одним пользователем неправильно, что надо пользоваться системой прав встроенной в субд.

Ну вот я расскажу, к чему приводит заведение логинов в базу для каждого пользователя. Работал я как-то до дефолта в Инкомбанке. Достаточно серьезный был тогда банк. И делали мы новую систему для центра международных расчетов. Был у нас свой сервер информикса в проекте и доступ к еще одному на 12-процессорном сане (если память не изменяет) для отладки. Коннектюсь к своей базе, читаю из sysmaster-а список баз и пользователей, а их там многие десятки пользователей. Среди такого количества попался логин с таким же пасом подходящим к одной интересной базе (может слепок лежал с действующе) и узнал я зарплату начальника, его любимца лентяя и еще много интересного :). Когда много пользователей, трудно уследить за пасами.
С тех пор у меня пользователи в сестеме имеют права только на исполнение хранимых процедур, да и то не всех. А пользаватель для всех работающих с системой (простых юзеров я имею в виду) один. А клиент использует виндовую верификацию и передает данные иницилизирующей хранимой процедуре...
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34209378
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ФедоренкоНу вот я расскажу, к чему приводит заведение логинов в базу для каждого пользователя. Работал я
Это все частные случаи. В среднем все не так. Например в оракле год назад нашли баг: пользователь имеющий право на селект таблицы может удалять и апдейтить таблицу, баг во всех версиях оракла, его пока не заткнули. И что? Какой вывод можно сделать? Что встроеной в субд системой авторизации пользоватся не надо?
Я давно не встречал операционок позволяющих совпадение логина и пароля, или пользователь был рут? Это вообще административная проблема.

Александр ФедоренкоС тех пор у меня пользователи в сестеме имеют права только на исполнение хранимых процедур, да и то не всех. А пользаватель для всех работающих с системой (простых юзеров я имею в виду) один. А клиент использует виндовую верификацию и передает данные иницилизирующей хранимой процедуре...Что изменилось? Пароли и логины не совпадают? Они перестали записывать пароли на бумажках и класть их под клавиатуру? Логины имеющиеся в домене трудно узнать?

Я тоже делал n-tier системы которые ходят в бд одним пользователем, потому что очень удобно и красиво хранить пользователей, права и роли в собственной таблице, но я осознаю насколько это опасно и почему в общем случае это плохо. Например в предложенной мною схеме есть дыра, для пользователей с ролью resource, но я осознаю это, а мог бы просто не заметить.


Александр ФедоренкоА клиент использует виндовую верификацию и передает данные иницилизирующей хранимой процедуре...А что он передает? Или в смысле хранимая процедура это UDF проверяющая в домене?
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34209482
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ФедоренкоКоннектюсь к своей базе, читаю из sysmaster-а список баз и пользователей, а их там многие десятки пользователей. Среди такого количества попался логин с таким же пасом подходящим к одной интересной базе
это конечно все очень страшно, но давайте поподробнее по пунктам, а то не очень понятно.
1. Вы к своей базе коннектитесь или все-таки к sysmaster?
2. Если это sysmaster, то где там список пользователей? Я ни разу не видела
3. Я видела списки пользователей в таблице sysusers. Но паролей там нет. Как вы догадались, что пароль у кого-то куда-то подходящий?
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34209708
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТанКак вы догадались, что пароль у кого-то куда-то подходящий?
Думаю, что при наличии БОЛЬШОГО кол-ва пользователей и отсутствии НОРМАЛЬНОЙ политики безопасности просто-напросто оправдалось предположение, что кто-то "не парится" и логинится с паролем, равным логину...

Как писал Том - "срочно меняйте АБД" :)
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34210100
SashaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тан SashaFизвините за занудство, а как пользователя из хр. процедуры создать? я хотел текст вот этой процедуры :)это она и есть
я вас не понимаю. grant connect to user_name можно дать только пользователю, который уже существует в ОС и у него уже есть заведенный пароль. Каким образом ваши пользователи создают новых пользователей, у вас из программы (х. пр.) вызывается шелскрипт?
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34210195
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaFя вас не понимаю. grant connect to user_name можно дать только пользователю, который уже существует в ОС и у него уже есть заведенный пароль. Каким образом ваши пользователи создают новых пользователей, у вас из программы (х. пр.) вызывается шелскрипт?
1. grant connect to user_name можно дать кому угодно, никакой связи с наличием\отсутствием пользователя в ОС здесь нет.
2. Мои пользователи не создают пользователя в операционке, они создают их в базе и раздают им права в базе. Хотите конкретный ответ - задайте конкретный вопрос.
3. Если вдруг (все в жизни бывает) вы используете ОС Windows, и у вас есть домен (так тоже может быть), то вам нет никакой нужды создавать пользователя в операционке.
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34210309
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев ДенисЭто все частные случаи. В среднем все не так. Например в оракле год назад нашли баг: пользователь имеющий право на селект таблицы может удалять и апдейтить таблицу, баг во всех версиях оракла, его пока не заткнули. И что? Какой вывод можно сделать? Что встроеной в субд системой авторизации пользоватся не надо?
Как ни странно, но в серьезных системах именно так и поступают (или поступали :))
Для большинства случаев , конечно, достаточно встроенной в СУБД, но они не обладают теми гибкими и мощными возможностями, которые могут понадобиться, когда к вопросу безопасности подходят очень строго.

Журавлев Денис
Я давно не встречал операционок позволяющих совпадение логина и пароля, или пользователь был рут?
Как, Денис, ты уже так давно не видел всеми любимой Windows ? :))
На половине инстансов (при начинающих админах) можно не задумываясь ввести пароль для пользователя informix...
...
Рейтинг: 0 / 0
Права пользователей (Row Level) & View
    #34210338
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaF Тан SashaFизвините за занудство, а как пользователя из хр. процедуры создать? я хотел текст вот этой процедуры :)это она и есть
я вас не понимаю. grant connect to user_name можно дать только пользователю, который уже существует в ОС и у него уже есть заведенный пароль. Каким образом ваши пользователи создают новых пользователей, у вас из программы (х. пр.) вызывается шелскрипт?
Для таких целей обычно делается сервер приложений (в котором делается своя гибкая система прав и ограничений на доступ к информации в БД), а прямой доступ к БД просто закрыт.
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Informix [игнор отключен] [закрыт для гостей] / Права пользователей (Row Level) & View
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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