我是管理方面的新手,正在努力提高Oracle数据库的安全性。
目前,非特权用户可以通过在数据库导航树中展开“其他用户”图标来查看SQL Developer中的所有其他用户的列表。
如何限制权限,使用户只能看到那些(其他)用户已授予他们对某个对象的权限(而不是所有用户,无论是否已授予权限)。
谢谢。
发布于 2012-05-05 05:38:03
您可能不能(至少不能合理地)。像SQL Developer这样的工具将查询ALL_USERS以获得用户列表,这将向任何有能力登录的用户显示数据库中的所有用户。如果A看不到关于B的任何其他信息,那么知道用户B的存在真的存在安全风险吗?
虽然我强烈建议您不要这么做,但您可以通过在非特权用户的模式中创建一个ALL_USERS视图(或为不同模式中的视图创建一个私有同义词)来解决这个问题,该视图的结构与ALL_USERS相同,但数据较少。由于大多数工具并不限定数据字典表SYS.ALL_USERS的名称,而只是限定ALL_USERS的名称,因此这种技巧通常有效。尽管如此,还是有很大的风险。不可避免的是,当一些安装脚本期望数据字典是“正常的”时,不可避免地会有意想不到的缺点,最终有人会使用一个完全限定数据字典表名的工具,等等。
发布于 2012-05-05 05:38:53
可能SQL Developer查询表(或视图,我不记得了) all_users。因此,您需要撤销此授权(以sysdba身份):
revoke select on ALL_USERS from PUBLIC;并将此权限授予您希望允许select的用户。
编辑:
我同意@Justin Cave的回答。这有风险,而且,他提出了一个很好的问题:
如果A看不到关于B的任何其他信息,那么知道用户B的存在真的是一种安全风险吗?
发布于 2017-11-11 03:04:23
根据你的问题:如果A看不到关于B的任何其他信息,那么A知道用户B的存在真的有安全风险吗?
我认为是,如果用户A(非特权用户)知道B的存在,它可能会尝试连接(暴力破解)和:选项a: A成功,B是特权用户选项b: A失败,因为B有一个强密码,并且在用户B上有一些配置文件限制,在A多次尝试以B身份连接后,用户B被锁定,这可能是拒绝服务的问题。
https://stackoverflow.com/questions/10456383
复制相似问题