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