特定于数据的用户权限模型/架构设计

时间:2017-04-10 16:57:21

标签: permissions domain-driven-design database-schema acl microservices

我的应用管理用户之间共享的用户数据,具有不同的权限,如只读,编辑,超级用户,重命名,删除等。

我正在权衡两种方法来建模用户权限,第一种是更简单的方法,第二种涉及更多的工作,但更具可扩展性,可重构性,我认为

(1)快速解决方案,对user permission属性进行硬编码:

-- basic data
CREATE TABLE symbol (
    id INT,
    name VARCHAR(255)
);

CREATE TABLE user (
    id CHAR(10) 
);

CREATE TABLE user_permission (
    symbol_id INT,
    user_id CHAR(10),
    readable BIT,
    writable BIT,
    owner BIT,
    rename BIT,
    deletion BIT
);

(2)完整解决方案,对entitlements进行硬编码:

enter image description here

我正在考虑的领域是:

  1. 可扩展性 - 需要或不改变模型&模式
  2. 微服务 - 可以分拆成单独的数据库吗?
  3. performance - filter algos,查询中的联接数
  4. no-sql缓存 - 不知道但是反规范化用户权限听起来很疯狂
  5. admin for users - 需要良好的用户体验
  6. 管理员为DBA /支持 - 不希望投诉和无休止的支持请求
  7. 使用Spring Data REST的Web服务API简单性/复杂性 - HAL
  8. 我想使用更复杂的解决方案,因为它不太可能在将来需要重新工作,但我有点担心UI中涉及的性能和管理任务,以便用户管理它。

    乌托邦式解决方案是基于Java的第三方Web应用程序,提供允许管理员使用的用户界面。

    编辑:有趣的是看到其他人处理同样的问题:Authorisation in microservices - how to approach domain object or entity level access control using ACL?

1 个答案:

答案 0 :(得分:0)

由于很难获得与安全相关的软件,我建议不要使用现有的开源解决方案来实现自己的解决方案。在撰写本文时,Hydra项目似乎最有希望。具体请查看您的用例的access control features