本质上,无论何种类型的权限管理模型,都可以抽象出三个基本要素——即:用户、系统/应用、策略。
策略决定用户如何与不同功能的应用程序交互。 反过来,也就是说,无论设计什么样的权限管理模型,都是基于这三个基本要素。
本文重点介绍目前应用最广泛的RBAC模型,但这里介绍三个基本要素,主要是为了帮助大家更好地理解权限管理2d素材,避免在众多权限模型中迷失。
不同的公司或软件提供商设计了无数的方法来控制用户对功能或资源的访问。 但无论哪种设计,都可以分为四种经典的权限模型——自主访问控制(DAC)、强制访问控制(MAC)和基于角色的访问控制(RBAC)。 访问控制)和基于属性的访问控制(ABAC,基于属性的访问控制)。
(我觉得翻译不好系统角色权限管理设计,但又找不到更合适的,本文以下内容均用英文首字母替换:DAC、MAC、RBAC、ABAC)。
1. DAC、MAC
本文主要分析RBAC的使用场景以及如何基于该模型设计合适的权限管理系统。 不过,从文章完整性的角度出发,以便于理解本文,将对DAC、MAC和ABAC进行简单介绍。
DAC:被操作对象系统角色权限管理设计,根据访问控制规则,决定操作主体可以对操作对象进行哪些操作,例如只读或可写权限。 自治的含义是具有一定权限的用户可以将权限授予其他用户。
MAC:操作对象和用户都有自己的权限标识符。 用户是否可以操作该对象取决于权限标识之间的比较关系。 该模型多用于层级明显、对信息访问安全要求较高的场景,例如军队。
ABAC和RBAC有很多相似之处,而且相比较而言,ABAC实际上更加灵活,也符合未来发展的方向。 因此,我们分析完RBAC之后,再回过头来看看ABAC。
2. 那么,什么是RBAC?
Role-based Access Control,基于角色的权限控制模型。
顾名思义,角色是为用户定义的,通过角色来控制权限。 目前应用最广泛的是基于角色的权限控制模型。 尤其是在2B方向SAAS领域,应用尤为普遍。
如上图所示,用户有角色,可以有多个角色,每个角色对应不同的权限。
这样做的好处是不需要为每个用户配置权限,具有很大的灵活性和方便性。 当用户和权限的量级达到另一个层次时,就引入了角色组和权限组的概念。 在此不再展开。 有兴趣的读者可以搜索一些资料。
3、如何使用RBAC模型设计权限系统?
我们已经知道什么是 RBAC 模型。 在分析如何基于该模型设计权限系统之前,我们先来分解一下该模型的要素。
第一个是:用户、角色、权限。
权限,具体到某个软件,其实包括两个方面。 一是菜单权限,二是数据权限。
不同的行业会有不同的使用场景,用户角色权限模型也会发生不同程度的变化。 但在底层,还是和我上面画的图脱不了关系。
上图是从官网上看到的。 是销售自动化领域非常典型的用户权限管理设计。
接下来我们抽象一个场景或者案例来帮助我们理解整个权限管理的设计流程。 假设A公司是一家大中型制造企业。 公司拥有OA、HR、CRM、ERP等一系列管理软件。 公司有数万名员工,不同的人员有不同的职责。 这体现在管理软件上,这意味着他们需要使用不同的功能来完成他们的工作。
帐户管理
帐户是人与软件交互时身份的转变。 账户后面代表的是执行操作的人。 账户管理应该是对所有需要与系统交互的人员进行统一管理,包括基本信息人物立绘,如人员的姓名、性别、手机号码、部门等属性。
角色管理
角色管理基于实际场景,例如:使用系统的公司或团体使用什么类型的角色,即什么类型的人需要不同的业务菜单和业务数据。
角色管理归根结底就是将这个角色对应的人员日常工作所需的菜单和功能归为一组。 为每个操作组定义不同的名称——即角色名称。
当然,这个角色管理不仅规定了这个角色的人平时可以查看和操作哪些功能,还规定了这个角色可以看到什么范围的数据。 前面说过,权限实际上包括菜单权限和数据权限。
系统中功能控制的粒度越细,对于用户来说角色配置就越灵活,但对于系统设计者来说,系统的复杂度自然会增加,成本也会增加。
因此,控制到哪个级别取决于具体的业务场景。 例如,有些行业的系统可能只能控制一级菜单(一些SAAS工具),但有些系统不仅需要控制所有子菜单、各级菜单、各个按钮的操作,甚至需要控制不同领域(如Salesforce的权限控制系统)。
不过我们把基本模型抽象出来,然后根据实际业务进行发散,这还不是最困难的事情。
4. 看看ABAC,想象一下未来的权限模型。
至此,我们可以了解到RBAC模型实际上可以解决大部分权限设计问题。
那么,ABAC到底是什么? 它存在的意义是什么? 它能给我们未来权限设计趋势带来哪些启示?
带着这些问题,我们先来看看ABAC模型到底是什么。
ABAC,基于属性的访问控制。 基于属性的访问控制。 一般来说,属性分为三类:用户属性、系统或应用程序访问的属性(数据和操作)以及环境属性。
换句话说,系统根据一组或多组属性是否满足预设规则来动态控制谁可以访问哪些功能数据和操作。 RBAC模型实际上可以看作是静态的、单集属性的ABAC模型。
理解这个模型的一个例子是:只有当用户角色为Admin时,在工作时间,在C栋实验室B,才能访问D文件。
事实上,ABAC是一个可以最细粒度管理权限的模型。 它允许设计者使用任何用户属性、环境属性或多个属性的交集或并集来组合动态权限判断逻辑。
它的功能非常强大,可以有效帮助信息辨别能力差的用户过滤垃圾信息。 您还可以让企业在您没有意识到的情况下让营销广告充斥您生活的每个角落。
但我始终相信,科技一定会让生活更美好。
5.总结
权限管理可能是每个2B产品经理都需要面对的问题。 但无论是C端还是B端产品,了解权限管理的设计规则都可以让你更好地理解产品架构,对产品的每一次迭代都有清晰的认识。