常见的权限模型

权限模型有很多种,这里选择几种知名度较高的权限管理模型进行介绍。

DAC

DAC(Discretionary access control)指自主访问控制。它是 Trusted Computer System Evaluation Criteria(TCSEC)定义的一种访问控制模型。在这种访问控制模型中,系统会根据被操作对象的权限控制列表中的信息,来决定当前用户能够对其进行哪些操作,用户可以将其具备的权限直接或者间接授予其他用户,这也是其称为自主访问控制的原因。

自主访问控制经常与强制访问控制(MAC)对比。

MAC

MAC(Mandatory access control)指强制访问控制,也叫非自主访问控制。这种访问控制方式可以限制主体对对象或目标执行某种操作的能力。通过强制访问控制,安全策略由安全策略管理员集中制,用户无权覆盖策略。

ABAC

ABAC(Attribute-Based Access Control)基于属性的访问控制,有时也被称为 PBAC(Policy-Based Access Control)或者 CBAC (Claims-Based Access Control)。

ABAC 也被称为下一代权限管理模型。

基于属性的访问控制中一般来说包含四类属性:用户属性、环境属性、操作属性以及资源属性,通过动态计算一个或者一组属性是否满足某一条件来进行授权。

当然,上面介绍的这三种权限模型并非本章重点,因为我们在 Java 企业级开发中很少会 用到它们。

在企业级开发领域,目前最为流行的权限管理模型当属 RBAC。除了 RBAC 之外,还有一个 ACL 权限模型,Spring Security 中针对 ACL 也提供了相关的依赖,所以本章重点介绍这两种权限模型。