CftClub.ru
Клуб специалистов ЦФТ-Банк

Как в Навигаторе реализовать вызов с правами текущ. польз.?

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> АРМы
Предыдущая тема :: Следующая тема  
Автор Сообщение
mx1234567
Участник со стажем


Вступление в Клуб: 18.11.2010
СообщениеПн Авг 13, 2012 17:11   Как в Навигаторе реализовать вызов с правами текущ. польз.? Ответить с цитатой
Полезность: Нет оценки
Как в Навигаторе реализовать вызов PL/SQL кода с правами текущего пользователя, а не IBS?
Пользователю даны некоторые права, у IBS этих прав нет.
Например, я создаю свой package c AUTHID CURRENT_USER
(как сделать package AUTHID CURRENT_USER через PL Plus я не знаю, видимо никак).
Но дело в том, что:

Вызов из процедуры с правами создателя (Р1), где Р2 - процедура с правами
вызывающего. Например:
procedure p1 is
begin
p2;
end;

Этот вызов разрешается (в смысле имен) в схеме создателя, т.е. в схеме вызывающей
процедуры. Неуточненные имена объектов будут разрешаться в этой схеме, схеме вызывающей процедуры,
а не в схеме текущего зарегистрированного пользователя и не в схеме, где была создана процедура с правами вызывающего.

В нашем примере, владелец Р1 всегда будет "вызывающим" внутри
процедуры Р2. Роли не учитываются, поскольку вызвана процедура с правами
создателя. В момент входа в процедуру с правами создателя все роли
отключаются и не учитываются до выхода из этой процедуры.

Т.е. если был вызов процедуры без AUTHID CURRENT_USER, то при вызове в ней, (через динамический SQL или напрямую)
процедуры с AUTHID CURRENT_USER, права теряются.
Для вызова процедуры с правами вызывающего, можно использовать DBMS_SYS_SQL или DBMS_IJOB, но это ещё одна дырка в безопасности.

Поэтому хотелось бы узнать, как можно просто выполнить PL/SQL код в Навигаторе, с правами вызывающего?
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеВт Авг 14, 2012 05:32    Ответить с цитатой
Полезность: Нет оценки
думаю только если перелогиниться, например создать дблинк под этим пользователем вызывать операцию через линк...
mx1234567
Участник со стажем


Вступление в Клуб: 18.11.2010
СообщениеВт Авг 14, 2012 09:55    Ответить с цитатой
Полезность: Нет оценки
При выполнении объекта, хранящегося в базе данных (такого как процедуры,
представления или триггера), который инициализирует связь баз данных, значением
CURRENT_USER является имя пользователя, владеющего хранимым объектом, а не
пользователя, вызывающего объект на выполнение. Например, если связь баз данных
находится внутри процедуры scott.р (созданной пользователем scott) и процедура
scott.р вызывается пользователем jane, то текущим пользователем является scott.

Однако если хранимый объект является функцией, процедурой или пакетом,
выполняемым с правами вызывающего, то при подключении в качестве удаленного
пользователя будет использоваться идентификатор авторизации вызывающего
пользователя. Например, пусть процедура scott.p (созданная пользователем scott и
выполняемая с правами вызывающего) содержит связь баз данных, на которую были
выданы привилегии. Если эта процедура вызывается пользователем jапе, то текущим
пользователем является jапе и процедура выполняется с привилегиями пользователя
jane.
mx1234567
Участник со стажем


Вступление в Клуб: 18.11.2010
СообщениеВт Авг 14, 2012 09:59    Ответить с цитатой
Полезность: Нет оценки
Тут опять получается, что IBS надо давать права, но только через db-link. А хотелось бы хранимку с AUTHID CURRENT_USER, прицепить к какому-нибудь пункту меню, чтобы можно её было запустить с правами вызывающего.

Т.е. в ЦФТ выполнить простую хранимку через Навигатор, с правами вызывающего, я так понял невозможно?
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеВт Авг 14, 2012 13:03    Ответить с цитатой
Полезность: Нет оценки
mx1234567 пишет:
Тут опять получается, что IBS надо давать права, но только через db-link. А хотелось бы хранимку с AUTHID CURRENT_USER, прицепить к какому-нибудь пункту меню, чтобы можно её было запустить с правами вызывающего.

Т.е. в ЦФТ выполнить простую хранимку через Навигатор, с правами вызывающего, я так понял невозможно?

Навигатор работает только через IBS.
mx1234567
Участник со стажем


Вступление в Клуб: 18.11.2010
СообщениеВт Авг 14, 2012 16:54    Ответить с цитатой
Полезность: Нет оценки
devor пишет:
mx1234567 пишет:
Тут опять получается, что IBS надо давать права, но только через db-link. А хотелось бы хранимку с AUTHID CURRENT_USER, прицепить к какому-нибудь пункту меню, чтобы можно её было запустить с правами вызывающего.

Т.е. в ЦФТ выполнить простую хранимку через Навигатор, с правами вызывающего, я так понял невозможно?

Навигатор работает только через IBS.


Ну то есть штатно никак нельзя?
Вот если бы какие-нибудь плагины бы можно было бы добавить к Навигатору и через dll ...
mx1234567
Участник со стажем


Вступление в Клуб: 18.11.2010
СообщениеВт Авг 14, 2012 17:02    Ответить с цитатой
Полезность: Нет оценки
Просто в другой АБС я мог это делать без проблем, а здесь из-за вложенных вызовов права теряются, и IBS давать права как у SYS не хочется.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Авг 15, 2012 10:37    Ответить с цитатой
Полезность: Нет оценки
В общем если операция может вызвать операцию на которую доступ данному пользователю не нужен, то ненадо давать доступ и на вызывающую операцию.
Что-то хитрое хочешь, зачем такое вообще ?
mx1234567
Участник со стажем


Вступление в Клуб: 18.11.2010
СообщениеСр Авг 15, 2012 13:50    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
В общем если операция может вызвать операцию на которую доступ данному пользователю не нужен, то ненадо давать доступ и на вызывающую операцию.
Что-то хитрое хочешь, зачем такое вообще ?


Просто хотелось некоторые действия сделать возможным выполнить через Навигатор. Ну в общем понятно, ЦФТ нам такой возможности в Навигаторе (вызова кода с правами вызывающего) не предоставило, только через IBS, в чем и хотелось удостовериться. Только если самому сделать что-то типа внешней программы или COM-объекта и вызывать её из ЦФТ ))
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> АРМы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru