Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges / 11 сообщений из 11, страница 1 из 1
07.05.2020, 10:03
    #39954895
sergiy_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
Добрый день.
Столкнулся с таким нелогичным на мой взгляд поведением oracle что
для выполнение селекта с использованием VIew sys.DBA_ROLE_privs достаточно дать привилегии на выполнение селект из sys.DBA_ROLE_privs
Однако использование DBA_ROLE_privs в вьюхе приводит к ORA- 01031.

Воспроизводится просто.
Создаю пустую роль
Даю роли права на select from sys.DBA_ROLE_privs

Под этой ролью
Select * from sys.DBA_ROLE_privs
работает.

Создаю view
create view v_DBA_ROLE_privs as Select * from sys.DBA_ROLE_privs;

Даю роли права на v_DBA_ROLE_privs.
Select * from v_DBA_ROLE_privs
получаю ORA- 01031 insufficient privileges

Если я дам роли права : Grant SELECT on ANY TABLE to MY_ROLE;
то все заработает, но к сожалению такой подход не поймут наши безопасники.
Кто ни будь может объяснить такое поведение?
...
Рейтинг: 0 / 0
07.05.2020, 12:32
    #39954943
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
...
Рейтинг: 0 / 0
07.05.2020, 12:46
    #39954954
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
+

Restriction on Granting WITH GRANT OPTION You can specify WITH GRANT OPTION only when granting to a user or to PUBLIC, not when granting to a role.

Что означает, что объектная привилегия должна быть выдана владельцу view напрямую, не через роль.
...
Рейтинг: 0 / 0
07.05.2020, 12:54
    #39954956
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
sergiy_s
Столкнулся с таким нелогичным на мой взгляд поведением oracle
Ага, нелогично
Чел дал тебе посмотреть свою коллекцию порнушки (приватной), а ты без разрешения украсил ее ленточкой и выставил в интернет
...
Рейтинг: 0 / 0
07.05.2020, 13:00
    #39954960
sergiy_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
Как бы не совсем понятно.
Право делать Select из таблицы это объектная привелегия?
A право делать селект из View?
...
Рейтинг: 0 / 0
07.05.2020, 14:53
    #39954983
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
sergiy_s
Право делать Select из таблицы это объектная привелегия?


Да.

A право делать селект из View?

Да.

Объекты разные. Один принадлежит тебе, а другой - нет, вот и вся разница.

И для того, который тебе не принадлежит, ты должен обращаться за разрешением к владельцу, до тех пор, пока он не сказал тебе "сам давай разрешение кому хочешь".
...
Рейтинг: 0 / 0
07.05.2020, 17:01
    #39955021
sergiy_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
хорошо причина будем считать понятна.
Как нужно организовать права доступа что бы в результате пользователь мог посмотреть результат через мою вюшку?
Давать ему права на все таблицы как бы крайне не желательно.
Пробовал дать право на sys.DBA_ROLE_privs лично пользователю не помогло.
...
Рейтинг: 0 / 0
07.05.2020, 20:59
    #39955101
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
причина будем считать понятна

Исходя из дальнейших вопросов - нет, не будем так считать.

Давать ему права на все таблицы

Такой задачи не стояло, речь о конкретной таблице/представлении (view).

Пробовал дать право на sys.DBA_ROLE_privs лично пользователю не помогло.

Как уже ясно (надеюсь) из вышесказанного, у User2 должно быть право на выборку из view User1, + разрешение на объекты, входящие во view, один из двух вариантов:

1. User1 имеет право на выдачу прав просмотра объектов во view, и выдает это право User2. Для этого нужна опция "grant option".
2. User2 получает право на просмотр объектов непосредственно от владельца объекта.

Для понимания всегда рекомендуется сделать test case.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
Connected to Oracle Database 11g Release 11.2.0.1.0 
Connected as system@//192.168.1.201/DBOFFICE

SQL> create user u1 identified by "1";

User created


SQL> grant connect to u1;

Grant succeeded

SQL> grant  create view to u1;

Grant succeeded

SQL> grant select on dba_users to u1;

Grant succeeded


-------------------------------
Connected to Oracle Database 11g Release 11.2.0.1.0 
Connected as u1@//192.168.1.201/DBOFFICE

SQL> create view vusers as select username from dba_users where rownum < 6;

View created

-------------------------------

Connected as system@//192.168.1.201/DBOFFICE

SQL> create user u2 identified by "2";

User created


SQL> grant connect to u2;

Grant succeeded

-------------------------------

Connected as u1@//192.168.1.201/DBOFFICE

SQL> create view vusers as select username from dba_users where rownum < 6;

View created

SQL> grant select on vusers to u2;
grant select on vusers to u2

ORA-01720: grant option does not exist for 'SYS.DBA_USERS'

SQL> 

-------------------------------
Connected as system@//192.168.1.201/DBOFFICE


SQL> grant select on dba_users to u1 with grant option;

Grant succeeded


-------------------------------
Connected as u1@//192.168.1.201/DBOFFICE

SQL> grant select on vusers to u2;

Grant succeeded

-------------------------------
Connected as u2@//192.168.1.201/DBOFFICE

SQL> select * from u1.vusers;

USERNAME
------------------------------
SYS
SYSTEM
OUTLN
DIP
ORACLE_OCM

...
Рейтинг: 0 / 0
08.05.2020, 07:00
    #39955163
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
Вячеслав Любомудров
sergiy_s
Столкнулся с таким нелогичным на мой взгляд поведением oracle
Ага, нелогично
Чел дал тебе посмотреть свою коллекцию порнушки (приватной), а ты без разрешения украсил ее ленточкой и выставил в интернет
Если ты направил всех на его сайт - то да.
Но если ты скачал и может даже добавил свой watermark (от-pipeline-ил), то с точки зрения "безопасности" ничего не нарушено. Да это потребует дополнительных ресурсов. Но с точки зрения ограничения прав - эти ограничения обходибельны, если очень нужно.

В свете всего многообразия новых плюшек, паранойя с grant option выглядит атавизмом.
ИМХО.
...
Рейтинг: 0 / 0
08.05.2020, 07:06
    #39955164
sergiy_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
Короче
Что что бы все заработало нужно:
Cхеме в которой находится View дать права на показ sys.DBA_ROLE_privs с grant options.

Большое спасибо все стало яснее.
...
Рейтинг: 0 / 0
08.05.2020, 07:12
    #39955165
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges
Elic
(от-pipeline-ил)
Даже не нужно таких сложностей. Достаточно возвращать sys_refcursor. И вся параноидальная безопасность отсасывает в сторонке. И никаких накладных расходов.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / использование sys.DBA_ROLE_privs во View приводит к ошибке 01031 insufficient privileges / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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