角色名称设计 提高ToBSaaS系统的权限管理效率

角色名称设计 提高ToBSaaS系统的权限管理效率

To B系统总会遇到权限管理问题。 权限管理不是业务功能,但它是整个系统的基础,决定着各个功能是否可用以及系统是否满足企业客户的管理需求。 ToB的SaaS系统需要面对众多企业客户不同组织结构和管理需求的使用场景,因此对权限管理的可配置性有更高的要求。 那么如何梳理和设计一套可灵活配置、满足企业严格权限管理需求的ToB SaaS系统的权限管理机制呢?

什么是权限

系统中一般有两种权限:功能权限和数据权限。 进一步细分,功能权限包括页面权限和操作(按钮)权限,数据权限分为字段权限和数据范围。

权限管理的设计思路

毫无疑问,目前最流行的权限管理模型是RBAC(基于角色的访问控制)。

角色名称设计图_角色名称设计怎么写_角色名称设计

但是如何设计和使用角色呢? 哪些权限被分组到一个角色中? 设计和使用了哪些角色? 系统是否巩固了角色及其权限? 针对不同的系统、不同的业务需求有不同的设计方案。

首先,我们将ToB的SaaS系统分为两类:专用型和通用型。 专用SaaS是指主要提供某些专业工具的SaaS,例如Salesforce的CRM提供客户关系管理工具,腾讯会议提供远程会议服务; 通用是指覆盖跨部门业务或覆盖企业客户。 适用于大多数或所有企业的 SaaS 服务。

对于专业性强、功能覆盖集中的专用SaaS系统,可以根据功能点或用户场景,抽象并内置典型角色。 这样可以大大减少用户初始化和配置权限的工作量。 和复杂性,但有四个先决条件:

对于与业务流程关系不密切的通用ToB SaaS系统和专业化ToB SaaS系统,由于系统面向企业各个部门,往往与部门业务密切相关3D角色,以及企业业务的变化发展或管理理念可能会导致企业客户的组织架构发生变化,岗位职责也可能发生调整。 梳理出一套合适的、覆盖所有业务场景的角色,并保证角色能够适应未来企业客户的业务和管理需求,几乎是不现实的。

因此角色名称设计,一般情况下,笔者认为对于通用的ToB SaaS系统或者与企业管理流程密切相关的专用ToB SaaS系统,基本系统管理角色是内置的,业务角色是可配置的。 这应该是一个更现实的选择。 具体步骤如下:

SaaS系统内置创建后端管理员和租户管理员的角色; 针对业务角色,系统支持角色的创建、修改、删除,灵活配置页面权限、操作权限、数据范围、字段权限。 (部分系统中可能不需要配置字段权限,具体取决于业务需求和场景)

角色名称设计_角色名称设计怎么写_角色名称设计图

如果用户数量庞大,可以引入用户组,即将具有相同权限属性的用户归为一个用户组,角色与用户组关联,即与用户组中的每个用户关联。 租户管理员或租户初始化人员根据公司的组织结构和员工的工作职责创建角色并分配相关权限。 为了提高易用性,可以根据典型的用户组织结构和岗位职责创建一组默认的角色和权限; 租户应用初始化时,租户管理员或初始化人员在此基础上结合企业的具体需求,可以添加或删除角色或修改角色对应的权限。

角色名称设计图_角色名称设计怎么写_角色名称设计

创建默认角色和权限的具体逻辑请参考上图。 其中,不同部门的同一职位使用一种角色,还是不同部门的不同职位使用不同的角色,可以根据潜在企业客户的组织结构和职位的标准化程度来确定:如果不同部门之间的同一职位以客户为导向的公司部门如果职责和权限差异较大游戏角色,则应根据部门和职位创建角色; 如果不同部门的相同职位的职责和权限相似,则可以直接根据职位创建角色(即不同部门的相同职位具有相同的角色)。 另外,如果选择后者,则可以根据角色所属的部门来确定具体的数据范围权限,从而减少数据权限配置带来的使用复杂度。

注意:为了保证业务模块与权限管理模块之间的松耦合,角色名称或角色ID在任何情况下都不应出现在业务模块的代码中。

执行

系统中涉及权限的部分可以分为两部分:权限管理模块本身和业务功能。 两者之间应保持松耦合的原则角色名称设计,它们应该仅通过权限ID或名称关联。

以下是权限管理模块的数据库表设计。

角色名称设计_角色名称设计怎么写_角色名称设计图

开源项目Shiro()提供了一个Java安全框架(身份认证、授权、加密、会话管理)。 基于Shiro+JWT+SpringBoot,可以轻松实现系统功能权限和数据权限的灵活配置和管理。

结论

虽然权限管理不能直接满足用户的业务需求,但糟糕的权限管理设计足以毁掉整个ToB SaaS系统,使系统无法满足企业的管理和业务需求。 因此,设计一个良好、优雅的权限管理模块是整个系统的基础。 基于RBAC模型,权限管理模块与业务功能模块之间实现松耦合对于整个系统至关重要。

文章来源:https://cloud.tencent.com/developer/article/2021358