ITPub博客

首页 > IT基础架构 > 网络安全 > 基于角色的安全性和显示grant语句的区别

基于角色的安全性和显示grant语句的区别

原创 网络安全 作者:yaanzy 时间:2005-03-02 10:59:46 0 删除 编辑
我们经常会遇到这种情况:
a用户把自己的表demo权限授予一个角色,再把这个角色授予用户b,用户b可以在sql语句中
访问a.demo,但是在创建视图、存储过程中用到a.demo却报错,必须要显示的用语句
grant all on a.demo to b; 才能创建这些对象[@more@]

原因是对于一个会话来说其状态可以打开或关闭,而授权却在所执行的grant后被永久存储到
数据字典中。

在DDL语句创建包、存储过程、存储函数、触发器和视图等数据库对象时,当前用户所拥有的
角色都会被禁用。

对于命名PL/SQL对象的情况,会报错:"ORA-01031:insufficient privileges",对象虽然
创建了但是状态是无效的。视图的创建也会失败,报"ORA-00924:table or view do not exist"。

这个Oracle行为是刻意这样设计的,这种显示的授权抵消了角色所带来的管理的好处,但是对于
避免角色的动态性所导致的不确定性来说这又是必要的。

参考资料:《High-Performance Oracle》Geoff Ingram   Chapter 5 Securing Your Database

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3898/viewspace-791478/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    108
  • 访问量
    759606