【问题标题】:Grant permission from one user to another in Oracle在 Oracle 中将权限从一个用户授予另一个用户
【发布时间】:2013-05-22 02:57:12
【问题描述】:

我想知道如何将特定用户有权访问的所有数据库对象的权限授予另一个用户。

为了说明,Oracle 数据库中有四个用户:A、B、C 和 D。

  1. 用户 A 不拥有任何对象,但可以访问 B 和 C 中的某些对象。
  2. 用户 B 和 C 拥有一些对象,但也可以访问 B、C 和 D 中的其他数据库对象。

现在我希望用户 A 拥有用户 B 和 C 拥有的所有权限(其中一些权限是 A 已经拥有的)。

这样做的正确方法是什么。我应该使用查询还是程序?是否应该始终使用数据库对象所有者的登录名来运行此过程?例如,B 可以访问 D 中的某个对象,B 可以将 D 的对象的权限授予 A 吗?

【问题讨论】:

    标签: database oracle security


    【解决方案1】:

    您可以使用角色对系统和对象权限进行分组,然后将这些角色分配给用户和其他角色。通过这种方式,您可以将角色包含的权限集体授予用户,从而简化安全管理(参见数据库概念中的"Privilege and Role Authorization")。

    例如,B 可以访问 D 中的某个对象,B 可以将 D 的对象的权限授予 A 吗?

    如果用户WITH ADMIN OPTIONWITH GRANT OPTION 被授予此特权或角色,则用户SCOTT 可以将对象特权、系统特权或角色授予另一个用户或角色。比如角色select_hr有权限查询用户HR拥有的一些表:

    create role select_hr;
    grant select on hr.employees to select_hr;
    grant select on hr.departments to select_hr;
    

    现在您可以通过这种方式将此角色分配给SCOTT

    grant select_hr to scott with admin option;
    

    SCOTT 现在可以将此角色分配给其他数据库用户,无论是否有管理员选项:

    grant select_hr to bob;
    

    请参阅数据库安全指南中的"Granting a User Privileges and Roles"

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多