Предоставить привилегию роли с параметром администратора Против предоставления роли пользователю с параметром администратора?
Я немного запутался между следующими двумя СЛУЧАЯМИ, хотя я знаю результат, но я не очень убежден в причине этого. Нужна помощь от экспертов базы данных.
(Скажем) dba создает роль ROLE1 вместе с USER1 и USER2
connect /as sysdba
create user USER1 identified by xyz;
create user USER2 identified by abc;
create role ROLE1;
СЛУЧАЙ 1:
Привилегия "выбрать любую таблицу" предоставляется ROLE1 без опции администратора
connect /as sysdba grant select any table to ROLE1;
Предоставьте ROLE1 пользователю USER1 с опцией администратора
connect /as sysdba grant ROLE1 to USER1 with admin option;
Может ли пользователь USER1 предоставить "выбрать какую-либо привилегию" другим пользователям?
connect USER1/xyz grant select any table to USER2;
Я получил ORA-01031: ошибка недостаточных привилегий здесь, что означает, что это не правильный путь.
СЛУЧАЙ 2:
Привилегия "выбрать любую таблицу" предоставляется ROLE1 с опцией администратора
connect /as sysdba grant select any table to ROLE1 with admin option;
Предоставьте ROLE1 пользователю USER1 независимо от того, предоставляете ли вы его без или с возможностью администратора
connect /as sysdba grant ROLE1 to USER1;
Может ли пользователь USER1 предоставить "выбрать какую-либо привилегию" другим пользователям?
connect USER1/xyz grant select any table to USER2;
Это работает отлично, не сообщая ни об одной ошибке.
Может кто-нибудь, пожалуйста, помогите понять, почему CASE 2 работает, а почему нет CASE1?
1 ответ
СЛУЧАЙ 1:
grant ROLE1 to USER1 with admin option;
означает, что вы можете предоставить ROLE1
другим пользователям, независимо от того, что было предоставлено ROLE1
, таким образом grant select any table to USER2;
не работает.
Тем не мение, grant ROLE1 to USER2;
должно сработать.
Вариант 2:
Вы получаете разрешение (через роль ROLE1
, лайк DBA
роль получает) select any table
другим пользователям. Так, grant select any table to USER2;
работает.
С другой стороны grant ROLE1 to USER2;
должен потерпеть неудачу.