【问题标题】:Oracle Roles and privileges hierarchyOracle 角色和权限层次结构
【发布时间】:2014-11-01 13:49:50
【问题描述】:

早上好,

我试图了解 Oracle 数据库角色和权限中的一件事:

所以,我正在尝试创建两个角色:程序员和经理。

程序员角色用户的想法是创建表并将其插入表中。 经理角色用户的想法是有权访问程序员角色权限,PLUS 更新记录。

我认为如果我将 Programmer 角色授予 Manager 角色,最后一个可以:

  1. 创建表(来自程序员角色);
  2. 插入表格(来自程序员角色);
  3. 更新表中的记录(权限设置为经理角色);

但是通过 SQL 开发人员,我将 Programmer 角色授予 Manager 角色,当我使用 Manager User 连接到数据库时,我找不到在 SYSTEM.A 上创建的表(例如)。

我是否需要明确授予经理角色也可以创建和插入?如果是这样,继承的意义何在?


解决方案

程序员角色:插入&&创建表权限; 经理角色:更新 && 选择任何表权限;

由于我的目标是让 Manager 用户继承 Programmer 角色权限,因此可以这样实现:

(设置角色和权限后):

  • DBA > 角色 > 编辑经理角色 > 授予角色 > 选择程序员角色。
  • 断开任何管理器会话,然后重新连接。

打开一个管理器 SQL 表并尝试创建一个表并选择、插入和更新它。您会看到 Manager 具有“程序员”角色的采用者权限。

【问题讨论】:

  • 你理解正确。也许展示你如何授予权限。
  • @Haki,感谢您的回复。你想让我展示我如何设置权限吗?我使用 SQL 开发人员做所有事情,但我可以使用 SQL 来做。我知道我正确设置了角色和权限,因为我每次都在测试。然而,这个我认为存在的继承概念让我有点难过......

标签: oracle roles privileges


【解决方案1】:

SQL 是一种非过程语言。话虽如此,您无需在这里考虑继承。相反,明确授予经理角色的创建、插入和更新权限。

您可以这样做:

1- 创建程序员和经理角色:

SQL> CREATE ROLE role_name 通过密码识别;

2- 然后向每个角色授予权限(您在此处的要求):

SQL> 将权限授予角色名称;

3- 通过将每个用户(取决于他是经理还是程序员)授予特定角色来授予用户(程序员和经理)权限。

SQL> GRANT role_name TO user_name;

您可能会发现以下链接对更多详细信息很有用: http://docs.oracle.com/cd/B10501_01/server.920/a96521/privs.htm#21065

【讨论】:

  • 感谢您的回复。我了解授予用户权限的部分。困扰我的是您可以将角色 A 授予角色 B 但 A 拥有的所有权限都不会传递给 B 的部分。这在某种程度上有点愚蠢...但是谢谢您的回复!
  • @Sammy,不客气。我看到你的问题中的混淆部分在哪里。您考虑将功能/授予权限从一个角色继承到另一个角色,就像 C++、Java...等过程语言所做的那样。 SQL 是一种非过程语言(这是你在考虑它时没有考虑到的)。
  • 我刚刚找到了我想要的解决方案。按照我上面写的说明,可以将权限从一个角色继承到另一个角色! :)。亲切的问候
猜你喜欢
  • 1970-01-01
  • 2010-11-19
  • 2021-01-06
  • 2014-06-17
  • 2012-06-16
  • 2020-10-09
  • 2017-12-27
  • 2011-11-03
  • 1970-01-01
相关资源
最近更新 更多