Как в Навигаторе реализовать вызов с правами текущ. польз.?
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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-объекта и вызывать её из ЦФТ )) |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|