基于属性的访问控制(ABAC)
基于属性的访问控制(ABAC) 是什么?
基于属性的访问控制(ABAC)一种授权模型,通过对主体、资源、操作和环境的属性进行策略评估,来决定是否允许某次访问请求。
基于属性的访问控制用动态策略取代了静态的角色分配。决策引擎会针对四类属性进行规则评估:主体(部门、密级、角色)、资源(分类、所有者、标签)、操作(读取、删除、导出)以及环境(时间、源 IP、设备状态、威胁级别)。这使得系统能够做出非常细粒度、上下文相关的判断——例如,仅在医生值班班次期间并通过受管设备访问时,才允许其查看病历。ABAC 在 NIST SP 800-162(2019 年更新)中有正式定义,该标准将其定位为一种无需预先为每项资源开设账户即可控制信息共享的方式。
多数实际部署都遵循 XACML 参考架构,该架构将执行拆分为四个协同工作的功能:策略执行点(PEP)拦截请求,策略决策点(PDP)对其进行评估,策略信息点(PIP)获取缺失的属性,策略管理点(PAP)管理规则。现代技术栈往往用 Open Policy Agent 的 Rego 或 AWS/Azure 的属性条件来取代 XACML 冗长的 XML。ABAC 的优势在于灵活性与可扩展性——寥寥数条策略就能表达 RBAC 中需要成千上万个角色才能表达的内容——但其弱点在于策略复杂、审计更加困难("谁能访问 X?"变成了一个求解器问题),并且完全依赖于可信、及时更新的属性来源。
flowchart LR U[主体请求执行操作] --> PEP[策略执行点 PEP] PEP --> PDP[策略决策点 PDP] PDP -->|需要属性| PIP[策略信息点 PIP] PIP -->|主体 / 资源 / 环境| PDP PAP[策略管理点 PAP] -->|规则| PDP PDP -->|允许或拒绝| PEP PEP -->|允许| R[资源] PEP -->|拒绝| X[被阻止]
● 示例
- 01
一条 OPA 策略仅在 user.region == resource.region 且 device.compliant == true 时才允许访问。
- 02
一条 XACML 规则限制只允许欧盟用户从欧盟 IP 段导出个人数据。
● 常见问题
基于属性的访问控制(ABAC) 是什么?
一种授权模型,通过对主体、资源、操作和环境的属性进行策略评估,来决定是否允许某次访问请求。 它属于网络安全的 身份与访问 分类。
基于属性的访问控制(ABAC) 是什么意思?
一种授权模型,通过对主体、资源、操作和环境的属性进行策略评估,来决定是否允许某次访问请求。
如何防御 基于属性的访问控制(ABAC)?
针对 基于属性的访问控制(ABAC) 的防御通常结合技术控制与运营实践,详见上方完整定义。
基于属性的访问控制(ABAC) 还有哪些其他名称?
常见的别称包括: ABAC, 基于策略的访问控制。