暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

回收DBA角色引发的权限问题

原创 冯睿 2022-06-19
2174

背景:

某日客户进行周期审计,发现数据库内(11.2.0.4)部分用户拥有DBA权限要求回收

revoke dba from user1;

在回收了dba角色的权限后,收到开发人员报障,无表空间操作的相关权限,经过排查后发现用户缺少了unlimited tablespace权限,因此报错,在赋权后故障恢复。

grant unlimited tablespace to user1;

这里当时产生了一个疑问,为什么回收DBA角色会影响到unlimited tablespace?在创建用户之初并没有特意单独授予该权限,接下来通过实验验证。

正文:

首先创建一个测试用户,可以看到该用户并无系统权限

create user test_privs identified by fr123;
select grantee,privilege from dba_sys_privs where grantee='TEST_PRIVS';

图1.png

授予测试用户connect和resource两个角色

grant connect to test_privs;
grant resource to test_privs;
select grantee,privilege from dba_sys_privs where grantee='TEST_PRIVS';

图2.png

通过上述测试可以发现,角色resource其中包含了unlimited tablespace权限,因此在将该角色授予用户时,用户也拥有了unlimited tablespace权限。

接下来模拟测试回收dba角色后的权限变化,首先将DBA角色授予测试用户,能够看到系统权限依然是unlimited tablespace

图3.png

回收DBA角色后发现unlimited tablespace权限也被一并回收,符合本文开头描述的现象。

图4.png

此时如果需要unlimited tablespace权限,则需要单独授权

图5.png

那么,为何在回收DBA角色后unlimited tablespace权限也会被一并回收?再创建一个用户单独授权DBA角色,观察一下系统权限情况。

图6.png

通过上述实验可以看出,dba角色也包含了unlimited tablespace权限,因此在回收dba角色后,该权限也会被回收。

以上测试过程是在11g版本,后续更高级版本是否还会有此问题?继续测试。

19c.png

19c 图2.png

可以看到,在19c中resource角色已经不包含unlimited tablespace权限,如果单独授权了unlimited tablespace后,又授予了dba角色,在回收权限时,unlimited tablespace权限依然会被一并回收。

通过查询网上资料发现,在12c开始Oracle就将resource角色中的unlimited tablespace权限分离出去了,如果有需要该权限,则需要额外单独赋权。

结论:

1.在11g中resource角色包含unlimited tablespace权限,如用户还拥有DBA角色,那么在回收DBA角色时会将unlimited tablespace权限一并回收。

2.从12c开始resource角色中不包含unlimited tablespace权限,需要额外单独赋权。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论