Oracle:限制“其他用户”可见

时间:2012-05-04 21:28:36

标签: oracle security permissions

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

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

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

感谢。

4 个答案:

答案 0 :(得分:3)

你可能不能(至少不合理)。像SQL Developer这样的工具将查询ALL_USERS以获取用户列表,并将向数据库中的所有用户显示能够登录的任何用户。对于A来说,确实存在安全风险如果A看不到关于B的任何其他内容,那么用户B是否存在?

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

答案 1 :(得分:1)

可能是SQL Developer查询表(或我不记得的视图)all_users。所以你需要撤销这个授权(如sysdba):

revoke select on ALL_USERS from PUBLIC;

并将此权限授予您要允许选择的用户。

编辑:

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

  

如果A知道用户B存在,那确实存在安全风险吗?   什么也看不到B?

答案 2 :(得分:0)

根据你的问题: 如果A无法看到关于B的任何其他内容,A是否真的存在安全风险?

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

答案 3 :(得分:0)

具有系统角色“ AUTHENTICATEDUSER”和“ CONNECT”的没有系统特权的用户将能够正常登录并访问自己的对象,但是将无法选择其他用户或在SQL Developer中展开“ Other Users”