0

我将CREATE SESSION权限授予最近创建的数据库用户,并授予他SELECT对不同数据库模式的某些对象的权限。

我发现一个与最近创建的数据库不同的应用程序架构(SCHEMA#),我想了解这种现象。v$sessionUSERNAME

我认为他执行了alter session set current schema,我想知道是否可以撤销alter sessionOracle 11g 中的特权。

4

1 回答 1

2

声明的文档alter session说:

要启用和禁用 SQL 跟踪工具,您必须具有ALTER SESSION系统权限。

要启用或禁用可恢复空间分配,您必须具有RESUMABLE系统权限。

除非另有说明,否则您不需要任何特权来执行此语句的其他操作。

由于您不需要任何权限来执行alter session set current_schema,因此您无法撤销任何操作来阻止该操作。如果您实际上已授予alter session-您没有,根据您所说的-那么您当然仍然可以撤销它,但这对更改当前模式的能力没有影响。

但这并不是真正的问题,安全指南中提到这是一件好事:

例如,给定的模式可能拥有特定应用程序的模式对象。如果应用程序用户有权限这样做,那么他们可以使用典型的数据库用户名连接到数据库并使用应用程序和相应的对象。但是,没有用户可以使用为应用程序设置的模式连接到数据库。此配置可防止通过模式访问关联对象,并为模式对象提供另一层保护。在这种情况下,应用程序可以发出一条ALTER SESSION SET CURRENT_SCHEMA语句将用户连接到正确的应用程序模式。

您最近创建的用户仅通过更改其当前架构就没有任何额外的特权或能力。他们还没有“成为”那个模式;他们仍然只能通过授予对象的选择权限来执行您指定的事情。他们看不到其他任何东西,也无法对他们能看到的物体做任何事情。他们没有继承模式所拥有的任何特权——例如,他们不能在该模式下创建或删除对象。(您必须明确授予他们额外any的权限,这大概是您无意这样做的。)

他们可以做的是引用这些对象,而不必在它们前面加上模式名称,也不必创建同义词。但是他们仍然只能从中选择(如果这是您授予的唯一特权)。

于 2019-09-04T09:19:21.240 回答