powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / работа с снинонимами
25 сообщений из 106, страница 3 из 5
работа с снинонимами
    #39239379
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача на самом деле на собственный интерес,

давно спрашивали, я не нашла как сделать,
а сейчас появилась свободная минутка, захотелось разобраться
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239381
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ozornitca1) селект из трех таблиц, две из которых находятся в схеме с владельцем IBS (user и state) и одна IBS_OTCH в схеме с владельцем AUD, в которую селект обращается со схемы IBS через синоним OBJECT_STATE_HISTORY (отсюда было сообщение про owner IBS, тк овнер синонима IBS)

2) доступ нужен только на select , на все строки

3) в селекте обращаются не к самой таблице. которая в схеме с другим владельцем, а через синоним

на все вопросы ответила ?
я правда пока не разбираюсь в доступе oracle, буду благодарна за терпение и понимание :)

Ок, продолжаем формулировать задачу.
Имеем три таблицы:
IBS.USER
IBS.STATE
AUD.IBS_OSH

Требуется ограничить доступ к этим таблицам - разрешить только select ко всем строкам.

Кому следует разрешить доступ?

- Конкретному пользователю oracle?
- Конкретному приложению , работающему от имени пользователя Oracle (какого? IBS?)
- Кому-то еще?

Когда будете отвечать на эти вопросы, подумайте - как данные попадают в эти таблицы и как повлияет на работу системы запрет их модификации.
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239384
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousOzornitca1) селект из трех таблиц, две из которых находятся в схеме с владельцем IBS (user и state) и одна IBS_OTCH в схеме с владельцем AUD, в которую селект обращается со схемы IBS через синоним OBJECT_STATE_HISTORY (отсюда было сообщение про owner IBS, тк овнер синонима IBS)

2) доступ нужен только на select , на все строки

3) в селекте обращаются не к самой таблице. которая в схеме с другим владельцем, а через синоним

на все вопросы ответила ?
я правда пока не разбираюсь в доступе oracle, буду благодарна за терпение и понимание :)

Ок, продолжаем формулировать задачу.
Имеем три таблицы:
IBS.USER
IBS.STATE
AUD.IBS_OSH

Требуется ограничить доступ к этим таблицам - разрешить только select ко всем строкам.

Кому следует разрешить доступ?

- Конкретному пользователю oracle?
- Конкретному приложению , работающему от имени пользователя Oracle (какого? IBS?)
- Кому-то еще?

Когда будете отвечать на эти вопросы, подумайте - как данные попадают в эти таблицы и как повлияет на работу системы запрет их модификации.

1) требуется ограничить доступ только к таблице AUD.IBS_OSH на селект
2) конкретному пользователю oracle (для примера взяла пользователя своего- IT)

3) по последнему абзацу - конкретному пользователю запрет только на селект, пользователь не является тем, кто в принципе может что-то записывать в базу, он просмотровый
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239388
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OzornitcaFogelв вашем случае из-под пользователя AUD (или привиллегированного, например из группы DBA)
Код: plsql
1.
revoke insert, update, delete, select on AUD.IBS_OSH to IBS



выполнила команду под sysdba
revoke select on AUD.IBS_OSH from IT;

результат:
ORA-01927: нельзя изъять привилегии, т.к. Вы не имеете на это права

уже понятней.
у вас нет прав для IT, поэтому и забрать их вы не можете - нечего забирать.
у вас права для IBS, вот у него и надо их забирать.
а пользователь IT имеет права на объекты IBS.
тогда так попробуйте (если у вас не на ролях всё настроено):
из-под IBS (или sysdba)
Код: plsql
1.
2.
3.
4.
5.
revoke select any table from IT;
grant select on IBS.tab1 to IT;
grant select on IBS.tab2 to IT;
...
select on IBS.tabN to IT;



и так для каждой таблицы IBS, которая нужна для IT
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239392
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ozornitcaтребуется ограничить доступ только к таблице AUD.IBS_OSH на селект
2) конкретному пользователю oracle (для примера взяла пользователя своего- IT)

ОК. Это уже конкретный вопрос.

Для начала посмотрим кто что может делать с таблицей aud.ibs_osh:
Код: plsql
1.
2.
select * from dba_tab_privs 
where (owner, table_name) in (('AUD','IBS_OSH'));
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239402
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousOzornitcaтребуется ограничить доступ только к таблице AUD.IBS_OSH на селект
2) конкретному пользователю oracle (для примера взяла пользователя своего- IT)

ОК. Это уже конкретный вопрос.

Для начала посмотрим кто что может делать с таблицей aud.ibs_osh:
Код: plsql
1.
2.
select * from dba_tab_privs 
where (owner, table_name) in (('AUD','IBS_OSH'));



GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
1 IBS_USER AUD IBS_OSH IBS SELECT NO NO
2 IBS_ADMIN AUD IBS_OSH IBS SELECT NO NO
3 IBS_UADMIN AUD IBS_OSH IBS SELECT NO NO
4 IBS AUD IBS_OSH AUD SELECT YES NO

как тут красиво отформатировать , понятно в таком виде ?
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239412
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,
это результат запроса в вашем сообщении
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239417
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ozornitca GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
1 IBS_USER AUD IBS_OSH IBS SELECT NO NO
2 IBS_ADMIN AUD IBS_OSH IBS SELECT NO NO
3 IBS_UADMIN AUD IBS_OSH IBS SELECT NO NO
4 IBS AUD IBS_OSH AUD SELECT YES NO

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t(uname) as 
  (select 'IT' uname from dual
   union all select p.granted_role 
               from t,dba_role_privs p 
              where p.grantee = t.uname
  )
select p.* 
from t, dba_sys_privs p
where p.grantee = t.uname
  and ( p.privilege like '%ANY TABLE' 
     or p.admin_option = 'YES')
;
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239420
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот этот набор в колонке (первые 3 строки) у вас
Код: plsql
1.
2.
3.
4.
5.
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
1 IBS_USER AUD IBS_OSH IBS SELECT NO NO
2 IBS_ADMIN AUD IBS_OSH IBS SELECT NO NO
3 IBS_UADMIN AUD IBS_OSH IBS SELECT NO NO
4 IBS AUD IBS_OSH AUD SELECT YES NO



похож на роли
Роли в свою очередь выдаются пользователям.
Последняя строка говорит о том, что пользователь AUD выдал права пользователю IBS
а тот в свою очередь выдал права на эту же таблицу 3 ролям.
Запрос
Код: plsql
1.
2.
select * from dba_roles_privs where granted_role in (select grantee from dba_tab_privs 
where (owner, table_name) in (('AUD','IBS_OSH')))


покажет в колонке grantee кому выданы эти роли. Роли могут быть вложенными. Т.е. если в grantee не будет вашего пользователя IT, значит нужно взять рекурсию (то есть взять полученный список из grantee и снова подставить его в granted_role), пока не найдёте IT.

Подозреваю, что это роль IBS_USER.

Соответственно, для отбора прав нужно будет отобрать конечную роль, выданную IT.
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239424
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FogelСоответственно, для отбора прав нужно будет отобрать конечную роль, выданную IT.
Уважаемый коллега, если я ничего не путаю, то ТС желает оставить пользователю IT только select.
Insert, update, delete, reference - отобрать.
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239427
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousOzornitca GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
1 IBS_USER AUD IBS_OSH IBS SELECT NO NO
2 IBS_ADMIN AUD IBS_OSH IBS SELECT NO NO
3 IBS_UADMIN AUD IBS_OSH IBS SELECT NO NO
4 IBS AUD IBS_OSH AUD SELECT YES NO

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t(uname) as 
  (select 'IT' uname from dual
   union all select p.granted_role 
               from t,dba_role_privs p 
              where p.grantee = t.uname
  )
select p.* 
from t, dba_sys_privs p
where p.grantee = t.uname
  and ( p.privilege like '%ANY TABLE' 
     or p.admin_option = 'YES')
;



GRANTEE PRIVILEGE ADMIN_OPTION
1 IT SELECT ANY TABLE NO
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239430
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousFogelСоответственно, для отбора прав нужно будет отобрать конечную роль, выданную IT.
Уважаемый коллега, если я ничего не путаю, то ТС желает оставить пользователю IT только select.
Insert, update, delete, reference - отобрать.

а чего их отбирать, если они и так не выданы ))
права на этот объект только на select (поле privilege - пояснение для Озорницы)

мне показалось, что нужно забрать все права на эту таблицу у конкретного пользователя.
если оставить только select, то можно ничего не делать.

Уважаемый Андрей, извините, что влез, не буду мешать.
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239434
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ozornitca GRANTEE PRIVILEGE ADMIN_OPTION
1 IT SELECT ANY TABLE NO
А теперь покажите, что IT может выполнить dml (insert, update или delete) на таблице
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239435
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogel,

ваш запрос не получилось выполнить, табличка dba_roles_privs - неправильное имя видно

есть role_TAB_PRIVS, но там нет granted_role
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239437
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OzornitcaSELECT ANY TABLE
я сразу про это и написал ;)

но Андрей более продуктивно подошёл, чтобы у вас сложилось понимание, как и что происходит.
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239440
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,
а выше вроде коллега написал , что в поле привилег видно, что права только на селект ?
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239441
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Foge

а нужно. чтобы не было прав и на селект
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239445
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а роль распространена на всех, не только на IT
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239447
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OzornitcaFogel,

ваш запрос не получилось выполнить, табличка dba_roles_privs - неправильное имя видно

есть role_TAB_PRIVS, но там нет granted_role

правильное
Код: plsql
1.
sys.dba_roles_privs



role_TAB_PRIVS - тоже полезное представление, посмотрите ваши роли там: увидите весь спектр привилегий для каждой роли, а не только для одной таблицы
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239452
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FogelOzornitcaFogel,

ваш запрос не получилось выполнить, табличка dba_roles_privs - неправильное имя видно

есть role_TAB_PRIVS, но там нет granted_role

правильное
Код: plsql
1.
sys.dba_roles_privs



role_TAB_PRIVS - тоже полезное представление, посмотрите ваши роли там: увидите весь спектр привилегий для каждой роли, а не только для одной таблицы

все равно пишет, что таблица не существует

делаю под sys
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239469
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogel,


sys.dba_role_privs, не roles, а role :)
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239471
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fogel,

там вышло много много пользователей, в том числе и IT, и всем назначена роль IBS_USER
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239476
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно ли теперь как-то отобрать только у пользователя IT доступ на селект на таблицу IBS_OSH? если он включен в роль IBS_USER (которая содержить привилегию на селект), в которой куча пользователей кроме него
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239480
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ozornitcaникто не работает под IBS, каждый пользователь работает под своим пользоватлеем в системеотошло бы ты от "системы", пока ничего не сломало.
...
Рейтинг: 0 / 0
работа с снинонимами
    #39239484
Фотография Ozornitca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Ozornitcaникто не работает под IBS, каждый пользователь работает под своим пользоватлеем в системеотошло бы ты от "системы", пока ничего не сломало.

еще раз (заметьте, довольно вежливо) отойти от темы, если вы не можете соблюдать элементарно правила уважительности

не беспокойтесь, есть более опытные коллеги, которые лишних доступов мне не дадут, все эксперименты на тесте.

и ничто не дает вам права обращаться к незнакомому вам человеку в среднем роде. Я -то всему научусь и со всем разберусь, а вот научитесь ли вы адекватно себя вести - это вопрос.. который меня, впрочем, волнует мало
есть сообщения по теме- буду невероятно признательна,
есть только непонятные наезды и неуважительное отношение- у меня для вас всегда открыта дверь.. ВЫХОДИТЕ

хорошего настроения
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 3 из 5
Форумы / Oracle [игнор отключен] [закрыт для гостей] / работа с снинонимами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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