【问题标题】:Oracle, privilege from role doesn't give access to tableOracle,来自角色的特权不授予对表的访问权限
【发布时间】:2021-05-12 08:31:58
【问题描述】:

我需要将一些视图移至新用户(newUser) 这些视图将引用初始模式(originalUser.Table1)中的表。

在 originalUser.Table1 上有一个具有“选择”权限的角色:role1。

如果我将 'role1' 授予 'newUser' 我会得到 ORA-00942 'table or view does not exist' 当 create view newUser.View1 as select * from originalUser.Table1

但如果我直接授予权限: 将 originalUser.Table1 上的选择权授予新用户

一切正常并创建视图。

“角色”方法有什么问题?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    这是记录在案的行为; from the 19c create view section(强调):

    包含视图的架构的所有者必须具有从视图所基于的所有表或视图中选择(READ 或 SELECT 权限)、插入、更新或删除行所需的权限。 必须直接授予所有者这些权限,而不是通过角色。

    除了角色授予的权限会增加可能使视图无效的复杂性之外 - 如果从用户中删除角色,则必须评估其下的所有权限,包括链式角色中的权限,以查看是否任何表访问都受到影响,然后哪些对象依赖于此 - 角色可以被禁用或需要密码等。

    此限制类似于在使用定义者权限创建的任何命名 PL/SQL 块(过程、函数、包、触发器)中禁用规则的限制。

    【讨论】:

      猜你喜欢
      • 2012-02-03
      • 1970-01-01
      • 2021-11-15
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多