oracle public权限导致的权限扩散问题

一个客户问到我,oracle的connect的角色的权限非常大吗?为什么我新建了一个用户,赋予了connect的权限,但是却有权限查询和修改部分核心用户下的表?
这也太不安全了吧?
首先,可以肯定正常的connect角色的权限是非常小的,只有连接登录数据库的权限,但是不排除有人给connect角色赋予了其它的角色或者权限,让他使用下面的sql语句进行查询:
1.查看connect角色拥有的对象权限
select * from dba_tab_privs where grantee='CONNECT';


2.查看connect角色拥有的系统权限
select * from dba_sys_privs where grantee='CONNECT';


3.查看connect角色被赋予的其它角色
select * from dba_role_privs where grantee='CONNECT';


经过排查发现这些权限都是正确的,并没有赋予其它额外的权限。
那么很容易就又想到,可能是public用户权限过大导致的问题。
public用户在oracle中是一个比较特殊的用户,他是一个公共用户,所有的其它用户都会继承public用户的权限。
示例:


在suq用户下创建obj表:
create table obj as select * from dba_objects;
新创建一个brent用户,只赋予connect权限:
create user brent identified by brent;
grant connect to brent;
这个时候brent用户肯定是没有权限读取suq.obj的,但是如果你将读取的权限赋予了public,那么其它用户就拥有了读取的权限:
grant select on suq.obj to public;


特别的如果为了方便,还可以创建一个public同义词。

总结:
因此特别需要注意public用户的使用,不恰当的public权限会导致权限扩散。


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值