|
|
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
Вопрос: имеется коннект к ASA, выполненный от имени юзера А. Требуется имперсонировать юзера Б, то есть не переоткрывая коннекта (дабы иметь возможность работать с пулом подключений), выполнять запросы/процедуры так чтобы сервер воспринимал их как выполняемые пользователем Б. Можно ли это сделать и как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 10:27 |
|
||
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял, то хочется что-то выполнить из возможностей DBA, но не имея коннекта DBA? Один из способов: 1) Создаем процедуру PROC_USER_B с хозяином B 2) Даем право исполнения ее юзеру A(тут прийдется озаботиться с недопустимостью несанкционированного вызова процедуры юзером A - способы есть) 3) В процессе работы, в нужном месте(санкционированно) вызываем PROC_USER_B. P.S. Надеюсь, что правильно понял вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 10:42 |
|
||
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
VadimSokhaЕсли я правильно понял, то хочется что-то выполнить из возможностей DBA, но не имея коннекта DBA? Нет. Нужно подконнектиться как A, а потом сделать с этим коннектом нечто чтобы current_user возвращал B, и права на выполнение процедур были как у B. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 11:04 |
|
||
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
По сути нужен аналог SET SESSION AUTHORIZATION который можно выполнить не от DBA и передавать ему пароль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 11:27 |
|
||
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
Vladimir KozlovПо сути нужен аналог SET SESSION AUTHORIZATION который можно выполнить не от DBA и передавать ему пароль.Не только DBA может давать эту команду вообще-то. Любой юзер с правами DBA может делать setuser... Расскажи задачу поподробнее, попробуем подсказать альтернативные пути решения. Лично мне setuser понадобился всего один-единственный раз. Да и то, для грязного хака :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 17:13 |
|
||
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
White OwlНе только DBA может давать эту команду вообще-то. Любой юзер с правами DBA может делать setuser... Расскажи задачу поподробнее, попробуем подсказать альтернативные пути решения. Лично мне setuser понадобился всего один-единственный раз. Да и то, для грязного хака :) Подробнее, задача такова - имеется пул коннекшенов в J2EE сервере (GlassFish, JBoss). Естественно коннекты обезличенные. Хочется при обращении к базе, когда юзер получает коннекшн из пула, проимперсонировать юзера на уровне сервера БД, чтобы использовать встроенные средства безопасности сервера. То есть, юзер, получив коннект из пула, говорит этому коннекту "я Сидоров"; и в дальнейшем при выполнении запроса в этом коннекте сервер выполняет его с пермишенсами Сидорова, и разграничение доступа на уровне строк, и аудин в БД, и т.д - как для Сидорова. Давать же тому юзеру под которым первоначально выполняется коннект (т.е. глассфишу), права ДБА - не хочется. То есть нужно нечто вроде оракловского proxy autentification. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 18:50 |
|
||
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
а..... Ну я примерно в той же ситуации был. Но у меня УЖЕ существовали несколько сотен юзеров в базе с уже существующей довольно навороченной системой секьюрити. Она была расчитана на толстого клиента изначально (и каждый юзер приходил в базу под своим собственным логином) а потом при переходе на web-клиента пришлось сделать враппер с setuser внутри - все cgi/asp логинятся к базе как webuser, потом через setuser переключаются в того кто залогинился на веб-сайт. Но повторюсь, у меня УЖЕ существовала навороченная система секьюрити основанная на том что каждый пользователь имеет свой логин в базу. Решение было простое. Сразу после коннекта делалось переключение юзера и все. Примерно вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. А если система еще только разрабатывается, то я предпочел бы сделать простую табличку web_user_features и в ней перечислять web-логины и features (как это на русском то будет, "функциональные области приложения"?) И читать эту табличку в логинном скрипте веб-сайта. Потом соотвественно показывать/прятать доступные/недоступные features. А в самой базе будет только один единственный юзер (webuser) со всеми правами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 19:25 |
|
||
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
White Owl Но повторюсь, у меня УЖЕ существовала навороченная система секьюрити основанная на том что каждый пользователь имеет свой логин в базу. Аналогично. Просто сейчас к десктопной системе хочется пристыковать J2EE. авторСразу после коннекта делалось переключение юзера и все. Ну, мне нужно не сразу после коннекта а после получения коннекта из пула. Но принцип тот же по идее. автор Код: plaintext 1. 2. Подразумевается что webuser имеет права DBA? авторА если система еще только разрабатывается, то я предпочел бы сделать простую табличку web_user_features и в ней перечислять web-логины и features (как это на русском то будет, "функциональные области приложения"?) И читать эту табличку в логинном скрипте веб-сайта. Потом соотвественно показывать/прятать доступные/недоступные features. А в самой базе будет только один единственный юзер (webuser) со всеми правами. Система эксплуатируется 2,5 года :) И в ней уж очень много завязок на разделение прав доступа на уровне строк, закрученных на current_user :) Но в твоем решении, всё-таки, нужен первоначальный коннект пользователем с правами DBA. Такое решение мне тоже приходило в голову, но хочется первоначального юзера сделать вообще бесправным, и внутри коннекта переаутентифицироваться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 19:58 |
|
||
|
ASA: Изменить пользователя в уже установленном коннекте
|
|||
|---|---|---|---|
|
#18+
Vladimir KozlovПодразумевается что webuser имеет права DBA?Да. Иначе setuser работать не будет. Vladimir KozlovНо в твоем решении, всё-таки, нужен первоначальный коннект пользователем с правами DBA. Такое решение мне тоже приходило в голову, но хочется первоначального юзера сделать вообще бесправным, и внутри коннекта переаутентифицироваться :)Нет, так точно не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2008, 00:11 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35272686&tid=2011611]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
282ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 616ms |

| 0 / 0 |
