2

希望这是一个快速的,我是甲骨文的新手,所以需要在它咬我之前检查一些东西

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

如果我授予用户执行该功能的权限,他们是否还需要更新和插入表的权限,或者他们被批准使用该功能的事实是否足够?

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

4

1 回答 1

4

这取决于您如何定义程序,特别是AUTHID属性

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

默认情况下,创建过程的AUTHID值为DEFINER( definer's right ),函数的执行就像调用者被临时赋予了定义者的权限一样。

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

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

场景:假设您必须创建一个 API,其过程可以不受限制地访问其表,但您希望防止普通用户直接选择表数据,以及使用 INSERT、UPDATE 和 DELETE 语句更改表数据。

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

于 2013-07-03T10:10:25.793 回答