Oracle - 授予非 dba 用户权限以在另一个用户对象上创建授权
Posted
技术标签:
【中文标题】Oracle - 授予非 dba 用户权限以在另一个用户对象上创建授权【英文标题】:Oracle - grant non-dba user rigths to create grants on another user objects 【发布时间】:2014-11-04 11:40:28 【问题描述】:是否有可能授予 Oracle 数据库上的普通用户访问另一个模式中的表的权限?由于我们公司的安全政策,我不能简单地授予该用户 dba 或 sysdba 权限,因为我可以找到很多这样的解决方案。我的目标是使用只有管理员知道的凭据创建特殊帐户,这些管理员可以执行某些 dba 操作并且不能提升常规用户权限。
我需要类似的东西:
我们有 user1、user2 和 user3 我们授予 user1 一些特殊权限 现在我们可以作为 user1 执行:将 user2.table1 上的选择授予 user3关于如何实现它的任何想法?
【问题讨论】:
【参考方案1】:在GRANT
documentation 中,您可以选择使用限定符WITH GRANT OPTION
:
指定 WITH GRANT OPTION 以使被授权者能够将对象权限授予其他用户和角色。
即如果 USER1 将 SELECT 授权给 USER2,并且您希望 USER2 能够将该授权传播给 USER3,您将在以 USER1 身份连接时使用以下内容
grant select on user1.table to user2 with grant option
您可以在以 USER2 身份连接时执行以下操作
grant select on user1.table to user3
【讨论】:
Ben,感谢您的回答,但这不完全是我的情况,请注意。我希望有一个帐户来执行所有任务,我不想切换到其他帐户。 @RLapinski 给出的答案是正确的。您想要一个超级用户而不授予超级用户能力。如果这是可能的,它将违反数据库中内置的每个安全约束。你在上面看到的其实很常见。 实际上我已经设法用不同的方法解决了我的问题,而无需特殊帐户。但如果你这么说,我会接受解决方案:) 我没有这么说@RLapinski,如果你有不同的答案,为什么不发布它以便其他人将来可以学习? 明白。我刚刚从我的示例中消除了对 user1 的需求,我只与 user2 一起执行授权。以上是关于Oracle - 授予非 dba 用户权限以在另一个用户对象上创建授权的主要内容,如果未能解决你的问题,请参考以下文章