Конференция "Базы" » Oracle. Запуск процедуры из процедуры с правами другого. [D7]
 
  • AV © (05.07.12 17:23) [0]
    Имеем функцию, написана мной.
    function Internal_Create_OBP(p_OBP in varchar2) return varchar2
    is
    vRes varchar2(256);
    begin
    vRes := External_Create_OBP(p_OBP);
    end;

    хочу, что бы практически любой мог вызвать мою функцию Internal_,
    а из неё что бы можно было вызвать  External_ от имени

    которую не каждый может вызвать, т.к. права на нее ограничены.
    Login|pass достаточных прав есть.
  • AV © (05.07.12 17:29) [1]
    текст External_Create_OBP нет, он на удаленном сервере, посмотреть нельзя

    внутри  External_Create_OBP, как показывают эксперименты,
    определяется логин запускающего юзера, который прописан в некую таблицу.
    И, если там не прописан юзер, то даже запустив функцию, получим отлуп на программном уровне логики.

    Юзер со всеми правами есть. И прописан он там где надо везде.
    Надо что бы любой юзер мог запустить мою обертку, а она как-бы от имени этого Юзера, вызвала удаленку
  • Кщд (06.07.12 09:35) [2]
    ф-ция, при наличии прав на её выполнение, по умолчанию, работает с правами definer'а(authid definer).
    definer не проходит авторизацию в external_create_obp?
  • AV © (06.07.12 15:19) [3]

    > Кщд   (06.07.12 09:35) [2]

    права - с этим разобрался.
    Функция external_create_obp определяет текущего юзера и смотрит где-то
    имеет ли он права запускать ее.
    грубо говоря, она делает
    select count(*)  into N from SecretTable where UserLogin = GetCurrentLogin()
    if N > 0 then можно_запускать.

    как мне написать функцию, что бы было аля так
    begin
     CurrentUser := KeepCurrentUser;
     My_AlterSession('GoodUser/Password');
     vRes := External_Create_OBP(p_OBP);
     My_AlterSession(CurrentUser);
    end;
  • Кщд (06.07.12 15:27) [4]
    >AV ©   (06.07.12 15:19) [3]
    >как мне написать функцию, что бы было аля так
    если под пользователем понимается пользователь Oracle, то такой код невозможен

    >текст External_Create_OBP нет, он на удаленном сервере, посмотреть нельзя
    через db_link? или?..

    в общем случае, External_Create_OBP - черный ящик и гадать, что и как там делается, нелепо

    нужен код
 
Конференция "Базы" » Oracle. Запуск процедуры из процедуры с правами другого. [D7]
Есть новые Нет новых   [119763   +66][b:0][p:0]