基于声明的授权与基于属性的访问控制
信息安全
访问控制
授权
术语
2021-08-25 22:57:08
2个回答
ABAC 和 CBAC 实际上是一回事。Microsoft 不将事物称为属性,而是将它们称为声明,因为属性往往与 SAML 相关联,而声明大多与协议无关。
XACML 是公开 ABAC 的模型/实现,而没有任何具体的 CBAC 模型或实现——反正不是来自微软。这主要是因为通用授权模型令人头疼且过于复杂,并且指导的要点是每个应用程序在权限方面都是不同的,因此您应该自己弄清楚。
CBAC(基于声明的访问控制)和 ABAC(基于属性的访问控制)本质上是相同的,其中声明是断言的“属性”。例如,您从 Active Directory 中获取一个属性并将其转换为声明。
但是,CBAC 存在一些问题:
- 首先,它是 Microsoft 特定的术语,而不是像 ABAC 或 RBAC 这样的模型本身。
- 其次,微软自己使用 CBAC 来表示不同的东西。.NET 中的 CBAC、Windows Server 2012 (Windows Server 8) 中的 CBAC 和 Sharepoint 中的 CBAC 等等
- CBAC 不定义授权本身,而只是定义您如何获得声明或属性。它将“您如何理解声明”的整个框留给实现,这就是为什么 CBAC 在 SharePoint 中的含义不一定与在 .NET 应用程序中的含义相同。
- 在 SharePoint 中,如果用户至少拥有资源拥有的一项声明,则授予访问权限
- 在 Windows Server 中,有一种称为 SDDL 的策略语言,它根据声明(关于来自 AD 的用户的声明和来自文件分类的文件的声明)定义允许的内容
- 在 .NET 应用程序中,由开发人员决定他们如何处理声明。
另一方面,ABAC 是 XACML(可扩展访问控制标记语言)实现的模型。ABAC 和 XACML 定义了如何使用属性来定义授权。授权是使用基于属性的策略定义的。策略使用属性来定义什么是允许的,什么是拒绝的。
在 XACML 中,可以允许或拒绝什么总是很清楚的。政策是集中定义和维护的。XACML 还使用策略决策点和策略执行点的概念定义了一个标准体系结构(顺便说一句,这不是由 XACML 发明的)。
我建议您在此处阅读 ABAC 和 XACML:
- NIST ABAC项目页面
- OASIS XACML 技术委员会
干杯,大卫。