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

Permissions 特定于数据的用户权限模型/架构设计,permissions,domain-driven-design,database-schema,acl,microservices,Permissions,Domain Driven Design,Database Schema,Acl,Microservices,我的应用程序管理用户之间共享的用户数据,具有不同的权限,如只读、编辑、超级用户、重命名、删除等 我正在权衡两种建模用户权限的方法,第一种是更简单的方法,第二种涉及更多的工作,但我认为更具可扩展性和可重构性 (1) 快速解决方案,根据用户权限进行硬编码属性: -- basic data CREATE TABLE symbol ( id INT, name VARCHAR(255) ); CREATE TABLE user ( id CHAR(10) ); CREATE

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

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

(1) 快速解决方案,根据
用户权限进行硬编码
属性:

-- 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) 完整的解决方案,针对
权利进行硬编码

我正在考虑的领域包括:

  • 可扩展性-是否需要更改模型和模式
  • 微服务-是否有可能分拆成单独的数据库
  • 性能-筛选算法,查询中的联接数
  • 没有sql缓存-不知道,但是去规范化用户权限听起来很疯狂
  • 管理员为用户-需要良好的用户体验
  • DBA管理员/支持-不要抱怨和没完没了的支持请求
  • 使用SpringDataREST的web服务API的简单性/复杂性-HAL
  • 我想使用更复杂的解决方案,因为它不太可能在将来需要重新工作,但我有点担心UI中涉及的性能和管理任务,以允许用户管理它

    一个乌托邦式的解决方案是一个基于Java的第三方webapp,它提供了一个允许管理员访问的用户界面


    编辑:看到其他人解决同样的问题很有趣:

    由于很难正确使用安全相关软件,我建议不要实施您自己的解决方案,而是使用现有的开源解决方案。在撰写本文时,这个项目似乎最有希望。请特别关注您的用例。

    由于很难正确使用安全相关软件,我建议您不要实施自己的解决方案,而是使用现有的开源解决方案。在撰写本文时,这个项目似乎最有希望。具体地看一下您的用例。

    使用KISS和YAGNI。另外,在CQRS中,非规范化是微不足道的。我完全支持KISS,但YAGNI往往过于主观,在现在一点努力就可以节省以后很多努力的情况下被滥用。我很想知道,当涉及到访问列表时,CQR中的非规范化是多么微不足道。如果我完全反规范化,50个用户的访问列表将导致数据量爆炸。您可以使用支持列安全和行安全的Postgres吗?使用KISS和YAGNI。另外,在CQRS中,非规范化是微不足道的。我完全支持KISS,但YAGNI往往过于主观,在现在一点努力就可以节省以后很多努力的情况下被滥用。我很想知道,当涉及到访问列表时,CQR中的非规范化是多么微不足道。如果我完全去规范化,50个用户的访问列表将导致数据量爆炸。您可以使用支持列安全和行安全的Postgres吗。有趣的是,它没有前端,如果我发现任何已经有了前端的东西,它就几乎排除了。有趣的是,它没有前端,如果我发现任何已经有前端的东西,它几乎就不可能出现。