【发布时间】:2019-01-21 06:41:31
【问题描述】:
我需要在我的应用程序中实现访问控制。我需要控制谁可以编辑哪一行的哪些列。
规则的示例可能是:
- 用户只能编辑通过 TableB 链接到她的 TableA 中她自己的行(也只能为她插入行)(TableB 包含 User 和 TableA 的外键)。
- 用户只能编辑其个人资料的某些部分,而管理员可以更新其他部分。
我目前没有要求数据库向我的应用程序提供评估应用程序代码更改可能性所需的所有信息,而是考虑基于触发器的插入、更新和删除方法。在这种情况下,当不允许操作时会失败的触发器将被挂接到受控表。
- 我会告诉 Postgres 哪个用户正在使用本地配置工作。
- 然后我只是简单地运行该操作,同时期待失败的可能性。
假设我能够评估 Postgres DB 中的所有权限,我看到了一些积极的方面:
- 如果可以,我不需要在操作前询问数据库。
- 我不会在应用程序中乱扔权限评估。
- 即使不使用适当的模型,我也可以从应用程序的不同部分运行更新,同时保持安全性。
我的问题是:
- 这会成为扩展时的瓶颈吗? (它是一个非常传统的基于 Web 的 PHP 应用程序,所以我预计选择比更新多 100 倍。但这会改变 Web 服务器的评估,因为它比 DB 服务器更容易复制。)
- 是否有一些更好的知名设计实践来实现我想到的这种权限。
【问题讨论】:
标签: php postgresql permissions access-control