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 用户权限以在另一个用户对象上创建授权的主要内容,如果未能解决你的问题,请参考以下文章

oracle 创建用户授予权限问题

oracle怎么创建用户和授予权限

oracle怎么创建用户和授予权限?

oracle怎么授权授权的权限

oracle创建用户后需要授哪些权限

授予权限以在 oracle sql 过程中创建表