【发布时间】:2014-04-30 11:58:17
【问题描述】:
我相信你们中的许多人都已经这样做了,并且正在寻找一些指导来设计一个可以为多个用户处理数据(行级)安全性的强大、可扩展的应用程序。
我们正在研究一个系统,在该系统中,一些用户(一些作为个人,一些作为更大群体的一部分)需要访问他们自己的数据以及其他个人和组织与他们共享的数据。在某些情况下,共享数据只是为了查看,而在其他情况下,将提供完整的编辑权限。 即使在同一个组织内,也需要限制用户可以看到组织中其他用户创建的数据的内容。
所以一个非常粗略的例子可能是...... 具有角色 X 的用户 A,(个人用户) 具有角色 Y 的用户 B(个人用户) 具有角色 Z 的用户 C(个人用户) 组织 AA 中具有角色 X 的用户 D 和 E 组织 AA 中具有角色 Y 的用户 F 和 G
每个单独的用户都可以在我们的系统上创建例如合同。该合约不应该被其他任何人查看,直到他们选择与其他个人用户共享该合约,例如 A 将与用户 B 或 F 共享他的合约。 但是用户 A 可能还想与组织 AA 中角色 Y 的所有用户共享他的合同。 同样,共享合同甚至可能意味着允许编辑合同。
我们最初希望为每个单独的用户提供一个单独的架构,以确保数据级别的安全性,但这使得共享更加复杂,并且还可能导致 1000 多个架构(这似乎不是一个好主意)。 因此,似乎我们唯一的办法是将所有数据留在一个数据库中的一个模式中,并简单地设计一个用户和角色驱动的应用程序级安全模型,该模型可以容纳每个合同上所有必需的 CRUD 权限。听起来这会变得非常复杂并且“不那么漂亮”。对于每个合同,我们必须按组织定义用户和角色列表,其中每个用户/角色具有单独的权限。 有没有人做过这样的事情?关于良好且安全的应用程序设计有什么建议吗?
谢谢
【问题讨论】:
标签: security permissions roles