在Oracle中向一个用户授予另一个用户的权限

时间:2013-05-22 02:57:12

标签: database oracle security

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

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

  1. 用户A不拥有任何对象,但可以访问B和C中的某些对象。
  2. 用户B和C拥有一些对象,但也可以访问B,C和D中的其他数据库对象。
  3. 现在我希望用户A拥有用户B和C拥有的所有权限(其中一些A已经拥有)。

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

1 个答案:

答案 0 :(得分:2)

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

  

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

如果用户SCOTT被授予此权限或角色WITH ADMIN OPTIONWITH GRANT OPTION,则用户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; 现在能够将此角色分配给具有或不具有admin选项的其他数据库用户:

{{1}}

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