gpt4 book ai didi

oracle - 授予创建任何触发器与授予创建触发器

转载 作者:行者123 更新时间:2023-12-04 01:37:06 25 4
gpt4 key购买 nike

在 Oracle 中,您可以授予系统权限,例如

GRANT CREATE TRIGGER TO MY_USER;

但是你也可以这样授予权限

GRANT CREATE ANY TRIGGER TO MY_USER;

由于系统权限是系统范围的,所以上面两个语句之间的区别在哪里。附加的 ANY 关键字是否授予除 system 之外的任何其他内容?如果我添加一个 Grant ... ON SCHEMA ... 它就不再是系统特权了,是吗?

假设数据库中有来自不同用户的多个模式/对象,没有这些权限就无法访问。

编辑:

SELECT *
FROM DBA_SYS_PRIVS
WHERE grantee = 'MY_USER';

返回

GRANTEE      PRIVILEGE                              
------------ -------------
MY_USER CREATE ANY TRIGGER
MY_USER CREATE TRIGGER

(我省略了 ADMIN_OPTIONCOMMON 列)

当使用 MY_USER、MY_USER2 或任何其他用户查询时,结果是相同的。我在这里看不到与模式的连接。也可以只拥有 CREATE ANY TRIGGER 权限。

最佳答案

在大多数情况下,触发器所有者也是触发器所基于的表(或 View )的所有者。在这些情况下,表所有者可以使用 CREATE TRIGGER 在他们自己的表上创建创建触发器。

CREATE ANY TRIGGER 允许用户在任何表上创建一个由任何用户拥有的触发器。这是一个很大的安全漏洞,因为他们可以在他们拥有或可以插入的表上创建特权用户拥有的触发器。因为他们可以插入到该表中,所以他们可以强制执行触发器,并且触发器以触发器所有者的权限执行。结果是具有 CREATE ANY TRIGGER 权限的用户可以作为特权用户创建和执行代码(类似于拥有 CREATE ANY PROCEDURE 和 EXECUTE ANY PROCEDURE)。

将人数限制在尽可能少的范围内并进行适当的审核。

关于oracle - 授予创建任何触发器与授予创建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49256959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com