【问题标题】:Forbid the owner of a user from GRANTing on that table禁止用户的所有者对该表进行 GRANTing
【发布时间】:2019-09-12 14:33:01
【问题描述】:

我试图让数据库用户能够更改/删除(某些)表,但对它们授予权限。这可能吗?

看起来他们需要成为表的所有者,但来自https://www.postgresql.org/docs/current/sql-grant.html

删除对象或以任何方式更改其定义的权利不被视为可授予的特权;它是所有者固有的,不能授予或撤销。 (但是,可以通过授予或撤销拥有该对象的角色的成员资格来获得类似的效果;见下文。)所有者也隐含地拥有该对象的所有授予选项。

这听起来是不可能的。然而,这绝对是这样吗?是否有某种方法可以使用触发器,例如使某些 GRANT 失败?

【问题讨论】:

  • 您无法阻止所有者颁发授权,但我假设用户将通过您创建的过程/功能工作。你把它放在一个单独的模式中,然后可以授权用户在过程/函数上执行。一旦创建了对象,它就归该角色所有,或者由该角色拥有,然后授予创建它的用户 DML 访问权限。这样用户就不能颁发授权,因为他们实际上不是所有者。

标签: postgresql


【解决方案1】:

是的,只有表的所有者或超级用户可以ALTERDROP 它,并且这些用户始终可以GRANT 对表的权限。

您唯一的选择是创建一个在GRANT 上触发的event trigger,并在应该禁止的表中引发错误。

【讨论】:

    猜你喜欢
    • 2019-11-12
    • 1970-01-01
    • 2020-12-21
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多