news 2026/4/15 3:09:59

基于角色的访问控制(RBAC)介绍(Role-Based Access Control)(通过角色来管理用户权限的访问控制模型)角色继承、角色层级、职责分离SoD、互斥角色、ACL、ABAC

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于角色的访问控制(RBAC)介绍(Role-Based Access Control)(通过角色来管理用户权限的访问控制模型)角色继承、角色层级、职责分离SoD、互斥角色、ACL、ABAC

文章目录

  • 基于角色的访问控制(RBAC)详解
    • 一、什么是 RBAC?
      • 📌 举个例子
    • 二、RBAC 核心模型
      • 1️⃣ 用户(User)
      • 2️⃣ 角色(Role)
      • 3️⃣ 权限(Permission)
      • 4️⃣ 资源(Resource)
      • 5️⃣ 关系模型
    • 三、RBAC 的几种模型
      • 🔹 RBAC0(基础模型)
      • 🔹 RBAC1(角色继承)
      • 🔹 RBAC2(约束模型)
      • 🔹 RBAC3(完整模型)
    • 四、RBAC vs ACL
    • 五、RBAC 的实现方式
      • 1️⃣ 数据库设计示例
      • 2️⃣ 权限校验流程
      • 3️⃣ API 级权限控制示例(伪代码)
      • 4️⃣ 常见技术实现
    • 六、RBAC 的优缺点
      • ✅ 优点
      • ❌ 缺点
    • 七、RBAC 最佳实践
      • ✅ 1. 角色设计要贴近业务
      • ✅ 2. 控制角色数量
      • ✅ 3. 使用权限命名规范
      • ✅ 4. 引入权限缓存
      • ✅ 5. 与 JWT / OIDC 结合
    • 八、RBAC 的演进:ABAC
    • 九、总结

基于角色的访问控制(RBAC)详解

在现代软件系统中,权限控制(Access Control)是保障系统安全的核心机制之一。随着系统规模扩大和用户角色复杂化,传统的权限控制方式逐渐难以维护,于是RBAC(Role-Based Access Control,基于角色的访问控制)成为主流解决方案。

本文将系统性介绍 RBAC 的概念、模型、实现方式以及最佳实践。


一、什么是 RBAC?

RBAC(Role-Based Access Control)是一种通过“角色”来管理用户权限的访问控制模型。

👉 核心思想:

用户不直接绑定权限,而是通过角色间接获得权限


📌 举个例子

在一个企业系统中:

用户角色权限
AliceAdmin创建用户、删除用户
BobEditor编辑内容
TomViewer查看内容

在 RBAC 中:

  • 用户 → 绑定角色
  • 角色 → 绑定权限

而不是:

  • ❌ 用户 → 直接绑定权限(难维护)

二、RBAC 核心模型

RBAC 主要包含以下几个核心概念:

1️⃣ 用户(User)

系统的使用者,例如:

  • 员工
  • 客户
  • 管理员

2️⃣ 角色(Role)

角色是权限的集合,通常与业务职责对应,例如:

  • Admin(管理员)
  • Operator(运维)
  • Guest(访客)

3️⃣ 权限(Permission)

权限是对资源的操作能力,例如:

  • read(读取)
  • write(写入)
  • delete(删除)

4️⃣ 资源(Resource)

被保护的对象,例如:

  • API 接口
  • 数据库表
  • 文件
  • 页面

5️⃣ 关系模型

RBAC 的核心关系可以表示为:

User → Role → Permission → Resource

三、RBAC 的几种模型

RBAC 并不是单一模型,而是有多个演进版本:


🔹 RBAC0(基础模型)

最简单模型:

  • 用户 ↔ 角色
  • 角色 ↔ 权限

👉 特点:

  • 简单直接
  • 易于实现

🔹 RBAC1(角色继承)

支持角色层级(Role Hierarchy):

Admin ├── Manager ├── Employee

👉 特点:

  • 上级角色自动继承下级权限
  • 减少重复配置

🔹 RBAC2(约束模型)

引入约束(Constraints),例如:

  • 职责分离(SoD,Separation of Duties)
  • 互斥角色(不能同时拥有 Admin 和 Auditor)

🔹 RBAC3(完整模型)

RBAC1 + RBAC2 的结合:

👉 企业级系统常用模型


四、RBAC vs ACL

RBAC 常常和 ACL(Access Control List)对比:

对比项RBACACL
控制粒度角色级用户级
可维护性⭐⭐⭐⭐
灵活性中等
适用场景企业系统文件系统

👉 总结:

  • 小系统:ACL 更直接
  • 大系统:RBAC 更可维护

五、RBAC 的实现方式

1️⃣ 数据库设计示例

典型表结构:

users roles permissions user_roles role_permissions

2️⃣ 权限校验流程

一次请求的权限验证流程:

1. 用户登录 → 获取用户ID 2. 查询用户角色 3. 查询角色对应权限 4. 判断是否允许访问资源

3️⃣ API 级权限控制示例(伪代码)

funcCheckPermission(userID,action,resourcestring)bool{roles:=GetRoles(userID)permissions:=GetPermissions(roles)returnpermissions.Contains(action+":"+resource)}

4️⃣ 常见技术实现

  • 后端:

    • Spring Security(Java)
    • Casbin(Go / 多语言)
    • Django Permissions(Python)
  • 网关层:

    • API Gateway + JWT
    • OAuth2 / OIDC

六、RBAC 的优缺点

✅ 优点

  • 易管理(角色复用)
  • 可扩展(适合大规模系统)
  • 符合企业组织结构

❌ 缺点

  • 角色爆炸(Role Explosion)
  • 粒度不够细(相比 ABAC)
  • 动态权限支持弱

七、RBAC 最佳实践

✅ 1. 角色设计要贴近业务

不要设计:

  • ❌ 超级复杂角色

而要:

  • ✅ 按业务职责划分(如:运营、财务、客服)

✅ 2. 控制角色数量

避免:

一个用户一个角色(退化成 ACL)


✅ 3. 使用权限命名规范

推荐格式:

resource:action

例如:

  • user:create
  • order:view

✅ 4. 引入权限缓存

例如:

  • Redis 缓存用户权限
  • 减少数据库查询

✅ 5. 与 JWT / OIDC 结合

在 Token 中携带:

  • roles
  • permissions

提升性能


八、RBAC 的演进:ABAC

当 RBAC 不够灵活时,可以考虑:

👉ABAC(Attribute-Based Access Control)

基于属性控制,例如:

  • 用户属性(部门、等级)
  • 环境属性(时间、IP)
  • 资源属性

👉 示例:

允许访问:部门 = 财务 && 时间 = 工作时间

九、总结

RBAC 是企业级权限管理的基础模型,其核心优势在于:

  • 解耦用户与权限
  • 提升系统可维护性
  • 支持复杂组织结构

👉 一句话总结:

RBAC = 用户 → 角色 → 权限 → 资源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 3:09:58

GitHub加速插件实战手册:3分钟解决国内访问龟速难题

GitHub加速插件实战手册:3分钟解决国内访问龟速难题 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还在为GitHub下载速…

作者头像 李华
网站建设 2026/4/15 3:04:12

uBlock Origin深度配置指南:从零构建高效广告拦截解决方案

uBlock Origin深度配置指南:从零构建高效广告拦截解决方案 【免费下载链接】uBlock uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock 现代网页浏览体验中&#xf…

作者头像 李华
网站建设 2026/4/15 3:02:10

RexUniNLU Web服务运维手册:日志定位、异常重启、GPU资源隔离策略

RexUniNLU Web服务运维手册:日志定位、异常重启、GPU资源隔离策略 1. 服务概述与核心价值 RexUniNLU是阿里巴巴达摩院基于DeBERTa架构开发的零样本通用自然语言理解模型,专门针对中文语言特点优化。这个模型最大的特点是无需微调即可完成10种自然语言理…

作者头像 李华
网站建设 2026/4/15 3:02:09

AudioSeal部署案例:高校AI伦理实验室搭建AIGC音频审计沙箱环境

AudioSeal部署案例:高校AI伦理实验室搭建AIGC音频审计沙箱环境 1. 项目背景与价值 在人工智能技术快速发展的今天,音频生成技术(AIGC)已经能够产生高度逼真的人声。这给教育、科研等领域带来了便利,同时也带来了伦理挑战。某高校AI伦理实验…

作者头像 李华
网站建设 2026/4/15 3:01:00

STM32 LWIP TCP高频发送数据内存溢出问题解析与优化方案

1. 问题现象与背景分析 最近在做一个工业数据采集项目时,遇到了一个棘手的问题。我的STM32F407作为TCP服务器,需要以200微秒的间隔向上位机发送10字节的传感器数据。按照常理,这种小数据量的传输应该很轻松,但实际测试发现&#x…

作者头像 李华