Oracle 是否授予级联权限?

Oracle 是否授予级联权限?,oracle,security,Oracle,Security,这是一个希望很快,我是新的甲骨文,所以需要检查一些东西之前,它咬我的屁股 好的,我有一个修改表的函数 如果我授予用户执行函数的权限,他们是否还需要更新和插入表的权限,或者他们被批准使用函数的事实是否足够 我询问的原因是,用户需要编辑这些表,但只能通过批准的功能进行编辑,这些功能执行复杂的验证,而这些验证无法通过约束轻松完成。这取决于您如何定义您的程序,特别是: 存储的PL/SQL单元的AUTHID属性会影响该单元在运行时发出的SQL语句的名称解析和权限检查 默认情况下,创建过程时使用AUTHID

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

好的,我有一个修改表的函数

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


我询问的原因是,用户需要编辑这些表,但只能通过批准的功能进行编辑,这些功能执行复杂的验证,而这些验证无法通过约束轻松完成。这取决于您如何定义您的程序,特别是:

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

默认情况下,创建过程时使用
AUTHID
DEFINER
(DEFINER's right),函数的执行就好像调用方临时获得了DEFINER的权限一样

如果值为
CURRENT\u USER
,则
AUTHID
属性将使过程在运行时检查调用方的权限

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

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

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


这取决于您如何定义程序,特别是:

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

默认情况下,创建过程时使用
AUTHID
DEFINER
(DEFINER's right),函数的执行就好像调用方临时获得了DEFINER的权限一样

如果值为
CURRENT\u USER
,则
AUTHID
属性将使过程在运行时检查调用方的权限

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

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

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