概述
可扩展的访问控制标记语言是由OASIS组织开发,采用XML表示的访问控制策略语言。XACML策略语言允许管理员定义访问控制需求。XACML还包括一种访问决策语言,用于描述对资源运行时的请求。当确定了保护资源的策略之后,函数会将请求中的属性与包含在策略规则中的属性进行比较,最终生成一个许可或拒绝决策。简言之,XACML是一种新的用于管理策略和访问控制的标记语言,同时又是一种通用的访问控制策略定义语言,提供一整套语法(使用XML定义)来管理对系统资源的访问。
目前,多数系统都以专有的方式实现访问控制和授权,在专有访问控制系统中,实体及其属性的信息保存在资料库,即访问控制列表中。不同的专有系统具有不同的实现ACL的机制,因此难以交换和共享信息。同时,这些机制缺少表示复杂策略(在现实系统中经常需要用到)的能力。因此,访问控制策略通常会嵌入应用程序代码中,这使得更改策略(或者只是找出哪些策略正在实施)变得很困难。
XACML的出现使得不同环境中可以简单、灵活地制定各种访问控制策略。XACML的通用性使得各系统之间的访问控制策略和过程得到标准化。XACML是一种主要由机器生成的语言,它们能用于多个应用程序,并可以实现不同系统之间访问控制的互操作。
目前,XACML的API已经由Sun公司实现,由Java语言写成,即Sun’S Java XACMLImplementation。它是Sun提供的对于XACML标准的Java实现,是目前关于XACML开展最早的开源项目。Sun Java XACML的实现实际上是一个对于OASIS XACML标准支持的类库,在Sun Java XACML Implementation 1.2中提供了对于OASIS XACML标准2.0版本的完全支持。2
访问控制在XACML中列出的访问控制是一个四元组,这个四元组的分量包括以下内容:
主体:可以是一个用户ID,一个角色或者一个组。例如“只有职位在部门经理以上的人员才查看这个文档”。
目标对象:可以是单个XML文档元素,一个设备或者一个文件。
动作:允许的动作包括读、写、创建和删除。
规定:是一个动作。这个动作在XACML规则被激活时必须执行;这个动作可能会发送一个警告来请求额外的证明书或者开始一个登录过程。1
优点XACML有如下优点:
1、安全管理员只需对访问控制策略描述一次,不必在不同的系统中使用不同的应用程序策略语言重写多次。
2、应用程序开发者不必开发自己的策略语言和编写支持它们的程序,他们可以重复使用已有的和标准化的程序。
3、XACML能适应大多数访问控制策略的需求,当新的访问控制要求出现时,只需要加入策略,不必修改应用程序。
4、单一XACML策略能应用于多个资源,这有助于在为不同资源编制策略时,避免不一致性和重复劳动。
5、XACML中一个策略可以引用另一个策略。2