【问题标题】:Grant privilege to role with admin option Vs Grant role to user with admin option?使用管理员选项向角色授予权限与使用管理员选项向用户授予角色?
【发布时间】:2017-01-28 11:03:37
【问题描述】:

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

(说)角色 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;

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

案例 2:

  1. 使用管理员选项向 ROLE1 授予“选择任何表”权限

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

  2. 将 ROLE1 授予 USER1,无论您授予它是带管理员选项还是不带管理员选项

    connect /as sysdba grant ROLE1 to USER1;

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

    connect USER1/xyz grant select any table to USER2;

这可以完美运行而不会报告任何错误。

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

【问题讨论】:

    标签: sql database oracle database-security


    【解决方案1】:

    案例1:

    grant ROLE1 to USER1 with admin option; 表示您可以将ROLE1 授予其他用户,而不管已授予ROLE1 什么。因此grant select any table to USER2; 不起作用。

    但是,grant ROLE1 to USER2; 应该可以工作。

    案例2:

    您获得了将select any table 授予其他用户的权限(通过角色ROLE1,就像DBA 角色获得它一样)。所以,grant select any table to USER2; 有效。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 2020-03-20
      • 2016-09-16
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      相关资源
      最近更新 更多