3. ABAC 属性体系:用户、资源、环境、操作属性及其作用

ABAC(基于属性的访问控制)的核心决策单元是属性。与RBAC依赖静态角色不同,ABAC在每次访问请求时动态评估一组结构化属性,这些属性被划分为四个明确的逻辑域:用户属性(Subject Attributes)、资源属性(Resource Attributes)、环境属性(Environment Attributes)和操作属性(Operation Attributes)。理解这四个边界的定义、来源及其在策略引擎中的交互方式,是构建可扩展ABAC体系的基础。

3.1 模块边界与分层视图

四类属性在权限系统中处于不同的数据层,其采集、存储与消费路径是隔离的。

模块边界划分:
- 身份源层(用户属性):LDAP/AD、IAM用户库、OIDC Token。
- 资源元数据层(资源属性):CMDB、资产管理平台、对象存储元数据。
- 运行时上下文层(环境属性):请求时间戳、客户端IP、网络分区、设备信任等级。
- 操作语义层(操作属性):API方法(GET/POST/DELETE)、操作对象类型、批处理/实时标识。

3.2 组件职责与属性详细定义

属性类型 来源示例 典型键值示例 核心作用
用户属性 IAM、SSO令牌、自建用户表 subject.department, subject.security_clearance_level, subject.org_unit_id 标识访问发起者的身份、组织归属及拥有权限的上下文
资源属性 CMDB、数据库元数据、文件标记 resource.data_classification, resource.region, resource.owner 描述被访问的客体敏感度、物理位置及管理归属
环境属性 请求头、终端检测/信任评估服务、GMT时间 environment.time_of_day, environment.client_ip, environment.trust_score 反映请求发生时的外部状态,不受用户或资源控制
操作属性 API Schema定义、请求体解析层 operation.method, operation.batch_size, operation.is_export 定义对资源施行具体行为的性质和范围

3.3 数据流与控制流:属性驱动的决策链路

当一次访问请求到达策略决策点(PDP)时,四类属性按照明确的数据流被注入评估引擎。整个过程不依赖角色间的继承关系,而是基于属性与策略规则的直接匹配。

数据流路径:
PIP(策略信息点)→ 属性聚合 → 策略决策点(PDP)→ 策略执行点(PEP)。
控制流遵循“先静态后动态”原则:用户属性 + 操作属性先行过滤,然后加载资源属性,最后引入环境属性进行运行时裁定。

3.4 属性交互的信任链路与风险点

信任链路:属性来源必须被可信的PIP签名或验证。用户属性来自身份提供者(IdP),资源属性来自授权的CMDB服务,环境属性来自受信的安全网关。任何未经签名的属性注入都会破坏信任链。

关键风险点:

  • 属性爆炸:未做属性模型设计,导致PDP每次评估需要遍历数百个松散属性,性能急剧下降。
  • 环境属性篡改:客户端可伪造IP或时间戳,若PEP未在网关层剥离不可信来源的环境属性,将产生授权绕过。
  • 属性值不统一:同一字段在用户属性和资源属性中的编码规范不一致(例如“production” vs “prod”),导致策略匹配失败。

3.5 选型权衡:何时引入ABAC属性模型

维度 RBAC纯角色模式 ABAC四类属性模式
属性维度数量 1维(角色ID) 4维以上(用户+资源+环境+操作)
策略表达复杂度 低 高,支持多条件组合
运行时性能 高(O(1)缓存) 中(需属性查找与表达式求值)
适合场景 组织层级稳定、权限粒度粗 数据敏感度高、需实时判断(如金融风控触发)

3.6 属性体系落地步骤与验收标准

落地步骤:

  1. 定义属性模型文档:明确四类属性的全量字段、枚举值及来源系统。
  2. 部署PIP服务:为每类属性建立独立的PIP,提供统一的返回格式(如JSON属性包)。
  3. 配置属性映射:在策略引擎中注册属性名称与PIP端点的绑定关系。
  4. 编写第一组控制策略:用“用户属性+资源属性”组合规则覆盖最高风险访问场景。
  5. 集成环境属性:接入安全网关传递的运行时上下文(如设备信任分、地理位置)。
  6. 压力测试与属性缓存:对高频属性(如部门ID)做本地LRU缓存,降低PIP调用延迟。

验收标准:

  • 所有属性值的来源均可向上溯源至一个受信系统(IdP/CMDB/网关),存在清晰的信令链路。
  • 在1000次/秒的并发请求下,PDP决策平均延迟小于5ms(不含网络开销)。
  • 不存在任何包含通配符匹配且缺少属性边界限制的策略规则。

3.7 属性体系结构图

以下SVG展示了ABAC四类属性域的位置及其在权限决策流水线中的数据流向。用户属性与操作属性注入请求上下文,资源属性从元数据存储中获取,环境属性从运行时网关附加。所有属性被PDP聚合后交由策略评估引擎裁决。

ABAC 四类属性体系与信令流 ABAC 属性域:用户、资源、环境、操作及其信令链路 用户属性域 subject.department subject.clearance_level 来源: IAM/IdP 资源属性域 resource.data_class resource.region 来源: CMDB 环境属性域 env.time_of_day env.trust_score 来源: 网关/实时 操作属性域 operation.method operation.batch_size 来源: API Schema 策略决策点 (PDP) — 属性聚合与规则引擎 将用户 / 资源 / 环境 / 操作属性组合成决策上下文 最终输出:Allow / Deny 携带审计上下文标签 图例说明: 用户属性 资源属性 环境属性 操作属性 PDP聚合决策 信令流
架构风险提示:环境属性是ABAC体系中最容易被伪造的输入域。若未在网关层剥离客户端传入的X-Forwarded-For或自定义时间戳,恶意请求可伪造环境上下文绕过策略。架构上应当在PEP上游部署强制属性清洗中间件,只保留由受信服务签注的环境属性。