3

我是管理新手,并试图提高 Oracle 数据库的安全性。

目前,非特权用户可以通过在数据库导航树中展开“其他用户”图标来查看 SQL Developer 中所有其他用户的列表。

一个人如何限制权限,以便用户只能看到那些授予他们对某个对象的权限的(其他)用户(而不是所有用户,无论是否授予了权限)。

谢谢。

4

4 回答 4

3

你可能不能(至少不合理)。SQL Developer 之类的工具将查询ALL_USERS以获取用户列表,并将数据库中的所有用户显示给任何能够登录的用户。A 知道用户 B 存在是否真的存在安全风险如果 A 看不到关于 B 的任何其他信息?

虽然我强烈建议不要这样做,但您可以通过ALL_USERS在非特权用户的架构中创建一个视图(或为不同架构中的视图创建私有同义词)来解决该问题,该视图具有相同的结构ALL_USERS但数据较少. 由于大多数工具不限定数据字典表的名称SYS.ALL_USERS而不仅仅是ALL_USERS,所以这个技巧通常有效。不过也有很大的风险。当一些安装脚本期望数据字典是“正常的”时,不可避免地会出现意想不到的缺点,最终有人会使用完全限定数据字典表名的工具等。

于 2012-05-04T21:38:03.253 回答
1

可能是 SQL Developer 查询表(或我不记得的视图)all_users。因此,您将需要撤销此授权(作为 sysdba):

revoke select on ALL_USERS from PUBLIC;

并将其授予您要允许选择的用户。

编辑:

我同意@Justin Cave 的回答。这有风险,而且,他提出了一个很好的问题:

如果 A 看不到关于 B 的任何其他信息,那么 A 知道用户 B 的存在真的会带来安全风险吗?

于 2012-05-04T21:38:53.423 回答
0

根据您的问题:如果 A 看不到有关 B 的任何其他信息,那么 A 知道用户 B 的存在是否真的存在安全风险?

我认为是的,如果用户 A(非特权)知道 B 的存在,它可能会尝试连接(蛮力)并且:选项 a:A 成功,B 是特权用户选项 b:A 失败,因为 B 有一个强密码并且对用户 B 有一些配置文件限制,在 A 多次尝试以 B 身份连接后,用户 B 被锁定,这可能是拒绝服务的问题。

于 2017-11-10T19:04:23.440 回答
0

没有系统权限的用户,角色为“AUTHENTICATEDUSER”和“CONNECT”,可以正常登录并访问自己的对象,但不能选择其他用户,也不能在SQL Developer中展开“Other Users”。

于 2019-01-11T09:44:11.480 回答