XACML终有出头天?

XACML,即可扩展访问控制标记语言(eXtensible Access Control Markup Language),是一份Oasis两年多前通过的标准,在上周的Burton's Catalyst Conference会议上演示了XACML如何跨厂商平台工作。

XACML标准提供了一种(标记)语言,用来定义访问授权的决策规则和用于策略决策交换的请求/响应协议。XACML定义了 4个主要实体:
  • PAP——策略管理点(Policy Administration Point)——基本上是一个存放策略的仓库。 
  • PIP——策略信息点(Policy Information Point)——目录或者其他身份证明(identity)的供应者。PIP可提供被访问的资源的属性,以及试图访问该资源的实体(身份证明)。
  • PDP——策略决策点(Policy Decision Point)——这个组件负责对访问授权的决策。PDP使用从PAP获得的策略以及从PIP获得的附加信息来进行决策。
  • PEP——策略实施点(Policy Enforcement Point)——这个组件负责接收对授权的请求。PEP向PDP发送XAXML请求,然后根据PDP的决策来行动。

要说明的是,XACML并不是完全独立的。XACML定义了实现请求/响应所必需的消息内容,但没有定义消息交换方面的协议和传输机制。这个问题要用到另一个Oasis标准,名为SAML(Security Assertions Markup Language)。概括来说,XACML提供了一种确定对资源的访问权限的方法,而SAML则提供了一种安全地交换这些信息的方法。

互操作性的之所以重要,不单是因为在一家具有相当规模的企业里几乎不可能存在均一的环境,而且就算你能找到这样的企业,当需要与其他企业合作的时候,你仍然要面对异质环境的问题。

这次互操作演示包括8家厂商:BEA、IBM、JBoss/Red Hat、Oracle、CA、Jericho Systems、SymLabs和Securent。厂商们演示了几个安全方面的互操作场景,JBoss的Anil Saldhana对此作了描述:

用例: 授权决策
========================

在授权决策互操作演示中,由*/Vendor A/* (*/PEP-A/*)的*/PEP/*产生的XACML 2.0授权决策请求,将被*/Vendor B /*(*/PDP-B/*)的*/PDP/*正确解读,其中Vendor A和Vendor B可为参与互操作的任意厂商。

场景一:授权决策:客户访问
客户从浏览器中提交用户名和密码。在身份认证之后,PEP将客户的用户名用户Id和“ViewAccount”操作,在CustomerAccount Web应用程序的上下文中打包成XACML请求,然后交给PDP解读。在此事件中,PDP可来自不同厂商。

场景二:授权决策:客户事务
客户试图购买500股XYZ股票。PEP收集此事务的相关信息(举例来说,“Buy”操作和股票数量“500”),然后和其他上下文中的信息一起,打包成XACML请求交给PDP解读。在此事件中,PDP可来自不同厂商。

场景三:授权决策:客户经理访问
客户经理需要批准请求。PEP收集关于客户经理的信息,交给PDP来处理客户经理的访问。

场景四:授权决策:账户经理批准
客户经理需要批准股票购买。PEP收集关于客户经理的批准的信息,然后询问PDP是否允许此批准通过。

用例:策略交换
===================
由一家厂商产生的XACML策略可被其他厂商的PDP访问和使用。
  James McGovern提出了互操作性的另一个方面,事实上JBoss也做到了这个方面:
Anil Saldhana认为JBoss XACML 2.0的发布是一件大事。这可能是给Alfresco的John Newton、Intalio的Ismael Ghalimi以及Liferay的Brian Chan的一个机会,让他们能够非常容易地在他们的产品中加入XACML支持,把他们的闭源竞争者们打倒在地。
无论如何,即便用了超过两年时间,看到这个标准终于成熟仍然是一件令人高兴的事,特别是在上面提到的那些用例并不罕见的情况下。

你可能感兴趣的:(XACML终有出头天?)