深入解析权限之钥RBAC模型!

在2B系统中设计中,角色基于访问控制(RBAC,Role-Based Access Control)是最常见的权限管理模型之一。它将权限分配给角色而非个别用户,简化了权限管理的过程。接下来我们一起了解下几种常见的RBAC模型。

1. 标准 RBAC(RBAC0)

标准 RBAC 模型包含最基本的三个元素:用户(User)、角色(Role)和权限(Permission)。在这个模型中,用户被分配到一个或多个角色,并且角色被赋予一系列的权限。用户通过角色间接拥有这些权限。

2. 角色分层 RBAC(RBAC1)

角色分层 RBAC 在标准 RBAC 的基础上增加了角色之间的继承关系,一个角色可以继承一个或多个其他角色的权限。这种模型允许创建更精细化的角色层级结构。

3. 受限 RBAC(RBAC2)

受限 RBAC 在标准 RBAC 的基础上增加了对角色分配的限制。DSD(Dynamic Separation of Duties,动态职责分离)和SSD(Static Separation of Duties,静态职责分离)是两种关键的概念,用于增强系统的安全性和确保操作的合规性。

静态职责分离 (SSD)

静态职责分离指的是在角色分配阶段就确定的职责分离规则。在这个规则下,某些角色不可被同一个用户同时拥有,因为这些角色执行的任务可能存在潜在的利益冲突或安全风险。

例如,一个用户不能同时被赋予"银行出纳"和"审计员"的角色,因为这样会给个人掌握过多的权限,可能导致欺诈或误操作。

动态职责分离 (DSD)

动态职责分离则是指在用户会话期间动态执行的职责分离规则。在DSD中,即使用户被分配了多个角色,也可能因为当前的操作上下文而被限制同时激活这些角色。

例如,一个用户可能同时拥有"系统管理员"和"普通用户"的角色,但在特定的会话中,系统可能只允许该用户激活其中一个角色,以此来减少安全风险。

4. 会话 RBAC(RBAC3)

RBAC3=RBAC1+RBAC2,既引入了角色间的继承关系,又引入了角色限制关系。会话 RBAC 集成了角色分层及受限RBAC的特点允许用户在同一会话中切换一组角色,从而在需要时切换他们的权限集。这种模型更加动态,适用于需要根据上下文切换权限的场景。

总结

下面我们通过一个图片可以直观地理解不同 RBAC 模型的结构和它们之间的关系。RBAC 为复杂的权限管理提供了一种清晰、高效的解决方案。在实际应用中,可以根据系统的具体需求选择合适的 RBAC 模型。

相关推荐
猪猪拆迁队10 分钟前
虚拟工厂仿真引擎的架构设计:让一条产线可编程、可观测、可干预
后端·ai编程
字节跳动数据库34 分钟前
文章分享——相似函数处理方法
人工智能·后端·程序员
云技纵横35 分钟前
@Transactional 失效的 7 种场景:第 5 种最难排查
后端
用户6757049885021 小时前
你知道 Go 结构体和结构体指针调用的区别吗?一文带你彻底搞懂!
后端·go
程序员cxuan1 小时前
读懂 Claude Code 架构分析系列,第一篇,开始!
人工智能·后端·架构
用户6757049885021 小时前
面试官问“装饰器模式”,这样回答薪资多要 3000!
后端
tntxia1 小时前
Geo Scene域名修改引起的一些问题
后端
用户298698530141 小时前
Java 实现 Word 文档加密与权限解除
java·后端
vanuan2 小时前
给你的A2A-Agent加把锁-认证鉴权实战指南
后端
Yeats_Liao2 小时前
14:Servlet中的页面跳转-Java Web
java·后端·架构