oracle public权限导致的权限扩散问题
Posted 久违的太阳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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权限会导致权限扩散。
以上是关于oracle public权限导致的权限扩散问题的主要内容,如果未能解决你的问题,请参考以下文章