授予权限Cascade吗?

时间:2013-07-03 10:01:29

标签: oracle security

希望这是一个快速的,我是oracle的新手,所以需要先检查一下它之前咬我的东西

好的,我有一个修改表的功能

如果我授予用户执行该功能的权限,他们还需要获得更新和插入表格的权限,还是他们被批准使用该功能的事实呢?

我问的原因是用户需要编辑这些表,但只能通过已批准的功能来执行复杂的验证,这些功能无法通过约束轻松完成

1 个答案:

答案 0 :(得分:3)

这取决于您定义程序的方式,特别是AUTHID property

  

存储的PL / SQL单元的AUTHID属性会影响设备在运行时发出的SQL语句的名称解析和权限检查。

默认情况下,创建的过程的AUTHID值为DEFINER definer右侧),执行的功能就像呼叫者暂时获得了定义器。

值为CURRENT_USER时,AUTHID属性将使程序在运行时检查调用者的权限。

在您的情况下,您描述的场景将适合DEFINER的属性值(默认值):用户只能在不直接访问基础表的情况下调用过程和函数。文档中描述了类似的场景:

  

场景:假设您必须创建一个API,其过程对其表有不受限制的访问权限,但您希望阻止普通用户直接选择表数据,并通过INSERT,UPDATE更改它,和DELETE语句。

     

解决方案:在特殊架构中,创建表和构成API的过程。默认情况下,每个过程都是DR单元,因此创建它时无需指定AUTHID DEFINER。对于其他用户,授予EXECUTE特权,但不授予任何允许数据访问的权限。

相关问题