XACML知识简介

XACML(eXtensible Access Control Markup Language)(可扩展的访问控制高标识语言)
简单概述(百度百科):

XACML是一种用于决定请求/响应的通过访问控制策略语言和执行授权策略的框架,他在传统的分布式环境中北广泛用于访问控制策略的执行.在典型的访问控制框架中,有策略执行点(PEP)(Policy Enforcement Point)和策略决定点PDP(PolicyDecision Point).PEP用于表达请求和执行访问控制决定.PDP从PEP处接收请求,评估适用于该请求的策略,并将授权决定返回给PEP.

XACML是一种基于XML的开放标准语言,他设计用于描述安全政策以及对网络服务,数字版权管理(DRM)以及企业安全应用细腻系进行访问的权限.

随着分布式系统的发展,对分布式系统的资源访问控制由集中管理方式变成了分布式管理方式。一个大型企业组织内部,相同的安全策略可能在组织内部的过个点执行。一个资源的安全策略可能由多个部门共同完成,如信息系统部门、人力资源部门、法律部门、以及金融部门等。

同一个安全策略可能应用于内部网络防护、邮件系统、远程访问系统,以及一个具体的平台系统。因此在分布式系统中,策略交互非常重要。需要一种能够相互理解的策略描述语言,XACML(eXtensible Access Control Markup Language)语言就是为了解决策略描述问题而设计的

主体:(Subject)主体即请求对某种资源执行某些动作的请求者。

资源(Resource)资源即是系统提供给请求者使用的数据,服务和系统组件。

策略(policy)策略是一组规则,规定主体对资源使用的一些要求,多个策略进行组合形成策略集。(Policy Set)

策略执行点(PolicyEnforcement Point PEP):是在一个具体的应用环境下执行访问控制的实体,将剧吐应用环境下访问控制请求转换为适应XACML要求的策略请求。然后根据决策请求的判决结果执行相应的动作,如允许用户请求和拒绝用户请求等。

策略决策点(PolicyDecision Point。PDP)是系统中授权的实体,依据XACML描述的访问控制策略以及其他属性信息进行访问控制决策。

策略管理点(PolicyAdministration Point,PAP)是在系统中产生和维护安全策略的实体。

策略信息点(PolicyInformation Point,PIP),通过他可以获取主体、资源和环境的属性信息的实体。

访问控制框架的执行的基本流程:

 

访问控制的框架执行基本流程:

1.        策略管理点(PAP)产生需要的安全策略,这些策略使用XACML语言描述,是访问控制决策的基础。

2.        在一个具体的应用程序环境下,策略执行点(PEP)截获用户发送的访问控制请求,这个访问控制请求的内容和格式根据不同的应用程序而不同。

3.        策略执行点将截获的访问控制请求发送给上下文处理器,由上下文处理器把请求统一成XACML格式的访问控制请求。

4.        上下文处理器将产生的XACML格式的访问控制请求发送给访问控制决策点(PDP),请求PDP进行访问控制决策。

5.        PDP在处理访问控制决策的时候可能需要其他的一些条件,如主体的属性、资源的属性及环境的属性,PDP将这些额外条件请求发送给上下文处理器

6.        上下文处理器将依据属性请求的类型,向策略信息点(PIP)发送属性请求

7.        PIP根据请求向不同的实体请求不同的属性信息,包括主体的属性信息、环境的属性信息及环境的属性信息,并将得到的信息返回给PEP,以执行相应的决策结果

8.        上下文处理器将属性信息和资源的上下文(资源的上下文信息可选)发送给PDP.

9.        PDP根据策略信息、属性信息,以及资源的上下文信息进行访问控制决策,并将决策结果返回给上下文处理器。上下文处理器将决策结果返回PEP,以执行相应的决策结果。

10.    在返回的决策结果中可能是拒绝,也可能是许可,还可能带上有相应的职责信息,如需要进行日志记录等。

XACML策略语言模型:

 

组合算法:

XACML策略语言是一种分布式策略语言,对于同一资源可能由不同的策略管理点(PAP)为其指定不同的策略。这些策略之间有可能存在冲突,如有的规则可能允许访问,有的规则可能不允许,这些冲突必须得到解决。也可能多条策略的执行效用一样,这样的策略只要执行一条即可得到相应的策略通用。通过XACML策略语言模型可以看出,一条策略可能包含多条规则,这些策略同样哟可能存在冲突或具有相同的效用。

因此在XACML语言中需要一个组合算法来解决冲突,并且避免不必要的运算。在XACML语言中,规定了4种类型的组合算法,及拒绝优先算法(Deny-overrides)、许可优先算法(permit-overrides)、首先应用算法(First-applicable)和唯一应用算法(only-one-applicable)。在这些算法种,除了唯一应用算法只适用于策略略组合外,其他适用于规则组合算法和策略组合算法。

1)        拒绝优先算法

拒绝优先算法的基本思想是一旦有一条规则或者策略应用得到一个拒绝的结果,则返回结果为拒绝(Deny);如果在处理某一规则或者策略过程种出现了错误,并且这个规则或者策略的效用(Effect)是拒绝,同时也没有其他规则或者策略的应用结果是拒绝,则返回结果为许可(Permit);如果应用所有的规则中没有一条规则或者策略可以应用,则返回结果为不可应用。(NotApplicable)

2)        许可优先算法

许可优先算法的基本思想是只要有一条规则或者策略的应用结果是许可(Permit),则返回结果是许可;如果在处理某一规则或者策略过程中出现了错误,并且这个规则或者的策略的效用(Effect)是许可,同时没有其他规则或者策略的应用结果是许可,则返回结果为不确定(Indeterminate);如果在处理过程中没有规则或者策略的应用结果为许可,同时至少有一条规则或者策略的应用结果是拒绝,而且在处理过程中效用为许可的规则或者策略没有出现错误,则返回结果为拒绝(Deny);如果应用所有的规则中没有一套规则或者策略可以应用,则返回结果为不可应用。(Notapplicable)

3)        首先应用算法

该算法的基本思想是在应用一组规则或者策略的过程中,如果有一条规则或者策略是可以应用(其结果可以得到许可或者拒绝),则算法立即停止,比你高返回这一条规则或者策略可以应用,则返回结果是不可应用;如果在处理规则或者策略的过程中报错,则返回结果是不确定的。

4)        唯一应用算法

唯一应用算法是只适用于与策略组合算法,他要求在策略中有且只有一条可以应用。

该算法的基本思想是如果策略中有且只有一条策略可以应用,则返回这条策略的应用结果;如果没有一条策略可以应用,则返回结果是不可应用;如果有多于一条策略可以应用,则返回结果是不确定的;如果在处理过程中有出错的情况,或者发现策略无效,则返回结果也是不确定的。

规则

从XACML策略语言模型图中可以看出,规则(Rule)是策略语言中一个重要的基本元素。为了更好的理解规则的含义,首先需要了解规则的基本组成部分及其之间的相互关系。

规则包括三个组成部分,即目标(Target)、效用(Effect)和条件(Condition)。

目标(Target)表示规则应用的对象,其中包括4个基本元素,即资源(Resource)、主体(Subject)、动作(Actions)和环境(Enviroment)。一个目标的基本含义是主体对资源执行的某些动作,这些动作是在一定的环境下执行的。在应用规则的时候,根据请求的主体、资源、动作,以及相关的环境因素来查找可以应用的规则。

效用表示规则应用后的结果,包括两个值,即许可(Permit)和拒绝(Deny)。效用的含义是如果某一个决策请求中的要素(包括主体、资源、动作和环境)和规则中的目标相同,并且效用是许可,则决策结果是许可;如果效用是拒绝,则巨册结果是拒绝。

同一规则可能有不同的应用环境,这样在决策时还需要一些辅助的额外信息,这些额外信息需要条件(Condition)来描述。条件是一些谓词结构,其结果是True或者False,通过这些条件可以描述主体、动作、资源,以及环境的一些属性和上下文信息(如操作的时间限制要求)

策略是基于XACML语言的访问控制框架中可以交互的最小单元,他由策略管理点产生并维护,策略决策点(PDP)依据相应的策略进行决策判断。

策略包括4个组成部分,即目标、组合算法、规则集和职责集。

一个策略的目标可以由管理人员在策略中明确规定,也可以从策略、策略集或者规则集中推导出来。一旦在策略中明确了目标,则所有规则中的目标都要忽略。

组合算法规定了策略中的规则组合算法。

规则集即策略中的一条或者多条规则组合。

职责集在应用规则的过程中由测录决策点(PDP)返回给策略执行点(PEP),除了执行相应的许可或拒绝操作外。策略执行点(PEP)还需要执行的一些职责,如需要记录相应的入职等

策略集

把多个策略描述组合在一起形成一个策略集,在XACML语言中,策略集用来描述同时引用多条策略的情况。

XACML上下文

XACML策略描述语言试图提供一种适合Internet环境下的策略描述和交换语言,但是具体的应用程序可能有其自身的特殊描述方式,应用程序环境下的请求可能有其自身的特殊描述方式,应用程序环境下的请求可能和XACML语言描述的请求有所区别。因此需要将特定应用程序环境的请求转换为XACML能够识别的请求,这就是XACML上下文的由来。

XACML上下文图:

 

特定应用程序域的请求通过上下文处理器转换为XACML上下文中的请求,在引用策略及决策判断的过程都是在XACML上下文中进行,处理后的XACML应答需要由上下文处理器转换为特定域的输出。

安全和隐私方面的考虑

1.        威胁模型

从XACML的访问控制框架中可以看出,要应用XACML实现访问控制需要多个角色之间的相互协作,如PEP、PDP及PAP等。假设敌方可以访问角色之间的通信信道,那么可能存在的威胁如下

                        i.             非授权信息泄露

XACML语言本身没有规定任何保护数据信息机密性的措施,因而存在非授权信息泄露威胁。这种威胁可能导致敌方能够获取通信中的信息,从而访问请求主体、资源或者动作的一些个人信息,这些信息对于个人来说属于隐私。

                      ii.             消息重放

消息重放攻击是指敌方记录并重放XACML角色之间的消息,通过应用过时信息,伪造信息或者直接发送记录信息,敌方可以发起拒绝服务攻击

XACML语言本身并没有在消息重放攻击预防方面由人户防范措施,在应用XACML时需要额外的安全保障措施配合。

                     iii.             消息插入

消息插入攻击是指敌方在CACML角色之间的交互信息中加入自己的消息

XACML语言本身没有防范措施,在应用XACML时需要额外的安全保障措施配合,如使用SSL等。

                     iv.             消息删除

消息删除攻击时指敌方删除XACML角色之间交互消息序列中的一条或多条消息,这样可能导致拒绝服务攻击。XACML语言本身没有防范消息删除攻击的任何措施,在应用XACML时需要配合采取额外的安全保障措施,如完整性保护措施等。

                      v.             消息修改

消息修改攻击是指敌方修改XACML角色之间交互的消息的内容,通过这样的修改,敌方可能改变访问控制决策结果,从而实现非授权访问。

                     vi.             “没有应用”威胁

“没有应用”威胁是指策略决策点进行访问控制决策时,策略的目标和决策请求中的信息不匹配,这样得到访问控制决策结果时“没有应用”

一般情况下,没有策略可以应用,则意味着访问请求被拒绝。推荐使用这样一种处理方式。但是在一些安全模型中访问决策的结果是“没有应用”,则访问被允许,这样可能导致非授权的访问发生。

                   vii.             “否定规则”威胁

“否定规则”是指规则发挥效用的条件是一些谓词结果不为真(true),该规则使用需要非常小心。如果使用不当,可能导致违背策略本意的事情发生,一些安全专家建议不要使用否定规则。但是在有些情况下,使用该规则使得规则的描述非常简单。XACML语言中允许使用否定规则,因此也带来了一些潜在的威胁。

2.        安全保障措施

                        i.             身份验证

身份验证机制提供了一种验证对方身份的手段,它既可以是单向的,也可以是双向的。如在访问控制过程中,PEP需要验证PDP的身份,以确保决策判断执行主体的可靠性。同时,PDP也需要验证PEP的身份,然后发送相关的决策信息。即使最简单的同意或者拒绝消息,敌方也可能从中推导出很多又用的信息。

存在多种技术可以实现身份验证,如VPN及数字签名等。身份验证可能需要在XACML的消息级或者会话级上实现

                      ii.             策略管理

如果策略的内容泄露给了访问控制系统以外的主体,则其可能应用这些策略来推导是否可以获取非授权的访问,而在XACML访问控制中使用分布式维护策略,这样的情况更容易发生。

为了防止这样的威胁,存放策略的敌方本身需要采取访问控制措施。

                     iii.             机密性保护

应用机密性保护机制可以只允许授权的接受者才可以独处消息中的内容,XACML机密性保护包括两部分的内容,即XACML角色通信过程的机密性保护和策略的机密性保护。

通信过程的机密性保护即保护XACML角色在交互过程中的信息机密性,防止非授权的信息泄露的威胁。实现机密性保护的技术由多种,如SSL等。

策略的机密性保护即保护策略中的部分信息加密。可以用XML加密技术实现,XML加密技术可以应用于全部或者部分XML文档的加密。

                     iv.             策略完整性保护

XACML策略是PDP用来评估XACML请求上下文的依据,是访问控制系统的核心,因此需要保护策略的完整性。策略完整性包括策略没有被修改过,以及策略没有添加或者删除过。完整性包括两个状态,一是静态的,即保存在某一处,如PAP的策略库中;而是动态的,即在XACML角色之间交互过程中。

可以应用XML签名技术来保护策略的完整性,该技术可以用来对XML文档中的部分或者全部内容实现完整性保护。

                      v.             策略标识符

策略可以通过标识符被别的策略引用,因此PAP需要维护策略标识符的唯一性,策略的维护人员应避免相同标识符的情况发生。

                     vi.             信任模型

所有的机密性、完整性保护措施中都需要一个信任模型,即如何确定用来加密或者签名的密钥就是可信的?由多种不同的信任模型可以使用,如严格的分层模型、桥接模型和信任网模型等。

                   vii.             隐私保护

需要着重声明的是,在任何和访问控制有关的事务处理过程中都可能泄露个人的隐私信息。如在一个策略中规定,只有金卡会员才能够访问。如果由主体访问成功,则泄露了其金卡成员的隐私信息。需要一种很好的机制来保护主体的隐私信息,但隐私保护机制的选择不是XACML规范的内容。
————————————————
版权声明:本文为CSDN博主「YoungLee16」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/YoungLee16/article/details/78058938

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值