【问题标题】:Oracle - deploying objects into a different schemaOracle - 将对象部署到不同的模式中
【发布时间】:2020-02-26 19:31:43
【问题描述】:

我很惊讶我还没能在网站上找到这个问题。如有重复请见谅!

在 Oracle(10 个以上)中,USER_A 是否可以在 USER_B 的架构中部署对象?

例如,假设我以USER_B 登录:

CREATE OR REPLACE PACKAGE user_a.my_example_pkg IS

   PROCEDURE Make_Log;
   PROCEDURE Init;

END user_a.my_example_pkg;

我在部署时收到ORA-1031: insufficient privileges 响应。

我知道可以以USER_A 身份登录来部署包,是的,我可以这样做。但关键是,在我的数据库上,似乎有人以这种方式“跨模式”修改了一个包。我需要弄清楚他们是怎么做到的!

我相当确定特权存在,但我找不到它是什么。此外,如果有许多特权允许这样做,那么获得这些特权的详尽列表将是一个奖励。

【问题讨论】:

  • t possible for USER_A to deploy objects in USER_B's - 问题是当你可以简单地授予executeUSER_A 模式打包到USER_B 模式的权限时,为什么要复制代码?在最坏的情况下,您想要这样做,那么为什么要在包名称前面使用模式别名。无论如何,您都在执行整个程序包,那有什么意义呢?
  • @XING 建议您在下次回答之前阅读问题。你的答案在问题中
  • 是否有可能有人只是以user_b 连接并错误地在那里创建了包?你怎么知道他们当时以user_a 连接并使用特殊权限创建它?
  • @WilliamRobertson 不仅可能,而且很可能。但没有人承认它。此外,审计日志表明 user_b 当时没有连接。你知道我可以找出谁重新部署了这个包吗?

标签: oracle oracle11g oracle10g oracle12c


【解决方案1】:

您想查找ANY 权限

  • CREATE PROCEDURE 允许您在架构中创建过程。 CREATE ANY PROCEDURE 允许您在任何架构中创建过程。
  • CREATE TABLE 允许您在架构中创建表。 CREATE ANY TABLE 让您可以在任何架构中创建表。
  • CREATE VIEW 允许您在架构中创建视图。 CREATE ANY VIEW 让您可以在任何架构中创建视图。

对于任何CREATE 权限,都有一个对应的CREATE ANY 权限。那些ANY 权限非常强大,真的不应该授予 DBA 以外的任何人,因为它可以让你做一些事情,比如创建由高权限用户拥有的过程,这些用户可以做任何 DBA可以。

【讨论】:

  • 是的 - 我知道它们是高级特权,这就是为什么我很想知道谁拥有它们!感谢您的明确答复。
猜你喜欢
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 2022-10-14
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多