Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выполнение DDL оператора в пакете от имени другого пользователя / 6 сообщений из 6, страница 1 из 1
05.02.2003, 11:52
    #32101448
ramasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение DDL оператора в пакете от имени другого пользователя
Добрый день.
subj
У меня база разделена на несколько схем для оптимизации.
Хочу написать пакет который при заведении нового пользователя дает права
на нужные объекты. Но права может раздавать только владелец.
Хотелось бы иметь такой сценарий: клиент конектится под своим именем и запускает мой пакет я в пакете от имени владельцев схем раздаю ему необходимые права.
У меня только одна идея дать владельцу какой нибудь схемы возможность раздавать права необходимым объектам из других схем. Но мне такой подход не нравится созданием ненужных зависимостей.

Как решают подобные проблемы профессионалы ?

Спасибо.
...
Рейтинг: 0 / 0
05.02.2003, 12:08
    #32101460
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение DDL оператора в пакете от имени другого пользователя
В Oracle 9i на эту тему появилась специальная привилегия, называется GRANT ANY OBJECT PRIVILEGE:
"New system privilege, GRANT ANY OBJECT PRIVILEGE, allows users to grant and revoke privileges on objects on behalf of the object's owner to simplify the installation process."
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96531/ch5_edit.htm#82900
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96521/privs.htm#21605
...
Рейтинг: 0 / 0
05.02.2003, 12:13
    #32101467
D_A
D_A
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение DDL оператора в пакете от имени другого пользователя
решается использованием динамического SQL из хранимых процедур,
т.к. sql будет выполняться с правами владельца процедуры

например:

создаем процедуру в той схеме, на объекты которой надо дать права
Код: plaintext
1.
2.
3.
4.
5.
6.
create or replace procedure user1.do_grant(p_grant varchar2, p_object varchar2, p_grantee varchar2) is
begin
  execute immediate 'grant '||p_grant||' '|| on '||p_object||' to '||grantee ;
end;
/
grant execute on do_grant to user2;

теперь вызовом этой процедуры user2 может раздавать объектные привилегии от имени user1 другим пользователям
...
Рейтинг: 0 / 0
05.02.2003, 12:41
    #32101497
ramasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение DDL оператора в пакете от имени другого пользователя
RE Denis Popov
Забыл сказать у меня Oracle 8i

Re D_A
Спасибо это как раз то что я искал. Но есть маленькое но (очень неприятное).
Как быть с объектами из схем SYS например DBMS_PIPE, различные представления и т.д. ? Создавать пакет в схеме SYS вроде бы некрасиво.
...
Рейтинг: 0 / 0
05.02.2003, 13:45
    #32101560
D_A
D_A
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение DDL оператора в пакете от имени другого пользователя
для объектов SYS-а, как вариант, можно написать обертки в рабочей схеме и давать права на них:
Код: plaintext
1.
2.
3.
4.
5.
create or replace view user1.v$session 
  as 
    select * from sys.v_$session;

grant select on user1.v$session to user2;

или все-таки дать эти привилегии с grant option пользователю раздающему привилегии
...
Рейтинг: 0 / 0
05.02.2003, 18:53
    #32101873
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение DDL оператора в пакете от имени другого пользователя
Vozmozno bolee prostim resheniem budet sozdanie paketa i prosto zapuskom ego
s pravami tekucheko usera.

Код: plaintext
1.
2.
3.
4.
5.
Create or replace package aaaaaa
AUTHID CURRENT_USER
...
end;
/

i paket vipolnyaetsya s pravamy CURRENT_USER

Код: plaintext
1.
2.
3.
4.
5.
Create or replace package aaaaaa
AUTHID DEFINER
...
end;
/

i paket vipolnyaetsya s pravamy OWNER (sozdatelya)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выполнение DDL оператора в пакете от имени другого пользователя / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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