2024年4月28日发(作者:)

2007

年第

福建电脑

151

XACML

描述基于角色的访问控制策略

郭磊

南平师范高等专科学校福建武夷山

354300

摘要

】【:

分析了可扩展访问控制标记语言和基于角色访问控制的特点

XACML

与基于角色访问控制模型相结合

提出了一种基于角色

考虑策略的访问控制模型

提供了一个解决系统间访问控制互操作的方法

关键字

】【:

基于角色访问控制

可扩展访问控制标记语言

访问控制

1.

引言

近年来

基于

WEB

服务的应用取的了长足的进步

而与此

而其中

同时

它也给传统的安全模型带来了许多新的安全挑战

最主要的是发展访问控制模型

使之能够与上下文相关的内容

结合

并能处理主体和客体的异构性

动态性

适合与分布式的

环境的属性的变化

适时动态变化环境

同时

还要能根据资源

的更改访问策略

这对于传统的基于角色的访问控制

Role

BasedAccessControl,RBAC

来说是一个很难解决的问题

本文

就是希望提出一种方法

在角色的基础上用更细粒度的策略对

其进行控制

并实现不同的系统间的控制策略的合并

2.RBAC

简介

基于角色的访问控制

RBAC

是美国国家标准化和技术委

员会

NIST

Ferraiolo

等人在

20

世纪

90

年代提出的

此后

Sandhu

等人在对

RBAC

进行深入的研究的基础上

1996

该模型是一种主动型的访问控制方式

提出了

RBAC96

模型

含了无个基本的元素

用户

Users

)、

角色

(Roles)

许可

(Permis-

资源客体

(Objects(OBS))

操作

(Operations(OPS))

另外还包

sions)

含两个概念

分配

assignment

和会话

session

)。

许可是操作与

资源对象的关系体

用户被当做相应的角色成员而获得相应的

权限

通过会话把用户和多哥角色联系起来

用户建立一次会

通过角色继承话

激活自声的角色子集来获得访问系统的权限

实现角色结构化分层

反映实现组织的授权和责任

静态责任分

StaticSeparationofDutyRelations,SSD

或者动态责任分离

DynamicSeparationofDutyrelations,DSD

实现责任分离

解决

利益冲突

防止用于超越权限

这种模型实现了灵活的授权机

便于分级管理

通过最小特权

减少网络实施风险

3.XACML

简介

XACML

eXtensibleAccessControlMarkupLanguage

OASIS

制定的一种可扩展的访问控制标记语言规范

用于描述

应用系统的访问控制策略以及访问控制决策请求

响应信息

在专有访问控制系统中

实体和属性的信息保存在资料库

不同的专有系统有不

这种资料库称为访问控制链表

ACL

)。

同的实现

ACL

的机制

因此难以交换和共享信息

XACML

的目

标是要创建一种可移植的

标准的方式来描述访问控制实体及

其属性

并提供一种机制

以比简单地拒绝访问或授权访问更细

粒度地控制访问

3.1XACML

中的术语

资源

Resource

要访问地对象被称为资源

主体

Subject

用户或一个对象

操作

Action

要执行地功能被称为操作

资源或操作的特征

属性

Attribute

):

属性是指的是主体

则使用的最基本的数据单位就是属性

规则

Rule

:XACML

将规则定义为目标

target

结果

ef-

目标包括资源

主体和操作

fect

和条件

condition

的集合

条件是一种功能

它可以评测出

True

False

indeterminate

其中

Indeterminate

指出没有足够的信息用来决定出一个正确的

答案

规则的结果是当规则被评测为

True

时返回的结果

果有两种值

Permit

Deny

策略

(Policy)

策略是应用了请求的

一组规则和责任的集合

XACML

也提供策略集

策略包含目标

一个或多个规则

目标指明了策略适用于主体

资源和操作时必

须满足的条件

目标使用布尔值来评测请求中的值是否满足它

的条件

策略是

PDP

执行操作的基本单元

每一条策略都定义

了一个规则绑定算法

用来绑定它所包括的规则和职责

每一个

策略集都定义了一个策略绑定算法来绑定它所包括的策略

上下文

Contest

):

上下文是规范的决策请求和授权决策的

代表

规范的

XML

指的是规范格式的

XML

也就是说

使用规

范格式来表示请求可以使应用程序更好的解析数据

在文档更

容易地定位数据的特定项目

如果一个应用程序没有使用规范

格式的请求

就需要指定一个上下文处理器将它本地的格式转

化为

XACML

的规范格式

还要将

XACML

规范格式的授权决策

转化为本地格式

3.2XACML

描述访问控制策略的机制

策略管理点

XACML

定义了

个层次用于访问策略控制

策略执行点

PEP

该组

PAP

该组件用于创建策略或策略组

件用于通过执行授权决策来进行访问控制

策略信息点

PIP

策略决策点

PDP

该组件用于评测该组件作为属性值的来源

可应用的策略

并返回授权决策

典型的访问控制和授权场景包括三个主要实体

主体

资源

和动作

主体请求得到对资源执行动作的权限

描述了

XACML

的访问控制实施过程

访问请求首先

送达策略执行点

PEP

),

PEP

创建一个

XACML

请求并发送到策

略决策点

PDP

),

PDP

评估请求中的相关策略和规则并返回一

个响应

为了获得策略

PDP

要用到策略访问点

PAP

),

PAP

写策略和策略集

PDP

使用

PDP

也可以调用策略信息点

资源或者环境有关的属性值

PDP

作出

PIP

服务检索与主体

的授权决策被发送到

PEP

PEP

履行义务

根据

PDP

发送的授权

决策允许或拒绝访问

4.

XACML

描述基于角色的访问控制策略

基于角色的访问控制方法的思想就是把对用户的授权分成

两部份

用角色来充当用户行驶权限的中介

这样

用户与角色

之间以及角色与权限之间就形成了两个多对多的关系

系统提

供角色定义工具允许用户根据需要定义相应的角色

角色之间

有相应继承的关系

当一个角色继承另一个角色时

该角色就自

动拥有了被继承角色的访问权限

角色继承关系提供了对已有

角色的扩充和分类的手段

使定义新的角色可以在已有角色的

基础上进行

扩充就是通过增加父角色的权限去定义子角色

类通过不同子角色继承同一父角色来体现

另外还允许多继承

即一个角色继承多个父角色

多继承体现对角色的综合能力

用户需要对资源进行访问时

系统首先检测用户是否具有合法

的身份

这主要通过用户的认证来确认

但在一

下转第

126

126

"MAYSCRIPT"

属性的

Applet

标记

福建电脑

2007

年第

<APPLETcode="OLComApplet.class"height=10width=10

MAYSCRIPT>//

我们的类取名为

OLComApplet

JSObject

的方法允许

Applet

与文档对象交互以及调用

JavaScript

命令

例如

把下面的代码放入

Applet

我们就能够访

问窗口对象

importnetscape.javascript.*;

publicclassOLComAppletextendsjava.applet.Applet

{privateJSObjectmainwin;

publicvoidinit(){mainwin=JSObject.getWindow(this);}}

Applet

在客户端

一个隐藏帧包含了

ImageApplet.java

这个

Ap-

plet

因此用浏览器的查看

HTML

源代码功能是无法看到

Applet

标记的

Applet

实现了连接服务器

下载该

Applet

的源服务器

的功能

并实现了一个简单的通信协议

建立与服务器的连接之

Applet

接收来自服务器的数据

构造出

HTML

代码

并调用

以下

JavaScript

函数把数据传入文档

publicvoidUpDateHTML(StringOurInfo)

{mainwin.eval("document.data.quote.value=""+OurInfo+""");mainwin.eval("

javascript:assignData()");

return;}//OurInfo

是要传送的信息

获得

JSObject

引用后

我们就能够访问文档窗口对象

并通

JSObject

eval()

方法调用

JavaScript

函数

在把来自

Applet

的新内容写入文档时

为了不影响原来已

经存在的内容

我们可以使用

HTML

<div></div>

标记

对于

IE

以及

Netscape6

这个

HTML

标记是

<divid="iexplorer"width=700px></div>

netscape.javascript.JSObject

完成

Applet

JavaScript

的通

不同版本的客户端浏览器需要不同的版本

开发者可以下载

得到为

Netscape

浏览器提供的压缩类文件

java40.jar

IE

则已经

带有

JSObject

可以通过搜索

¥windows¥\Java\Packages

目录寻

找包含

JSObject

类的

ZIP

文件

服务器把

ImageArrayElement.java

类的实例通过

toString()

法串行化成为字符串发送给

Applet

服务器从数据文件构造出

各个对象

调用

toString()

方法

连接得到代表所有对象的字符

最后发送结果字符串

而在另一端

Applet

接收并解析这个

字符串

重新构造出各个

ImageArrayElement

对象

这里之所以

用一个长字符串的形式发送数据

是因为这种方法只需要很简

单的处理过程

使得用户能够以接近实时的速度立即得知数据

的变化

5.

结束语

通过以上介绍的

Web

推送技术

我们构建了该公司的在线

交流服务平台

相对于旧版的在线交流服务平台其通信速度和

稳定性得到了相当的提高

通过这一实践

作者认为

Web

推送

技术在构建在线交流平台时是可以重点考虑的一个技术手段

也值得进一步考虑如何改进该方法及其实现途径

参考文献

1.[

]HerbertSchildt

著张玉清等译

Java2

参考大全

北京

清华大

学出版社

2002

虽然我们可以通过引用适当的

ID

Applet

直接更新

HTML

内容

但为了清楚起见

我们将把更新

HTML

代码的程序

逻辑放入

JavaScript

函数

下面的

JavaScript

代码把浏览器是否

InternetExplorer(IE)

的信息保存到

IsIE

变量

applnname=navigator.appName;

if(applnname=="MicrosoftInternetExplorer")

{IsIE=true;}

else{IsIE=false;}

Applet

从新数据构造出

HTML

代码

把它保存到

JavaScript

变量

content

后调用

assignData()

方法

functionassignData()

{if(IsIE){explore();}

else{navig();}}

对于现在较普及的浏览器

IE

或者

Netscape6

Applet

调用

explore()

方法

functionexplore()

{iexplorer.innerHTML=content;}

在服务器端

一个

ImageAppliation.java

类的实例响应

Sock-

为了

et

连接请求

并为每一个新的连接请求创建一个新的线程

简化代码

每一个线程只检查数据文件是否改变

如果数据文件

已经改变

则线程读取文件内容

并把新的数据发送给已经连接

上接第

151

些资源访问的过程中

不同的资源访问权限不同的同时

每个资

源的拥有者对资源也有特定的访问权限管理

要访问具体的资

源的时候就需要先获得对应的资源

所以不可以简单的根据用

户认证来决定是否具有访问资源的权限

而要拥有具体资源的

访问权限策略

为了能够让资源的拥有者嫩够更细粒度的对资源进行授

在基于角色的访问控制的机制上

我们提出的授权服务

源的拥有者提供的授权策略指定具体的访问权限策略

细化资

源的权限管理

目标是把访问权限具体到每个资源的具体权限

策略上

在这个过程中

我们用

XACML

来描述主体对资源的访

PEP

提出用户访问请求

每个用户访问请求通过生成

SAML_request

来提交

HTTP

方式通过

SOAP

来发送

在通过

PDP

来决定是否通过用户的请求

用户对资源的访问策略主要

就是放在

PAP

同时还可以通过对资源属性的检索得出访问

策略

最后由

SAML_response

来确定用户所具有的访问权限

在访问的过程中

对所有的请求及响应使用上下文处理器

来进行过度

上下文处理器提供一个统一的

规范的格式来表示

请求及策略

规范的格式在利用程序更好的解析数据的同时

可以实现不同系统得访问权限的整合

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

用户所处的角色

同时还由主体

资源

环境等的属性所决定

样使资源的拥有者可以通过对属性及策略的控制实现对资源的

访问权限的控制

同一用户在不同的系统中的角色也不尽相同

因此在每个系统中都要保持对应角色的权限列表

这对系统开

发无疑是一个复杂而又重复的工作

XACML

我们使用了

统一的的控制文档格式

利用上下文处理器可以把本地策略转

化为这种通用格式

我们就可以在不同的系统中相互应用对方

文档

并根据需要提出合并方案

为用户在不同系统中的跨越提

供方便

5.

结束语

访问控制涉及的领域非常广泛

RBAC

是一个非常重要的

访问控制方法

而通过

XACML

对不同角色的访问请求进行判

可以实现更细粒度的访问控制

更为重要的是能够实现访问

控制的相互应用

XACML

虽然是一个复杂的语言

但一旦掌握

了它

就可以很容易的构造较复杂的访问控制机制

参考文献

1.MosesT.OASISeXtensibleaccesscontrolmarkuplanguage(XACML)

Version1.1[EB/OL].http://www.oasis-open.org/committees/xacml/reposi-

tory/cs-xacmlspecification-1.1.pdf.CommitteeSpecification.2003-07-24.

2.MALERE,MISHRA.P.A.ssertionsandprotocolfortheOASISSecurity

AssertionMarkupLanguage(SAML).V1.1.OASISStandard[s]200

3.SimpleObjectAccessProtocol(SOAP)V1.1[EB/OL].http://www.w3.org/

TR/2000/NOTE-SOAP-2000508,2000-05

4.WorldWideWebConsortiumWebService[EB/OL].http//www.w3.

org/2002/ws

阮永良

WEB

服务中基于

XML

RBAC

策略模型计算机工

4.

孟珂

程与设计

2005.26

397-399

通过图

我们发现

XACML

用户请求不仅仅依赖于