在以普通用户身份连接时,在Oracle数据库中收集dba_users信息,而不授予权限

问题描述 投票:0回答:1

我想查询DBA_USER以识别sys和非sys用户/模式。但是我的客户端应用程序无法作为SYS用户连接,因此我无法直接查询dba_users。我无法向用户授予权限,如答案 - > gather dba_users information in Oracle database when connected as a user中所述,因为它是一个安全漏洞。

进一步调查,我发现all_users包含与dba_users相同的数据,但是少了no。列(和更少的细节)。

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

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

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

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

database oracle privileges
1个回答
2
投票

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

数据库设置为对这种情况是安全的。

至于你的'黑客' -

这完整吗?

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

此外,如果您想要使用该路径,则应使用DBA_OBJECTS视图。您的架构可以拥有一个视图,但不能拥有一个表。而且,如果您查询ALL_视图,您将只能看到您有权查看的数据字典。

一天的结束 - 你需要一些DBA_观点爱。你是DBA吗?如果是这样,请将select选择授予您的app用户并锁定该用户,这样就不会将其用于不良内容。

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

© www.soinside.com 2019 - 2024. All rights reserved.