视图/同义词与基础表的权限

时间:2016-04-14 10:34:23

标签: oracle view oracle11g privileges synonym

参考herehere

用户是否需要视图上的SELECT /INSERT/DELETE/UPDATE等权限以及基础表上的权限才能执行这些操作?或者EITHER表/视图的权限就足够了?

换句话说,考虑拥有表T和视图V(由T构造)的用户A. V上的SELECT用户B可以执行SELECT,如果他在T上没有SELECT,反之亦然吗?如果可以的话,那不意味着View特权"覆盖"表格特权,因为A没有让他对T?

更新

在相关问题中,同义词怎么样?根据我在书中的理解,用户需要同义词和基础表上的SELECT权限。这与观点不同。

另一方面,Oracle似乎表明同义词的行为类似于视图。

  

可以为用户授予同义词或视图的SELECT权限   没有被明确授予SELECT权限   始发表

更新2

按照大家的回答我们只需要视图上的权限来选择表(至少是视图中从表中看到的内容)并且不需要表上的权限,让我们考虑这种情况:

  
      
  • 表T属于A
  •   
  • 在T到B上的GRANT SELECT(没有GRANT选项)
  •   
  • B根据选择*从A.T
  • 创建视图   
  • B GRANT SELECT ON V TO C
  •   
  • C执行SELECT * FROM B.V
  •   

根据你所说的,C将能够从V中选择,因此相当于从T中选择。这是作弊吗? B实际上让C看到A.T虽然C在T上没有权利而B没有GRANT OPTION。某处有安全漏洞吗?

2 个答案:

答案 0 :(得分:2)

观点的一个基本用途是保护隐私。基表可能包含某些用户不需要查看的机密信息(例如,在员工表中,您可能有薪水)。某些用户需要访问查询(选择)或仅更新基表中的某些字段,而无需访问完整信息。例如:选择电话号码或更新地址(但无法查看工资或奖金)。然后,人们将创建一个视图,并仅为视图提供这些用户“选择”和“更新”权限,而不是在基表上。 (select仍然违反基表,但COLUMNS将仅限于视图中包含的那些...可以/将对基表进行更新,但同样,仅对视图中包含的列中的值进行更新。 )视图不仅可以限制列,还可以限制行 - 例如,在视图中使用WHERE子句,您可以完全从视图中排除CEO。

因此,视图的主要用途之一正是基于此:某些用户可能对视图具有特权,但在基表上没有特权。

答案 1 :(得分:1)

是。通常,视图作为视图所有者运行,并且用户以视图的权限运行。因此用户b只需要访问视图。

但是,在查看此类问题时,您可能还需要查看行级安全性。这通过将对表的一部分的访问权限授予给定用户或组(即,在查询结束时有效地强制执行where子句)来工作。根据您的使用情况,管理可能更简单或更复杂。