设为首页 收藏本站
查看: 638|回复: 0

[经验分享] Oracle用户访问权限与PUBLIC角色的关系

[复制链接]
YunVN网友  发表于 2016-8-14 06:46:31 |阅读模式
在数据库中创建了一个用户,这是给第三方系统用的。客户强调,这个用户只能访问到有限的表,在我们规定的范围内的表。
于是,我创建 一个用户,如user_third ,只给了connect 角色,用grant select on table 有限授权。
为此,我写了一文,请见 如何实现 Oracle中用户 B只能访问用户 A的视图 http://mikixiyou.iyunv.com/blog/1543530
用户访问密码交给客户后,又发现一个新问题,它居然能访问其他用户的表。
我核实了一下,发现它确实能访问别的用户的表。如数据 库中TT 用户下的表。
这是怎么回事?
(miki西游 @mikixiyou的文档,原文链接: http://mikixiyou.iyunv.com/blog/1546581
您从我列出的标题中,一定猜到了吧。这事一定 public 角色有关。
在 Oracle TimeTen 创建时,它创建的表会自动将它的查询权限授予给 public 角色。
而数据库中任何一个用户都默认拥有 public 角色。
因此,问题就在 public 角色的权限上。我们只需要查询 public 角色授予了哪些权限,再撤销这些权限即可。
通过执行下列 SQL ,我们能判断出哪些权限授予给了 public 角色。
SELECTGRANTOR,OWNER,TABLE_NAME,PRIVILEGE FROM DBA_TAB_PRIVS WHERE GRANTEE='PUBLIC';
部分结果如下:
GRANTOR                        OWNER                          TABLE_NAME                     PRIVILEGE
------------------------------------------------------------ ----------------------------------------------------------------------
××   XXYY                           TT_03_24577_L                  UPDATE
XXYY                           XXYY                           TT_03_24577_L                  SELECT
XXYY                           XXYY                           TT_03_24577_L                  INSERT
XXYY                           XXYY                           TT_03_24577_L                  DELETE
TT 表的查询更新删除插入权限都授予给了public 角色。这个很恐怖,对数据库系统的安全是有破坏的。
基于此,我们可以判定任何一个数据库用户都可以对这些表做查询更新删除插入操作。
怎么解决这个权限问题,是很简单的。但一定要保证不能影响到TT 的正常使用。这是个权衡的问题,可用性和安全两个角度的权衡。如果TT 不正常了,就考虑将其迁移到其他库上去,最好是独立的仅供TT 使用的库。
具体解决方法如下:
1 、从OracleTimeTen 上解决,在创建cachegroup 时,将授予公共权限的选项除掉。当然这么做的前提是要保证TT 能够正常使用。
2 、从数据库中将这些权限从public 角色撤销。同样前提是TT 在这些权限撤销后能正常工作。
撤销方法示例如下:
revoke selecton   TT_03_24577_L from public;
总结一下,这个实例说明了Oracle 的权限真够复杂的,日常管理时一定要留意一下public 角色的权限。
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-257331-1-1.html 上篇帖子: 安装和使用Oracle Instant Client 和 SQLPlus 下篇帖子: DB2与 ORACLE 中创建数据库分区表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表