【问题标题】:Oracle - grant non-dba user rigths to create grants on another user objectsOracle - 授予非 dba 用户权限以在另一个用户对象上创建授权
【发布时间】:2014-11-04 11:40:28
【问题描述】:

是否有可能授予 Oracle 数据库上的普通用户访问另一个模式中的表的权限?由于我们公司的安全政策,我不能简单地授予该用户 dba 或 sysdba 权限,因为我可以找到很多这样的解决方案。我的目标是使用只有管理员知道的凭据创建特殊帐户,这些管理员可以执行某些 dba 操作并且不能提升常规用户权限。

我需要类似的东西:

  • 我们有 user1、user2 和 user3
  • 我们授予 user1 一些特殊权限
  • 现在我们可以作为 user1 执行:将 user2.table1 上的选择授予 user3

关于如何实现它的任何想法?

【问题讨论】:

    标签: oracle


    【解决方案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 一起执行授权。
    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多