首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不授予权限的情况下以普通用户身份连接时,收集Oracle数据库中的dba_users信息

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

Stack Overflow用户
提问于 2019-03-12 19:34:36
回答 1查看 145关注 0票数 0

我想查询DBA_USERs,以便识别sys和非sys用户/模式。但是,我的客户端应用程序不能以SYS用户身份连接,因此我不能直接查询dba_users。我不能像answer -> gather dba_users information in Oracle database when connected as a user中提到的那样授予用户特权,因为这是一个安全缺陷。

进一步研究,我发现all_users包含与dba_users相同的数据,但no更少。列的数量(以及更少的细节)。

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

代码语言:javascript
复制
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),有人能指出我可能遗漏的任何潜在问题或数据吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-03-12 20:20:34

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

数据库设置为针对此类情况提供安全保护。

至于你的“黑客”-

这是完整的吗?

不是的。您的查询不会获取任何有效用作Log On accounts的模式。也就是说,模式是空的。这些用户是存在的,但是他们在_TABLES视图中不会有任何行。

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

一天结束-你需要一些DBA_视图的爱。您是DBA吗?如果是这样的话,将select授予您的应用程序用户并锁定该用户,这样它就不会被用来做坏事。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55120511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档