繁体   English   中英

以普通用户身份连接时在不授予特权的情况下在Oracle数据库中收集dba_users信息

[英]gather dba_users information in Oracle database when connected as normal user without granting privileges

我想查询DBA_USERs以识别sys和非sys用户/方案。 但是,我的客户端应用程序无法以SYS用户身份进行连接,因此无法直接查询dba_users。 当以用户身份连接时,我无法按照答案-> 在Oracle数据库中收集dba_users信息的方式授予用户特权,因为这是一个安全漏洞。

进一步调查,我发现all_users包含的数据与dba_users相同,但没有。 列(以及较少的详细信息)。

所以使用这个,我想出了以下查询-

SELECT distinct owner 
FROM all_tables 
where owner IN (SELECT username FROM all_users) 
and tablespace_name not in ('SYSTEM','SYSAUX')

我能够以普通用户或非系统用户身份运行此查询。

完成了吗? 我想继续在我的生产代码中使用此查询。 任何人都可以指出使用此查询(通过使用all_users而不是dba_users)可能会丢失的任何潜在问题或数据。 提前致谢。

您的问题假设您可以访问数据库中未被授予访问权限的信息。

设置数据库以防此类情况发生。

至于你的“ hack”-

完成了吗?

不会。您的查询不会获取任何有效用作登录帐户的架构。 即,模式为空。 这些用户存在,但是他们在_TABLES视图中没有任何行。

另外,如果您想走那条路线,则应使用DBA_OBJECTS视图。 您的架构可以拥有一个视图,但不能拥有一个表。 而且,如果查询ALL_视图,则只能看到具有私有权限的数据字典。

一天结束了-您需要一些DBA_视图的爱。 您是DBA吗? 如果是这样,请将选择授予您的应用程序用户并锁定该用户,以免将其用于不良情况。

如果您不是dba,请向您的DBA寻求解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM