xacml
在有关XML安全性的系列的最后一篇文章中,我介绍了安全性断言标记语言(SAML)。 关于可扩展访问控制标记语言(XACML)的文章从该文章的开头继续。 尽管SAML提供了一种进行身份验证和授权声明的机制以及一种传达它们的机制,但是XACML提供了一种语言,该语言定义了做出必要的授权决策所需的规则。
例如,考虑一种情况,即主体请求访问目标资源。 在执行决策并将目标资源释放给主体之前,策略执行点(PEP)与策略决策点(PDP)进行检查。 访问目标资源的请求的生成以及随后的授予或拒绝访问的响应属于SAML的范围。 XACML解决了PEP和PDP之间的策略决策交换。
访问控制和XACML
XACML是为访问控制和授权系统开发标准的一项举措。 当前大多数系统以专有方式实现访问控制和授权。
典型的访问控制和授权方案包括三个主要实体- 主题 , 资源和操作 -及其属性。 主题请求许可以对资源执行操作。 例如,在访问请求“允许财务经理在财务服务器上的发票文件夹中创建文件”中,主题为“财务经理”,目标资源为“财务服务器上的发票文件夹”,并且操作是“创建文件”。
在专有的访问控制系统中,有关这些实体及其属性的信息保存在存储库中。 这些存储库称为访问控制列表(ACL)。 不同的专有系统具有不同的实现ACL的机制,这使得它们之间难以交换和共享信息。
XACML目标
XACML旨在实现以下目标:
- 创建描述访问控制实体及其属性的可移植标准方法。
- 提供一种机制,它提供了比简单地拒绝或授予访问权限更精细的粒度访问控制,即一种可以在“允许”或“拒绝”许可权之前和之后执行某些操作的机制。
XACML和SAML:有何不同和相似之处?
XACML架构与SAML架构紧密相连。 它们都共享许多概念和一个域-身份验证,授权和访问控制的域。 但是,它们在同一域中解决的问题有所不同。 尽管SAML解决了身份验证并提供了在合作实体之间传输身份验证和授权决策的机制,但是XACML专注于用于获得那些授权决策的机制。
SAML标准提供了允许第三方发送其身份验证和授权请求的接口。 XACML标准解决了内部如何处理这些授权请求。 XACML不仅处理授权请求,而且定义了用于创建规则,策略和策略集的完整基础结构以得出授权决策的机制。 我将在XACML中详细讨论这些概念:螺母和螺栓 。
鉴于SAML和XACML都共享同一个域,因此很有可能并希望将这两个规范最终合并为一个。
XACML架构
XACML由图1中描述的许多组件组成。 其中一些组件也与SAML共享。 共享的组件用红色边框标记。
图1. XACML主要组件
授权请求位于策略执行点(PEP) 。 PEP创建一个XACML请求,并将其发送到Policy Decision Point(PDP) ,后者对请求进行评估并发送回响应。 在适当的义务下,响应可以是允许访问或拒绝访问。 我将在本文后面解释义务。
PDP在评估相关政策和其中的规则后做出决定。 可能有许多策略:PDP不会评估所有策略; 根据政策目标,仅选择相关的评估。 策略目标包含有关主题,操作和其他环境属性的信息。 稍后在“ 策略目标创建”中说明如何通过PDP选择策略进行评估的完整过程。
为了获得策略,PDP使用策略访问点(PAP)来编写策略和策略集,并将其提供给PDP。 PDP还可以调用策略信息点(PIP)服务来检索与主题,资源或环境有关的属性值。 PDP得出的授权决定将发送到PEP。 PEP履行义务,并且根据PDP发送的授权决定,允许或拒绝访问。
XACML:螺栓和螺母
为了说明各种XACML组件,我将向您展示如何接受特定的访问请求并创建处理该请求所需的所有XACML组件。 访问请求如下:属于owner
组(主题的属性)的主题mverma@secf.com
试图对资源file:///D:/Documents/Administrator/Desktop/Project Plan.html
执行open
操作file:///D:/Documents/Administrator/Desktop/Project Plan.html
。 创建所有必需的XACML组件之后,您应该获得此请求的授权决定。
请记住,XACML具有三个顶级组件:策略,PEP和PDP。 为定义的请求创建XACML基础结构的过程仅围绕这三个组件。 图2中的图说明了这些组件如何相互链接:
图2.策略语言模型
您需要做的第一件事是创建一个处理请求的策略。
XACML政策
策略包括:一组规则,用于规则组合算法的标识符,一组义务和一个目标。 到目前为止,这是XACML的最重要方面。 XACML中的大多数操作都发生在策略中。
我将向您展示如何创建可以处理请求的策略-策略的范围需要比请求的范围更广。 您将创建的策略将如下所示:允许secf.com
命名空间中具有电子邮件名称的任何用户对资源file:///D:/Documents/Administrator/Desktop/Project Plan.html
执行任何操作file:///D:/Documents/Administrator/Desktop/Project Plan.html
。 请注意,该策略比请求更通用。