database - 以普通用户身份连接而不授予权限时在 Oracle 数据库中收集 dba_users 信息
问题描述
我想查询 DBA_USERs 以识别系统和非系统用户/模式。但是,我的客户端应用程序无法以 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')
我能够以普通用户或非 sys 用户的身份运行此查询。
这是完整的吗?我想继续在我的生产代码中使用这个查询。任何人都可以通过使用此查询(使用 all_users 而不是 dba_users)指出我可能丢失的任何潜在问题或数据。提前致谢。
解决方案
您的问题假设您可以访问数据库中您未被授予访问权限的信息。
数据库设置为针对此类情况是安全的。
至于你的“黑客”——
这是完整的吗?
不会。您的查询不会抓取任何有效用作登录帐户的模式。也就是说,为空的模式。这些用户存在,但他们在 _TABLES 视图中没有任何行。
此外,如果您想走这条路,您应该使用 DBA_OBJECTS 视图。您的架构可以拥有一个视图,但不能拥有一个表。而且,如果您查询 ALL_ 视图,您将只能看到您有权限查看的数据字典。
一天结束 - 你需要一些 DBA_view 的爱。你是DBA吗?如果是这样,请将选择授予您的应用用户并锁定该用户,使其不能用于坏事。
如果您不是 dba,请向您的 DBA 寻求解决方案。
推荐阅读
- scala - 为什么除了错误之外我看不到我的演员级别的日志消息
- android - 我的应用未显示清单文件中的名称
- html - 如何从 p 或 div 中抓取文本,输出给出一个空列表或无
- angular - Angular 应用程序中页脚后的额外空白
- amazon-web-services - 如何连接 AWS 账户
- native-base - 本机基础标签 - 知道如何删除标签周围的边框吗?
- react-native - Reactnative TypeError 中未显示特定页面的 Json 数据:
- r - R 中的 plotly 包如何从没有人脸信息的顶点信息创建实体 3D 网格
- php - 如何从指定文件夹中获取多个单独的旋转随机图像
- android - 在回收站视图中,如何确定单击的单选按钮来自 Android 中的同一个单选组