《企业访问控制策略落地指南》
第3章 基于属性的访问控制(ABAC)

3. 基于属性的访问控制(ABAC)

基于属性的访问控制(ABAC)是一种细粒度的、动态的访问控制模型。它通过评估主体、资源、环境和操作的多维属性来决定是否授予访问权限,克服了传统模型(如RBAC)在复杂场景下的僵化问题。

主体属性 用户角色、部门、职级 资源属性 文件密级、类型、所有者 环境属性 时间、IP、设备状态 策略引擎 属性评估 + 策略匹配 → 授权决策 操作 读、写、删除 允许/拒绝

图3-1 ABAC核心要素:属性驱动策略引擎,输出动态授权决策

3.1 属性定义

属性是ABAC的基本构建块,通常分为四大类。属性值可以来自目录服务、数据库、设备传感器或上下文计算。

属性类别 示例 数据来源
主体属性 用户ID、部门、职级、安全许可、所属项目 HR系统、LDAP、IDP
资源属性 文档密级、创建者、数据分类、存储位置 数据资产目录、DLP标签
环境属性 访问时间、IP地址、设备合规状态、地理位置 网络设备、端点管理、GPS
操作属性 读取、写入、删除、导出、打印 应用系统、API网关

3.2 策略引擎

策略引擎是ABAC的核心决策组件。它接收来自策略执行点(PEP)的请求,结合属性值,对预定义的策略集进行逻辑评估,最终返回“允许”或“拒绝”决策。

1. 接收请求 2. 属性检索 3. 策略匹配 4. 决策输出 主体、资源、环境 从属性源获取值 评估策略规则 允许/拒绝/NA

图3-2 策略引擎四步决策流程

策略通常使用XACML或ALFA等语言编写。以下是一个简单的策略示例:

策略:仅允许“高级工程师”在“工作时间”访问“机密”文档
规则:
  IF  subject.role == "高级工程师"
  AND resource.classification == "机密"
  AND environment.time >= "09:00"
  AND environment.time <= "18:00"
  THEN  permit
  ELSE  deny

3.3 动态授权

动态授权是ABAC的核心优势。授权决策在请求发生时实时计算,而非预先分配。这使得系统能够响应上下文变化,例如:

  • 时间敏感:仅允许在工作日9:00-18:00访问财务系统。
  • 位置感知:从公司内网访问时允许下载,从外部VPN访问时仅允许查看。
  • 风险自适应:当用户设备未安装最新补丁时,自动降级为只读权限。
  • 紧急覆盖:在安全事件响应期间,临时提升特定人员的访问级别。
用户 时间 9:00-18:00? 设备合规? 允许访问 拒绝/降级 动态条件评估

图3-3 动态授权:基于实时上下文条件做出差异化决策

3.4 与RBAC对比

RBAC(基于角色的访问控制)和ABAC是两种主流的访问控制模型,各有适用场景。下表从多个维度进行对比:

对比维度 RBAC ABAC
授权粒度 粗粒度,基于角色 细粒度,基于多属性组合
动态性 静态,角色分配后权限固定 动态,每次请求实时评估
管理复杂度 较低,角色数量有限 较高,需维护属性源和策略
适用场景 组织架构稳定、权限需求明确 多云环境、数据分类复杂、合规要求高
性能开销 低,预计算权限 中等,需实时属性查询和策略评估

实践建议:在企业落地中,通常采用RBAC+ABAC的混合模式。使用RBAC管理基础角色权限,再通过ABAC策略进行细粒度约束。例如:

  • 角色“财务经理”拥有“财务报表”的读取权限(RBAC)。
  • ABAC附加条件:仅当访问时间在季度末且IP来自公司内网时,才允许导出报表。
RBAC 模型 用户 角色 权限 静态分配,角色即权限 ABAC 模型 主体属性 资源属性 环境属性 策略引擎 动态计算,属性驱动决策

图3-4 RBAC与ABAC架构对比:从静态角色分配到动态属性评估

总结:ABAC通过丰富的属性定义和强大的策略引擎,实现了动态、细粒度的授权。虽然管理复杂度高于RBAC,但在多云、零信任和合规要求严格的企业环境中,ABAC是更优的选择。建议企业从关键业务系统开始试点,逐步建立属性治理体系。