📌 问题分析与解决方案
某零售企业,为给超市价签提供商品信息接口,采取了数据库直连模式,只读访问特定视图, 最初,只给了一张视图的SELECT权限, 但是发现 每次登录都会提示 动态执行表不可访问,如下图:由于新用户缺乏权限引起,针对性的,进行了赋权:
-- 使用SYS账户执行
GRANT SELECT ON SYS.V_$SESSION TO DZJQ_USER;
GRANT SELECT ON SYS.V_$SESSTAT TO DZJQ_USER;
GRANT SELECT ON SYS.V_$STATNAME TO DZJQ_USER;
执行赋权之后,错误提示消失. 但是另外一个问题面临困扰,就是所有用户名称都暴露出来,虽然看不到具体对象,但是用户名本身,就不应该随意外泄!!!
🔍 问题根本原因逐步分析
-
权限泄漏来源:
- 用户拥有对
v_$session
,v_$sesstat
,v_$statname
的 SELECT 权限 - 这些动态性能视图可间接暴露用户信息
- 用户拥有对
-
Public 角色漏洞:
- 图3/4 显示用户无显式角色权限,但仍通过