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

2023-12-24

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

GRANT CREATE TRIGGER TO MY_USER;

但您也可以通过这种方式授予权限

GRANT CREATE ANY TRIGGER TO MY_USER;

由于系统权限是系统范围的,因此上面两条语句之间的区别在哪里。是否需要额外ANY-关键字除了系统之外还授予其他任何东西吗?如果我添加一个Grant ... ON SCHEMA ...它不再是系统权限了,是吗?

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

EDIT:

SELECT *
FROM DBA_SYS_PRIVS
WHERE grantee = 'MY_USER';

returns

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

(我省略了列ADMIN_OPTION and COMMON)

使用 MY_USER、MY_USER2 或任何其他用户查询时,结果是相同的。我在这里看不到与模式的联系。并且也可以只具有CREATE ANY TRIGGER-特权。


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

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

限制尽可能少的人员并进行适当的审核。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

授予创建任何触发器与授予创建触发器 的相关文章

随机推荐