【问题标题】:Deny doesn't take priority in case of permission chain?在权限链的情况下拒绝不优先?
【发布时间】:2021-10-16 11:51:28
【问题描述】:

拒绝通常比授予具有更高的优先级。例如,如果有拒绝选择,则会覆盖授予选择。

但是,当涉及到权限链时,假设用户有权访问存储过程或视图,并且视图的所有者与视图中使用的表的所有者相同,那么即使用户已拒绝表格,他仍然可以看到表格数据。

当涉及到权限链时,有没有办法强制拒绝?

【问题讨论】:

  • 这是设计使然。如果您不希望用户能够通过权限链接访问对象,则他们不应有权访问他们从中获取链接权限的对象。或者,也许,您应该更改其中一个对象的所有者,然后应该有权访问该对象的人应该是 GRANTed 明确访问它。

标签: sql-server database-security


【解决方案1】:

我认为您的意思是所有权链而不是权限链。当间接引用对象的所有者与直接引用对象(proc、view等)相同时,不检查间接引用对象的权限。用户只需要直接引用对象的权限即可。

为避免所有权链接行为,请更改至少一个间接引用对象的所有者(授权)。这将打破所有权链,以便授予 GRANT 和 DENY 权限,就像直接访问对象一样。请记住,除非存在没有覆盖 DENY 的 GRANT,否则不允许访问。

或者,除非您希望某人使用封装的功能,否则不要授予直接引用对象的权限。这使您可以利用所有权链接作为一种安全措施,仅授予对过程或视图的权限,同时防止对基础表的直接临时访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多