使用admin选项为角色授予权限Vs使用admin选项向用户授予角色?

时间:2016-09-20 13:28:48

标签: sql database oracle database-security

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

(Say)角色ROLE1与USER1和USER2一起由dba

创建

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

案例1:

  1. 在没有管理员选项

    的情况下,将“选择任何表”权限授予ROLE1

    connect /as sysdba grant select any table to ROLE1;

  2. 使用管理员选项

    将ROLE1授予USER1

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

  3. USER1现在可以向其他用户授予“选择任何权限”吗?

    connect USER1/xyz grant select any table to USER2;

  4. 我得到了ORA-01031:这里的权限不足,这意味着它不是正确的方法。

    案例2:

    1. 使用管理员选项

      向ROLE1授予“选择任何表”权限

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

    2. 将ROLE1授予USER1,无论您是否授予w /或管理员选项

      connect /as sysdba grant ROLE1 to USER1;

    3. USER1现在可以向其他用户授予“选择任何权限”吗?

      connect USER1/xyz grant select any table to USER2;

    4. 这可以很好地完成,而不会报告任何错误。

      任何人都可以帮助理解为什么CASE2有效,为什么不能CASE1?

1 个答案:

答案 0 :(得分:2)

<强> CASE1:

grant ROLE1 to USER1 with admin option;表示您可以向其他用户授予ROLE1,无论授予ROLE1的是什么。因此grant select any table to USER2;不起作用。

但是,grant ROLE1 to USER2;应该有效。

<强> CASE2:

您获得权限(通过角色ROLE1,如DBA角色获取权限)将select any table授予其他用户。所以,grant select any table to USER2;有效。

另一方面,grant ROLE1 to USER2;应该失败。