权限控制-RBAC模型

前言

在计算机和信息系统的发展过程中,安全问题一直是关注的焦点。传统的访问控制模型主要基于用户身份、资源和操作等方面进行控制,但这种模型存在一些严重的缺陷,如难以适应复杂的应用环境、权限管理不够灵活、难以实现分级授权等问题。

为了解决这些问题,RBAC模型开始被引入。

RBAC是什么

RBAC(Role-Based Access Control)模型是一种常用的权限控制模型,用于管理和控制用户对系统资源的访问权限。在 RBAC 模型中,访问权限是通过角色而不是直接与用户关联来进行管理的。

RBAC组成

  • 用户(User):用户代表系统中的实体,可以是个人用户或其他应用程序。用户通过被分配角色来获得相应的权限,从而决定其在系统中能够执行的操作。
  • 角色(Role):角色代表了一组相关权限的集合,通常与用户的职能、责任或角色相对应。每个角色拥有特定的权限,定义了该角色所能执行的操作。
  • 权限(Permission):权限是指用户对系统资源的访问能力。它可以是操作级别的,如读取、写入、删除等,也可以是对象级别的,如访问特定文件或数据库。

关系如下图:

角色和用户、角色和权限大多设计为多对多关系。

RBAC工作原理

把权限赋予角色,再把角色赋予用户,用户就拥有了角色所对应的权限。用户拥有的权限等于他所有的角色持有权限之和。

RBAC1

上边是基本的 RBAC0 模型,包括了 RBAC 最核心的概念和机制。RBAC0 模型主要解决了访问控制模型的简单性和灵活性问题,将访问权限的管理从用户直接解耦出来,实现了相对较好的权限管理和安全性。

RBAC1 在 RBAC0 的基础上,进行了 角色分层。通过给角色划分等级,每个等级拥有不同的权限,从而实现了更细粒度的权限管理。这种角色的分层让权限的分配更加灵活,可以根据具体需求来调整角色等级和相应的权限。

角色分层如下图所示:

角色分层,同一个角色可以有不同等级,不同等级又对应着不同的权限。

子角色可以对父角色的权限进行继承,但是子角色的权限一定小于父角色。

RBAC2

RBAC2 在 RBAC0 的基础上增加了 RBAC 的 约束模型。具体来说,这些限制可以分成两类,即静态职责分离(SSD)和动态职责分离(DSD)。通过这些约束模型,RBAC2 能够更好地保证权限的安全性和稳定性。

静态职责分离(SSD) 主要是对用户、角色和权限三者之间增加了一些限制,例如互斥角色和基数约束。在 SSD 中,一些特定的角色不能被分配给同一个用户。例如,同一用户不能被分配 "管理员" 和 "普通用户" 这两个互斥角色。另外,对于用户拥有的角色数量也有限制,即一个用户拥有的角色是有限的。在一些场景中,例如公司或组织的实际运营中,不同的职位或角色之间具有一定的排他性,不能同时由同一人担任。通过 SSD,我们可以保证这种排他性得以实现。

动态职责分离(DSD) 主要是在会话和角色之间增加限制。具体来说,DSD 可以动态地约束用户拥有的角色。例如,一个用户可以有多个角色,但是在一次会话中只能激活一个角色。这种动态的约束可以防止用户在会话中同时激活多个角色,从而保证系统的安全性。

RBAC2 用户、角色和权限的关系如下图所示:

RBAC3

RBAC3 是 RBAC2 和RBAC1的合集,所以它 既包含了角色分层,也包括了可以增加的各种约束。因此,RBAC3是这四种模型中最为全面和复杂的权限管理模型。可以实现更为精细和安全的权限管理。

总结

RBAC 适用于需要对用户进行细粒度访问控制的场景,比如企业内部系统。权限控制最难的部分在于业务上的设计,根据需求设计一个适应本企业的 RBAC 才是真正的难点。

相关推荐
爱的叹息1 分钟前
Spring Boot中事务状态(TransactionStatus)的核心信息及常见应用场景
java·spring boot·后端
安然无虞2 分钟前
31天Python入门——第20天:魔法方法详解
开发语言·后端·爬虫·python
再学一丢丢14 分钟前
Keepalived+LVS+nginx高可用架构
nginx·架构·lvs
IT程序媛-桃子20 分钟前
【网安面经合集】42 道高频 Web 安全面试题全解析(附原理+防御+思路)
运维·网络·安全·面试
锋行天下29 分钟前
WebSocket 即时通讯前后端设计和基于token的鉴权
前端·后端
猿java1 小时前
程序员,你使用过灰度发布吗?
java·分布式·后端
iOS开发上架哦1 小时前
Flutter,让我们把 Navigator与Route详解 再讲一遍
后端
半桔1 小时前
红黑树剖析
c语言·开发语言·数据结构·c++·后端·算法
我的div丢了肿么办1 小时前
vue3第二次传递数据方法无法获取到最新的值
前端·面试·github
上海川源信息科技1 小时前
DeepSeek 3FS 企业级部署全攻略|避坑实践(附方案)
架构