细粒度权限治理系列 | ABAC学习

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

本文介绍了基于属性的访问控制(ABAC)的定义和使用,讨论了ABAC的功能组件和在大型企业中使用ABAC的问题。ABAC是一种逻辑访问控制模型,可以提供更细粒度的访问控制,并且可以与其他模型结合使用。

🔎

延伸解读

ABAC 与 ACL/RBAC 的关键区别

文章指出,ACL 和 RBAC 可视为 ABAC 的特例:ACL 依赖“身份”属性,RBAC 依赖“角色”属性,而 ABAC 的核心在于用复杂布尔规则集评估多种属性。这意味着当访问控制需求变化时,ACL 或 RBAC 可能需要逐一更新多处配置,而 ABAC 通过集中策略表达更易适应变化,但前提是属性管理和策略设计到位。

身份验证不等于访问控制

文章明确区分身份验证与访问控制:身份验证是验证主体标识符的行为,而访问控制是决定是否允许主体访问对象的决策。ABAC 可以在没有身份信息的情况下使用,本文也不涉及认证方法。读者需注意,部署 ABAC 时仍需假设主体绑定到可信身份或身份提供者,但认证机制本身不在讨论范围内。

大型企业部署 ABAC 的边界与前提

文章说明其范围聚焦 ABAC 核心概念,未详细讨论属性工程/管理、与身份管理集成、联合、态势感知、策略管理及自然语言策略转换等主题。同时指出所讨论的考虑因素并非全面,组织在选择和部署 ABAC 产品或技术前,应通过测试和独立产品审查来补充这些考虑。这提示读者将本文视为入门指南而非完整实施手册。

XACML 作为 ABAC 框架的参考

文章以可扩展访问控制标记语言(XACML)作为与 ABAC 一致的访问控制框架示例,提到其模型包含规则、策略、组合算法、属性(主体、对象、操作和环境条件)、义务和建议等元素,参考体系结构包括策略决策点(PDP)、策略执行点(PEP)、策略管理点(PAP)和策略信息点(PIP)。这为理解 ABAC 的策略执行架构提供了具体参照。

❓

Q&A

ABAC是什么?它和传统的访问控制模型有什么不同?

ABAC(基于属性的访问控制)是一种逻辑访问控制模型,它通过评估多种属性(如主体、对象、操作和环境条件)的复杂布尔规则集来做出访问决策。与ACL(基于身份)和RBAC(基于角色)不同,ABAC不局限于单一属性类型,能提供更细粒度的访问控制,并且可以与其他模型结合使用。

ABAC中的主体、对象、操作和规则分别指什么?

在ABAC中,主体(Subject)是请求对对象执行操作的实体,通常是人,也可以是自主服务或应用程序(NPE);对象(Object)是要保护的资源;操作(Operation)是主体希望执行的动作(如读、写、删除);规则(Rule)是定义访问控制策略的布尔表达式,组合这些元素来生成访问决策。

ABAC需要先对用户进行身份验证吗?

不需要。身份验证与访问控制不同,身份验证是验证实体身份的行为,而访问控制是决定是否允许访问。ABAC可以在没有身份信息的情况下使用,本文档不涉及身份验证方法。

ABAC与RBAC、ACL相比有什么优势?

ACL和RBAC可视为ABAC的特殊情况(分别基于身份和角色属性),但ABAC的关键优势在于策略可以表达复杂布尔规则集,评估多种属性,提供更灵活的访问控制。当访问控制需求变化时,ABAC更容易适应,而ACL或RBAC可能难以识别所有需要更新的地方。

XACML和ABAC是什么关系?

XACML(可扩展访问控制标记语言)是与ABAC一致的访问控制框架的一个例子。它使用规则、策略、属性等元素,并包含策略决策点(PDP)、策略执行点(PEP)等功能组件,用于实现ABAC。

在大型企业中使用ABAC需要考虑哪些问题?

文档讨论了在大型企业中使用ABAC的一系列问题,但未详细展开。它指出重点在于核心概念,而未详细讨论属性工程/管理、与身份管理的集成、联合、态势感知机制、策略管理和自然语言策略转换等主题。所讨论的考虑因素不应被认为是全面的,组织在部署前应通过测试和独立产品审查来补充。

🏷️

标签

➡️

继续阅读