授予具有admin选项的角色权限Vs授予具有admin选项的用户权限



我对以下两个案例有点困惑,虽然我知道结果,但我不太相信背后的原因。需要数据库专家的帮助。

(例如)dba

创建角色ROLE1以及USER1和USER2

connect /as sysdba create user USER1 identified by xyz; create user USER2 identified by abc; create role ROLE1;

案例1:

  1. 在没有admin选项的情况下授予ROLE1 ' select any table '权限

    connect /as sysdba grant select any table to ROLE1;

  2. 将ROLE1授权给USER1,并使用admin选项

    connect /as sysdba grant ROLE1 to USER1 with admin option;

  3. USER1现在可以授予'select any privilege'给其他用户吗?

    connect USER1/xyz grant select any table to USER2;

我在这里得到ORA-01031:不足特权错误,这意味着它不是正确的方式。

CASE 2:
  1. 给ROLE1一个' select any table '的权限和admin选项

    connect /as sysdba grant select any table to ROLE1 with admin option;

  2. 将ROLE1授予USER1,无论是否授予它w/或w/o admin选项

    connect /as sysdba grant ROLE1 to USER1;

  3. USER1现在可以授予'select any privilege'给其他用户吗?

    connect USER1/xyz grant select any table to USER2;

这可以完美地工作而不会报告任何错误。

谁能帮助理解为什么CASE2起作用,为什么CASE1不起作用?

CASE1:

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;应该失败

最新更新