第1章 权限模型全景图:RBAC与ABAC核心概念及差异

权限模型是授权系统的理论基石。RBAC(基于角色的访问控制)与ABAC(基于属性的访问控制)分别代表了粗粒度静态授权与细粒度动态授权两种范式。本章从模块边界、组件职责、数据流与控制流、信任链路出发,建立清晰的权限模型全景图,为后续冲突处理案例提供统一的认知框架。

1.1 RBAC核心概念

RBAC 将权限抽象为“角色”这一中间层,用户通过角色获得权限,实现用户与权限的逻辑分离。其核心要素包括:

核心组件职责说明边界定义
用户(User)访问系统的主体,可以是人或服务账户仅持有角色引用,不直接关联权限
角色(Role)权限的集合,支持层级继承(Role Hierarchy)角色是授权的最小单元,粒度固定
权限(Permission)对资源的操作许可(如读、写、执行)权限必须挂载到角色,不可独立存在
会话(Session)用户激活角色的运行时上下文控制角色激活范围,支持最小权限原则
角色层级角色之间的继承关系(上级继承下级权限)层级深度受管理复杂度约束
  • 控制流:用户 → 身份认证 → 角色分配 → 权限查询 → 资源鉴权
  • 信任链路:角色分配由管理员或角色管理服务负责,权限变更需通过角色更新传播
  • 典型风险:角色爆炸(Role Explosion),当业务维度增多时角色数量急剧膨胀

1.2 ABAC核心概念

ABAC 不再依赖中间角色,而是通过主体、资源、动作、环境的属性组合进行动态策略评估。其核心要素包括:

核心组件职责说明边界定义
主体属性用户或其身份标签(部门、职级、区域)属性来源:身份系统、LDAP、自建目录
资源属性资源自身的元数据(分类、密级、所有者)属性由资源管理系统维护
动作属性操作的类型与上下文(读、写、批量导出)动作属性可携带参数和环境信息
环境属性访问时的外部条件(时间、IP、设备指纹)环境属性动态变化,不可伪造
策略规则基于属性组合的布尔逻辑判定规则策略引擎(PDP)负责解释执行

以下为一个典型的 ABAC 策略规则示例(JSON 格式):

{
  "policyId": "pol-finance-001",
  "effect": "Allow",
  "subjects": {
    "department": "Finance",
    "level": { "gte": 3 }
  },
  "actions": ["read", "export"],
  "resources": {
    "type": "report",
    "classification": "confidential"
  },
  "conditions": {
    "environment": { "ipRange": "10.0.0.0/8", "timeWindow": "09:00-18:00" }
  }
}
  • 控制流:主体请求 → 属性收集 → PDP 策略匹配 → 决策返回 → 资源执行
  • 信任链路:属性源的准确性决定授权安全,策略变更实时生效,无需角色重建
  • 典型风险:策略冲突(Policy Conflict)与属性值篡改,需引入策略评估优先级和属性签名机制

1.3 两种模型的主要差异

下表从模块边界、数据流、信任链路、粒度与运维成本五个维度给出对比:

对比维度RBACABAC
授权粒度粗粒度(角色级)细粒度(属性级组合)
数据流用户 → 角色 → 权限 → 资源(线性静态映射)用户 + 属性 → 策略引擎 → 资源(动态属性组合)
信任链路角色分配是信任锚点,管理员可控属性源是信任锚点,需防属性伪造
管理复杂度低,角色体系稳定后运维简单高,策略规则需持续维护与验证
灵活性与扩展性低,新增维度需创建新角色高,新增维度仅需扩展属性与策略
适用场景组织架构稳定、角色清晰的企业系统多维度、高安全、环境敏感的数据平台
架构决策提示:两种模型并非互斥,现代系统常采用 RBAC + ABAC 混合方案——用 RBAC 管理基础角色,用 ABAC 处理边界条件与动态环境策略。混合方案能够兼顾管理效率与授权灵活性,但需要额外处理策略冲突与评估优先级。

下图从架构组件与数据流视角对比两种模型的整体结构:

RBAC 与 ABAC 架构对比全景 用户 (User) 角色 (Role) 权限 (Permission) 资源 (Resource) RBAC 模型 主体属性 策略决策点(PDP) 策略规则 资源 + 环境 ABAC 模型 RBAC vs ABAC 核心差异维度 授权粒度:RBAC 角色级粗粒度 ↔ ABAC 属性级细粒度 ← 上一章 📖 返回目录 下一章 →