授予创建任何触发器与授予创建触发器
Grant create any trigger vs grant create trigger
在 Oracle 中,您可以授予系统权限,例如
GRANT CREATE TRIGGER TO MY_USER;
但您也可以通过这种方式授予权限
GRANT CREATE ANY TRIGGER TO MY_USER;
由于系统权限是系统范围的,所以上面两个语句之间的区别在哪里。额外的 ANY
-关键字是否授予除系统之外的任何其他内容?如果我添加一个 Grant ... ON SCHEMA ...
它就不再是系统特权了,是吗?
假设数据库中有来自不同用户的多个 schemas/objects,没有这些权限就无法访问。
编辑:
SELECT *
FROM DBA_SYS_PRIVS
WHERE grantee = 'MY_USER';
returns
GRANTEE PRIVILEGE
------------ -------------
MY_USER CREATE ANY TRIGGER
MY_USER CREATE TRIGGER
(我省略了 ADMIN_OPTION
和 COMMON
列)
与 MY_USER、MY_USER2 或任何其他用户查询此结果相同。我在这里看不到与模式的连接。也可以只拥有 CREATE ANY TRIGGER
-权限。
第一个语句授予在 MY_USER 模式中创建触发器的权利。所有者将永远由 MY_USER.
第二个语句授予在任何模式中创建触发器的权利。触发器的所有者可以是任何用户。
通常不需要最后一个选项,因为它使用户 MY_USERS 有可能破坏数据模型。
在大多数情况下,触发器所有者也是触发器所基于的 table(或视图)的所有者。在这些情况下,table 所有者可以使用 CREATE TRIGGER 创建自己的创建触发器 table。
CREATE ANY TRIGGER 允许用户在任何 table 上创建任何用户拥有的触发器。这是一个很大的安全漏洞,因为他们可以在他们拥有或可以插入的 table 上创建特权用户拥有的触发器。因为他们可以插入 table,所以他们可以强制执行触发器,并且触发器以触发器所有者的权限执行。结果是具有 CREATE ANY TRIGGER 权限的用户可以作为特权用户创建和执行代码(类似于拥有 CREATE ANY PROCEDURE 和 EXECUTE ANY PROCEDURE)。
将人数限制在尽可能少的范围内并进行适当的审核。
在 Oracle 中,您可以授予系统权限,例如
GRANT CREATE TRIGGER TO MY_USER;
但您也可以通过这种方式授予权限
GRANT CREATE ANY TRIGGER TO MY_USER;
由于系统权限是系统范围的,所以上面两个语句之间的区别在哪里。额外的 ANY
-关键字是否授予除系统之外的任何其他内容?如果我添加一个 Grant ... ON SCHEMA ...
它就不再是系统特权了,是吗?
假设数据库中有来自不同用户的多个 schemas/objects,没有这些权限就无法访问。
编辑:
SELECT *
FROM DBA_SYS_PRIVS
WHERE grantee = 'MY_USER';
returns
GRANTEE PRIVILEGE
------------ -------------
MY_USER CREATE ANY TRIGGER
MY_USER CREATE TRIGGER
(我省略了 ADMIN_OPTION
和 COMMON
列)
与 MY_USER、MY_USER2 或任何其他用户查询此结果相同。我在这里看不到与模式的连接。也可以只拥有 CREATE ANY TRIGGER
-权限。
第一个语句授予在 MY_USER 模式中创建触发器的权利。所有者将永远由 MY_USER.
第二个语句授予在任何模式中创建触发器的权利。触发器的所有者可以是任何用户。
通常不需要最后一个选项,因为它使用户 MY_USERS 有可能破坏数据模型。
在大多数情况下,触发器所有者也是触发器所基于的 table(或视图)的所有者。在这些情况下,table 所有者可以使用 CREATE TRIGGER 创建自己的创建触发器 table。
CREATE ANY TRIGGER 允许用户在任何 table 上创建任何用户拥有的触发器。这是一个很大的安全漏洞,因为他们可以在他们拥有或可以插入的 table 上创建特权用户拥有的触发器。因为他们可以插入 table,所以他们可以强制执行触发器,并且触发器以触发器所有者的权限执行。结果是具有 CREATE ANY TRIGGER 权限的用户可以作为特权用户创建和执行代码(类似于拥有 CREATE ANY PROCEDURE 和 EXECUTE ANY PROCEDURE)。
将人数限制在尽可能少的范围内并进行适当的审核。