powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA: Изменить пользователя в уже установленном коннекте
9 сообщений из 9, страница 1 из 1
ASA: Изменить пользователя в уже установленном коннекте
    #35270422
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос: имеется коннект к ASA, выполненный от имени юзера А. Требуется имперсонировать юзера Б, то есть не переоткрывая коннекта (дабы иметь возможность работать с пулом подключений), выполнять запросы/процедуры так чтобы сервер воспринимал их как выполняемые пользователем Б. Можно ли это сделать и как?
...
Рейтинг: 0 / 0
ASA: Изменить пользователя в уже установленном коннекте
    #35270471
VadimSokha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял, то хочется что-то выполнить из возможностей DBA, но не имея коннекта DBA?
Один из способов:
1) Создаем процедуру PROC_USER_B с хозяином B
2) Даем право исполнения ее юзеру A(тут прийдется озаботиться с недопустимостью
несанкционированного вызова процедуры юзером A - способы есть)
3) В процессе работы, в нужном месте(санкционированно) вызываем PROC_USER_B.

P.S. Надеюсь, что правильно понял вопрос.
...
Рейтинг: 0 / 0
ASA: Изменить пользователя в уже установленном коннекте
    #35270546
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VadimSokhaЕсли я правильно понял, то хочется что-то выполнить из возможностей DBA, но не имея коннекта DBA?

Нет. Нужно подконнектиться как A, а потом сделать с этим коннектом нечто чтобы current_user возвращал B, и права на выполнение процедур были как у B.
...
Рейтинг: 0 / 0
ASA: Изменить пользователя в уже установленном коннекте
    #35270635
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути нужен аналог SET SESSION AUTHORIZATION который можно выполнить не от DBA и передавать ему пароль.
...
Рейтинг: 0 / 0
ASA: Изменить пользователя в уже установленном коннекте
    #35272095
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir KozlovПо сути нужен аналог SET SESSION AUTHORIZATION который можно выполнить не от DBA и передавать ему пароль.Не только DBA может давать эту команду вообще-то. Любой юзер с правами DBA может делать setuser...

Расскажи задачу поподробнее, попробуем подсказать альтернативные пути решения. Лично мне setuser понадобился всего один-единственный раз. Да и то, для грязного хака :)
...
Рейтинг: 0 / 0
ASA: Изменить пользователя в уже установленном коннекте
    #35272382
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНе только DBA может давать эту команду вообще-то. Любой юзер с правами DBA может делать setuser...
Расскажи задачу поподробнее, попробуем подсказать альтернативные пути решения. Лично мне setuser понадобился всего один-единственный раз. Да и то, для грязного хака :)


Подробнее, задача такова - имеется пул коннекшенов в J2EE сервере (GlassFish, JBoss). Естественно коннекты обезличенные. Хочется при обращении к базе, когда юзер получает коннекшн из пула, проимперсонировать юзера на уровне сервера БД, чтобы использовать встроенные средства безопасности сервера. То есть, юзер, получив коннект из пула, говорит этому коннекту "я Сидоров"; и в дальнейшем при выполнении запроса в этом коннекте сервер выполняет его с пермишенсами Сидорова, и разграничение доступа на уровне строк, и аудин в БД, и т.д - как для Сидорова.
Давать же тому юзеру под которым первоначально выполняется коннект (т.е. глассфишу), права ДБА - не хочется.

То есть нужно нечто вроде оракловского proxy autentification.
...
Рейтинг: 0 / 0
ASA: Изменить пользователя в уже установленном коннекте
    #35272451
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а..... Ну я примерно в той же ситуации был. Но у меня УЖЕ существовали несколько сотен юзеров в базе с уже существующей довольно навороченной системой секьюрити. Она была расчитана на толстого клиента изначально (и каждый юзер приходил в базу под своим собственным логином) а потом при переходе на web-клиента пришлось сделать враппер с setuser внутри - все cgi/asp логинятся к базе как webuser, потом через setuser переключаются в того кто залогинился на веб-сайт.

Но повторюсь, у меня УЖЕ существовала навороченная система секьюрити основанная на том что каждый пользователь имеет свой логин в базу. Решение было простое. Сразу после коннекта делалось переключение юзера и все. Примерно вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<script language="vbscript">
<!--
function connect_to_database
     set conn = CreateObect("ADODDB.Connection")
     conn.Open "DSN=web_site;UID=webuser;PWD=webuserpassword"
     conn.Execute "setuser " & session_user
     set connect_to_database = conn
end function
--></script>

А если система еще только разрабатывается, то я предпочел бы сделать простую табличку web_user_features и в ней перечислять web-логины и features (как это на русском то будет, "функциональные области приложения"?) И читать эту табличку в логинном скрипте веб-сайта. Потом соотвественно показывать/прятать доступные/недоступные features. А в самой базе будет только один единственный юзер (webuser) со всеми правами.
...
Рейтинг: 0 / 0
ASA: Изменить пользователя в уже установленном коннекте
    #35272499
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Но повторюсь, у меня УЖЕ существовала навороченная система секьюрити основанная на том что каждый пользователь имеет свой логин в базу.

Аналогично. Просто сейчас к десктопной системе хочется пристыковать J2EE.

авторСразу после коннекта делалось переключение юзера и все.

Ну, мне нужно не сразу после коннекта а после получения коннекта из пула. Но принцип тот же по идее.


автор
Код: plaintext
1.
2.
     conn.Open "DSN=web_site;UID=webuser;PWD=webuserpassword"
     conn.Execute "setuser " & session_user


Подразумевается что webuser имеет права DBA?

авторА если система еще только разрабатывается, то я предпочел бы сделать простую табличку web_user_features и в ней перечислять web-логины и features (как это на русском то будет, "функциональные области приложения"?) И читать эту табличку в логинном скрипте веб-сайта. Потом соотвественно показывать/прятать доступные/недоступные features. А в самой базе будет только один единственный юзер (webuser) со всеми правами.

Система эксплуатируется 2,5 года :) И в ней уж очень много завязок на разделение прав доступа на уровне строк, закрученных на current_user :)

Но в твоем решении, всё-таки, нужен первоначальный коннект пользователем с правами DBA. Такое решение мне тоже приходило в голову, но хочется первоначального юзера сделать вообще бесправным, и внутри коннекта переаутентифицироваться :)
...
Рейтинг: 0 / 0
ASA: Изменить пользователя в уже установленном коннекте
    #35272686
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir KozlovПодразумевается что webuser имеет права DBA?Да. Иначе setuser работать не будет.


Vladimir KozlovНо в твоем решении, всё-таки, нужен первоначальный коннект пользователем с правами DBA. Такое решение мне тоже приходило в голову, но хочется первоначального юзера сделать вообще бесправным, и внутри коннекта переаутентифицироваться :)Нет, так точно не получится.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA: Изменить пользователя в уже установленном коннекте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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