点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


问题背景





问题分析



B用户(较低权限)创建了Invoker’s right procedure,A用户(较高权限)调用B用户的procedure执行时使用的是A的权限,为防止B在A不知情的情况下修改Procedure利用A的高权限做一些越权操作,等下次A用户执行procedure是这些操作便被执行。
12c中引入了inherit privilege权限,它表明invoker是否能以invoker的身份去执行owner的invoker’s right privilege,或者说B用户的procedure是否有权以A用户的权限去运行这个procedure。 默认情况下系统对于新建的用户会将inherit privilege权限授予PUBLIC,相当于grant inherit privileges on NEWUSER to PUBLIC。


问题解决


inherit privileges通过GRANT和REVOKE进行赋权或取消赋权。
invoking_user(dba_user)只把自己的inherit privileges赋予自己信任的procedure_owner(hacker_user)中,防止调用不安全的存储过程或函数。
GRANT INHERIT PRIVILEGES ON USER invoking_user TO procedure_owner; REVOKE INHERIT PRIVILEGES ON USER invoking_user FROM procedure_owner。


本文作者:余家豪(上海新炬王翦团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




