2024年4月28日发(作者:)
2007
年第
5
期
福建电脑
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
)
的集合
:
1
、
条件是一种功能
,
它可以评测出
True
、
2
、
False
或
indeterminate
。
其中
Indeterminate
指出没有足够的信息用来决定出一个正确的
答案
;
3
、
规则的结果是当规则被评测为
True
时返回的结果
,
结
果有两种值
:
Permit
或
Deny
。
策略
(Policy)
:
策略是应用了请求的
一组规则和责任的集合
。
XACML
也提供策略集
,
策略包含目标
,
一个或多个规则
。
目标指明了策略适用于主体
、
资源和操作时必
须满足的条件
。
目标使用布尔值来评测请求中的值是否满足它
的条件
,
策略是
PDP
执行操作的基本单元
。
每一条策略都定义
了一个规则绑定算法
,
用来绑定它所包括的规则和职责
,
每一个
策略集都定义了一个策略绑定算法来绑定它所包括的策略
。
上下文
(
Contest
):
上下文是规范的决策请求和授权决策的
代表
,
规范的
XML
指的是规范格式的
XML
,
也就是说
。
使用规
范格式来表示请求可以使应用程序更好的解析数据
,
在文档更
容易地定位数据的特定项目
。
如果一个应用程序没有使用规范
格式的请求
,
就需要指定一个上下文处理器将它本地的格式转
化为
XACML
的规范格式
,
还要将
XACML
规范格式的授权决策
转化为本地格式
。
3.2XACML
描述访问控制策略的机制
策略管理点
XACML
定义了
4
个层次用于访问策略控制
:
1
、
策略执行点
(
PEP
)
该组
(
PAP
)
该组件用于创建策略或策略组
;
2
、
件用于通过执行授权决策来进行访问控制
;
3
、
策略信息点
(
PIP
)
策略决策点
(
PDP
)
该组件用于评测该组件作为属性值的来源
4
、
可应用的策略
,
并返回授权决策
。
典型的访问控制和授权场景包括三个主要实体
:
主体
、
资源
和动作
。
主体请求得到对资源执行动作的权限
。
图
1
图
1
描述了
XACML
的访问控制实施过程
。
访问请求首先
送达策略执行点
(
PEP
),
PEP
创建一个
XACML
请求并发送到策
略决策点
(
PDP
),
PDP
评估请求中的相关策略和规则并返回一
个响应
。
为了获得策略
,
PDP
要用到策略访问点
(
PAP
),
PAP
编
写策略和策略集
,
供
PDP
使用
。
PDP
也可以调用策略信息点
资源或者环境有关的属性值
。
PDP
作出
(
PIP
)
服务检索与主体
、
的授权决策被发送到
PEP
,
PEP
履行义务
,
根据
PDP
发送的授权
决策允许或拒绝访问
。
4.
用
XACML
描述基于角色的访问控制策略
基于角色的访问控制方法的思想就是把对用户的授权分成
两部份
,
用角色来充当用户行驶权限的中介
。
这样
,
用户与角色
之间以及角色与权限之间就形成了两个多对多的关系
。
系统提
供角色定义工具允许用户根据需要定义相应的角色
。
角色之间
有相应继承的关系
,
当一个角色继承另一个角色时
,
该角色就自
动拥有了被继承角色的访问权限
。
角色继承关系提供了对已有
角色的扩充和分类的手段
,
使定义新的角色可以在已有角色的
基础上进行
,
扩充就是通过增加父角色的权限去定义子角色
,
分
类通过不同子角色继承同一父角色来体现
。
另外还允许多继承
,
即一个角色继承多个父角色
,
多继承体现对角色的综合能力
。
在
用户需要对资源进行访问时
,
系统首先检测用户是否具有合法
的身份
,
这主要通过用户的认证来确认
。
但在一
(
下转第
126
页
)
126
殊
"MAYSCRIPT"
属性的
Applet
标记
:
福建电脑
2007
年第
5
期
<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
(
2
)
397-399
。
图
2
通过图
2
我们发现
,
在
XACML
中
,
用户请求不仅仅依赖于


发布评论