XACML与RABC Profile_第1页
XACML与RABC Profile_第2页
XACML与RABC Profile_第3页
XACML与RABC Profile_第4页
XACML与RABC Profile_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 XACML与RBACProfile1概述为提高分布式系统间的访问控制互操作性,2003年OASIS制定了基于XML的XACML(eXtensibleAccessControlMarkupLanguage,可扩展访问控制标记语言)标准。目前,XACML规范还在不断完善并且已经被应用到一些产品当中如Weblogic9已经开始采用XACML进行访问控制;2007.6IBM,0RACLE,BEA等八家公司共同发表了XACML的互操作声明。RBAC(RoleBasedAccessControl,基于角色的访问控制)是一种灵活、高效的访问控制方法,它有效地克服了传统访问控制(DAC,MAC等)技术中存在

2、的不足之处,减少了授权管理的复杂性和降低管理开销,已经被广泛应用到各种系统当中。因此,如果能将XACML和RBAC结合起来应用于企业信息系统,将为我们提供一种更加灵活和有效的访问控制机制。1.1XACML介绍在基于Web的分布式应用环境中,安全策略广泛使用XACML语言进行表示。XACML(eXtensibleAccessControlMarkupLanguage,可扩展的访问控制标记语言)是一种基于XML的开放标准语言,它设计用于描述安全政策以及对网络服务、数字版权管理(DRM)以及企业安全应用信息进行访问的权限。XACML在2003年2月由结构化信息标准促进组织(OASIS)批准,它开发用

3、于标准化XML的访问控制。XACML有时也称可扩展的访问控制高标识语言(XACL)。简单的说,XACML是一种对访问控制策略和访问控制请求/响应产生过程加以描述的语言,XACML不仅提供了一系列逻辑算法对整个授权过程进行控制,而且提供了支持定义新功能、数据结构、合成逻辑算法等的标准可扩展点。可以根据主体、资源、环境的属性以及所采取的行为进行控制允许还是拒绝。实际上,返回的结果有四种:允许、拒绝、无法决定(Indeterminate)和不适用(NotApplicable)。XACML使用XML作为其描述语言。XML元语言的特性、可扩展的语法和语义特性以及广泛的支持性使其能够对访问控制思想实现最好

4、的支持。1.2XACML的作用XACML主要解决以下问题:1)创建一种可移植的、标准的方式来描述访问控制实体及其属性。2)提供一种机制,以比简单地拒绝访问或授权访问更细粒度的控制访问,也就是说,在“允许”或“拒绝”之前或之后执行某些操作。XACML的主要优势:1)标准性。经过专家委员会的论证,其定义的一些逻辑标准和算法适应绝大多数的应用需要。使得同其他应用系统的互操作性在标准性的基础之上非常容易。2)通用性。不仅仅适用于某一个应用系统,而是具有普遍适用性。策略文件适用于多种应用系统,而且正由于其通用性,使策略文件的管理变得相对容易。3)支持分布式应用。不同的人员和部门可以在不同的地点制定子策略

5、文件,XACML可以根据指定的合成算法和多个子策略返回一个授权决定。扩展性。虽然XACML已经支持多种数据结构、功能和规则、策略合成算法,但XACML仍然在某些方面支持扩展,以适应特殊应用领域。OASIS正在致力于XACML对SAML(SecurityAssertionMarkupLanguage)的支持,以及对RBAC的支持等等。1.3XACML与SAML安全断言标记语言(SecurityAssertionMarkupLanguage,SAML)主要目的在于可移植的信任。即提供一种机制在不同的协作域之间传递关于实体的信息,同时域又不失去对这些信息的所有权。交换的信息可以是关于主体或者验证信息

6、的断言。这种方式也称为单点登录。XACML体系结构与SAML体系结构是紧密相关的。它们有很多相同的概念,要处理的问题域也在很大程度上重叠:验证、授权和访问控制。但是在同一问题域中,它们要解决的是不同的问题。SAML要解决的是验证,并提供一种机制,在协同实体间传递验证和授权决策,而XACML则关注于得到这些授权决策的方法。因此,SAML和XACML在实际应用中需要协同配合来共同解决验证、授权和访问控制的问题。2XACML的流程模型XACML是一种用于决定请求/响应的通用访问控制策略语言和执行授权策略的框架,它在传统的分布式环境中被广泛用于访问控制策略的执行。在典型的访问控制框架中,有策略执行点P

7、EP(PolicyEnforcementPoint)和策略决定点PDP(PolicyDecisionPoint)。PEP用于表达请求和执行访问控制决定。PDP从PEP处接受请求,评估适用于该请求的策略,并将授权决定返回给PEP。XACML语言的框架结构如图1所示。授权请求到达策略执行点(PEP)。PEP创建一个XACML请求并发送到策略决策点(PDP),后者评估请求并返回一个响应。PDP评估请求中的相关策略和规则后会作出决策。可以应用的策略有多种,PDP并没有评估所有的策略,而是根据策略目标选择相关的策略进行评估。策略目标包括关于主体、动作和其他环境属性的信息。为了获得策略,PDP要用到策略访

8、问点(PAP),PAP编写策略和策略集,供PDP使用。PDP也可以调用策略信息点(PIP)服务检索与主体、资源或者环境有关的属性值。PDP作出的授权决策被发送到PEP。PEP履行义务,并根据PDP发送的授权决策允许或拒绝访问。3XACML标准特性XACML在策略表达上结构清晰,将安全规则表示为主体,客体,行为和约束四个主要属性的属性值集合。XACML是基于XML的访问控制策略指派语言,使用标签来标识安全策略的各个元素。XACML的标签规定了策略名,规则名及规则属性等,种类丰富。XACML通过vPolicy标签及其属性值声明策略ID,策略适用群组和规则联合算法,以对策略做出标识和说明。Polic

9、ylD和PolicyTarget分别用于声明策略ID和策略适用群组,RuleCombiningAlgld声明了规则联合算法,规则联合算法的作用是解决安全策略中不同安全规则可能造成的冲突,以保证每个访问请求只得到一个最终授权结果。策略是由规则组成的,XACML用标签v/Rule来标示规则,在规则标签头中,RuleID是规则ID,Effect标示该规则的效用:是一个许可规则还是拒绝规则。在规则体内,用vTargetv/Target标示规则的各属性,包括主体Subject,客体Resource和行为Action,对每一个属性,都在相应标签中先标示属性名称,如“FileType”,再标示该属性的属性值

10、。约束属性用标签标示,位于vTarget之后。安全规则的四个属性中,如果对某个属性没有安全约束限制,则可以省略该属性的标签。XACML策略表达举例见下图。”:*XACML实例3.1高层结构:策略(Policy)和策略集(PolicySet)所有的XACML访问控制策略的根是Policy或PolicySet。一个PolicySet是一个可以容纳其它Policy或PolicySet的容器,可以通过其引用到非本地的Policy或PolicySet。一个Policy表现为一个单一访问控制策略的引用,它通过套规则(Rule)来表现。每一个XACML访问控制策略文档都在其XML标签根部包含了唯一的一个Po

11、licy或PolicySet。因为一个Policy或PolicySet可以包含多个策略或规则。因为这些策略或规则会有不同的访问控制判断结果决定,所以XACML需要一个协调判断结果的方法。这在XACML中是通过一套合并算法(CombiningAlgorithms)来实现。每个算法表示一种不同的合并多判断结果到单一判断结果的方法。XACML有“策略合并算法/PolicyCombiningAlgorithms(PolicySet采用)和“规则合并算法/RuleCombiningAlgorithms”(Policy采用)。这当中的一个例子是“DenyOverridesAlgorithm,代表无论其它策

12、略判断结果如何,只要其中有一个策略或规则判断返回结果Deny,则最终判断结果定为Deny。这些合并算法可以用于构建复杂的策略。策略是基于XACML语言的访问控制框架中可以交互的最小单元,它由策略管理点产生并维护,策略决策点(PDP)依据相应的策略进行决策判断。策略包括4个组成部分,即目标、组合算法、规则集和职责集。一个策略的目标可以由策略管理人员在策略中明确规定,也可以从策略、策略集或者规则集中推导出来。一旦在策略中明确了目标,则所有规则中的目标都要忽略。组合算法规定了策略中的规则组合算法。规则集即策略中的一条或者多条规则组合。职责集在应用规则的过程中由策略决策点(PDP)返回给策略执行点(P

13、EP),除了执行相应的许可或拒绝操作外。策略执行点(PEP)还需要执行的一些职责,如需要记录相应的日志等。把多个策略组合在一起形成一个策略集,在XACML语言中,策略集用来描述同时引用多条策略的情况。3.2目标(Target)和规则(Rule)PDP要做的一部分工作是根据一个请求找到对应的策略。为了实现这一点,XACML提供另一个被称为Target的特性。一个Target基本上来说是一套简化了的在一个请求中Policy、PolicySet、Rule必须遇到的关于主体(Subject)、动作(Action)、资源(Resource)的条件限制。这些条件限制都使用布尔判断(将在下一节作阐述)来比较

14、一个请求中的参数值和一个Target里面的条件对应值。如果一个Target中的所有的条件都符合,该请求就被关联到相应的Policy、PolicySet、Rule上作为一种检查策略适用性的方法,Target的信息中还有一种方法进行策略索引。这在当需要在同一Target中存储多种策略并且需要快速的审阅这些策略以选择最合适策略时非常有用。例如,一个Policy可能包含一个只适用于某一特定服务的Target时。当一个要求访问该服务的请求发生时,PDP就知道到哪儿去找适合判断该请求的策略。因为策略被基于他们的Target的限制条件进行了索引。注意,Target也可以定义为适用于所有的请求。旦Policy

15、被找到并被用于验证一个请求,其规则(Rule)即发生作用。Policy可以容纳任意数量的Rule,这些Rule中包含一个XACML策略的核心逻辑。绝大多数的Rule表现为一个条件布尔判断。当前条件为真时“规则的结果/RulesEffect(个根据规则判断的Permit或Deny的结果)即被返回。条件的判断结果也可以为一个错误(也即“不明确/Indeterminate)或该条件不适用于判断请求(即“不适合/NotApplicable)个条件可以非常复杂,如:由一系列嵌套的非布尔判断的函数或属性来判断。规则(Rule)是策略语言中一个重要的基本元素。为了更好地理解规则的含义,首先需要了解规则的基本

16、组成部分及其之间的相互关系。规则包括3个组成部分,即目标(Target)、效用(Effect)和条件(Condition)。目标(Target)表示规则应用的对象,其中包括4个基本元素,即资源(Resource)、主体(Subject)动作(Actions)和环境(Environment)个目标的基本含义是主体对资源执行的某些动作,这些动作是在一定的环境下执行的。在应用规则的时候,根据请求的主体、资源、动作,以及相关的环境因素来查找可以应用的规则。效用表示规则应用后的结果,包括两个值,即许可(Permit)和拒绝(Deny)效用的含义是如果某一个决策请求中的要素(包括主体、资源、动作和环境)和

17、规则中的目标相同,并且效用是许可,则决策结果是许可;如果效用是拒绝,则决策结果是拒绝。同一规则可能有不同的应用环境,这样在决策时还需要一些辅助的额外信息,这些额外信息需要条件(Condition)来描述。条件是一些谓词结构,其结果是True或者False,通过这些条件可以描述主体、动作、资源,以及环境的一些属性和上下文信息(如操作的时间限制要求)。3.3属性(Attribute),属性值(AttributeValue)和函数(Function)XACML运行时处理的是属性。属性是已知类型的有名称的值,可以包括属性发布者的标识或发布日期时间。特别地,属性是Subject、Resource、Act

18、ion或访问请求发生的环境的特征值,例如,用户名、他们组成员、他们要访问的文件、访问日期等都是属性值。当一个请求从PEP被发送到PDP时,该请求由几乎是相互排斥的属性集组成,他们将和策略中的属性值进行比较,并最终产生访问判决结果。Policy以两种机制来解析来自请求或其它来源中的属性值:AttributeDesignator(属性指示器)和Attributeselector(属性选择器)。AttributeDesignator让策略用一个给定的名称和类型来指定属性,也可以通过发布者(issuer)指定属性(可选)PDP就在请求中寻找该属性的值,若找不到,可以从其他任何位置寻找(如LDAP服务)

19、。共有4种指示器(designator),分别对应请求中的4种类型的属性:Subject,Resource,Action,和Environment。Attributeselectors使得一个策略根据XPathquery的形式查询个属性值。只要提供个数据类型和XPath表达式,就可以解析请求文档中的属性值。AttributeDesignator和AttributeSelector都可以返回多值(因为可能存在一个请求匹配多条件的情况),所以XACML提供一个特殊的属性叫“Bag”,Bag是一个无序的集合,并且允许重复。通常designator和selector都返回bag,甚至当只有单值返回时也

20、是以bag返回。当没有匹配项是返回空的bag。当然,designator和selector可以设置一个标记,当这一情况发生时产生一个错误。旦属性值Bag被获取时,其值需要和预期值进行比较来进行访问控制判决,这些都由强大的系统函数来完成的。这些函数判断任何属性值的任何组合,并可返回系统支持的任何类型的属性值。函数还支持嵌套,你可以用一些函数操作另一些函数的输出。这样的分级嵌套可以任意复杂。二次开发的函数可以提供更加丰富的语言来表达访问条件限制。3.4请求(request)和应答(response)除了定义了一套标准的策略格式之外,XACML还定义了一套标准访问来表达请求和应答。一个请求可以包含4

21、类属性:Subject,Resource,Action,andEnvironment(可选)一个request中必须包含且只能包含一个Resource和Action属性的集合,最多包含一个Environment属性集合,可以包含多个Subject属性集合。一个应答包含一个或多个结果(result),每个结果代表一个评判结果。多结果是由于多层次的资源造成的,典型地,一个应答中只有一个结果。每个结果中包含一个决定(Decision,4种,Permit,Deny,NotApplicable,或Indeterminate),和状态信息(如为什么评判失败),可选地,有一个或多个义务(Obligation

22、)(PEP在决定授权和拒绝之前有义务做的事情)。请求和响应提供了一个和PDP交互的一个标准格式。4组合算法XACML策略语言是一种分布式策略语言,对于同一资源可能由不同的策略管理点(PAP)为其制定不同的策略。这些策略之间有可能存在冲突,如有的规则可能允许访问,有的规则可能不允许,这些冲突必须得到解决。也可能多条策略的执行效用一样,这样的策略只要执行一条即可得到相应的策略效用。通过XACML策略语言模型可以看出,一条策略可能包含多条规则,这些规则同样有可能存在冲突或具有相同的效用。因此在XACML语言中需要一个组合算法来解决冲突,并且避免不必要的运算。在XACML语言中,规定了4种类型的组合算

23、法,即拒绝优先算法(Deny-overrides)、许可优先算法(Permit-overrides)、首先应用算法(First-applicable)和唯一应用算法(Only-one-applicable)。在这些算法中,除了唯一应用算法只适用于策略组合外,其他适用于规则组合算法和策略组合算法。拒绝优先算法的基本思想是一旦有一条规则或者策略应用得到一个拒绝的结果,则返回结果为拒绝(Deny);如果在处理某一规则或者策略过程中出现了错误,并且这个规则或者策略的效用(Effect)是拒绝,同时也没有其他规则或者策略的应用结果是拒绝,则返回结果为不确定(Indeterminate);如果在处理过程中

24、没有规则或者策略的应用结果为拒绝,并且至少有一条规则或者策略的应用结果是许可,同时在处理过程中效用为拒绝的规则或者策略没有出现错误,则返回结果为许可(Permit);如果应用所有的规则中没有一条规则或者策略可以应用,则返回结果为不可应用(NotApplicable)拒绝优先规则组合算法的伪代码如下:DecisiondenyOverridesRuleCombiningAlgorithm(Rulerule)BooleanatLeastOneError=false;BooleanpotentialDeny=false;BooleanatLeastOnePermit=false;for(i=0;ile

25、ngthOf(rules);i+)Decisiondecision=evaluate(rulei);if(decision=Deny)returnDeny;if(decision=Permit)atLeastOnePermit=true;continue;if(decision=NotApplicable)continue;if(decision=Indeterminate)atLeastOneError=true;if(effect(rulei)=Deny)potentialDeny=true;continue;if(potentialDeny)returnIndeterminate;if(

26、atLeastOnePermit)returnPermit;if(atLeastOneError)returnIndeterminate;returnNotApplicable;对应的拒绝优先策略组合算法的伪代码如下:DecisiondenyOverridesPolicyCombiningAlgorithm(Policypolicy)BooleanatLeastOnePermit=false;for(i=0;i或者vPolicy和角色继承vPolicy,角色显示为一种资源属性。下面以例子来说明XACML的用法:假定有两个角色,manager和employee,角色employee拥有创建购物单

27、的权限。角色manager有签名购物单的权限,并且有角色employee的所有权限。在这里假定存在两个权限策略集,一个对应manger,另外一个对应employee,manager权限策略集将给任何主体规定的权限,即签名购物单并且继承employee的权限策略集。Employee权限策略集将给任何主题创建购物单的权限。类似的,将有两个对应的角色策略集。Manager的角色策略集要求包含一个target使主体拥有一个角色属性,并关联manager的权限策略集。Employee角色策略集内容类似。5.1权限策略集下面的例子表示manager的权限策略集PolicySetxmlns=urn:oasi

28、s:names:tc:xacml:2.0:policy:schema:osPolicySetId=PPS:manager:rolePolicyCombiningAlgId=&policycombine;permitoverrides!PermissionsspecificallyforthemanagerrolePolicyPolicyId=Permissions:specifically:for:the:manager:roleRuleCombiningAlgId=&rulecombine;permitoverridesResourcesResourcepurchaseorderResour

29、ceAttributeDesignatorAttributeId=&resource;resourceidDataType=&xml;string/ResourceMatch/Resource/ResourcesActionsActionActionMatchMatchId=&function;stringequalAttributeValueDataType=&xml;stringsign/AttributeValueActionAttributeDesignatorAttributeId=&action;actionidDataType=&xml;string/ActionMatch/Ac

30、tion/Actions/Target/Rule/Policy!IncludepermissionsassociatedwithemployeerolePolicySetIdReferencePPS:employee:role/PolicySetIdReference/PolicySet下面的是employee的权限策略集PolicySetxmlns=urn:oasis:names:tc:xacml:2.0:policy:schema:osPolicySetId=PPS:employee:rolePolicyCombiningAlgId=&policycombine;permitoverrid

31、es!PermissionsspecificallyfortheemployeerolePolicyPolicyId=Permissions:specifically:for:the:employee:roleRuleCombiningAlgId=&rulecombine;permitoverrides!PermissiontocreateapurchaseorderRuleRuleId=Permission:to:create:a:purchase:orderEffect=PermitTargetResourcesResourceResourceMatchMatchId=&function;

32、stringequalAttributeValueDataType=&xml;stringpurchaseorder/AttributeValueResourceAttributeDesignatorAttributeId=&resource;resourceidDataType=&xml;string/ResourceMatch/Resource/ResourcesActionsActionActionMatchMatchId=&function;stringequalAttributeValueDataType=&xml;stringcreate/AttributeValueActionA

33、ttributeDesignatorAttributeId=&action;actionidDataType=&xml;string/ActionMatch/Action/Actions/Target/Rule/Policy/PolicySet5.2角色策略集下面是manager角色策略集的例子,它的作用是分配角色给subject,并且关联权限策略集PolicySetxmlns=urn:oasis:names:tc:xacml:2.0:policy:schema:osPolicySetId=RPS:manager:rolePolicyCombiningAlgId=&policycombine;

34、permitoverridesTargetSubjectsSubjectSubjectMatchMatchId=&function;anyURIequalAttributeValueDataType=&xml;anyURl&roles;manager/AttributeValue/Subjects!UsepermissionsassociatedwiththemanagerrolePolicySetIdReferencePPS:manager:role/PolicySetIdReference/PolicySet下面是employee的角色策略集,分配角色给subject,并管理相关权限策略集

35、PolicySetxmlns=urn:oasis:names:tc:xacml:2.0:policy:schema:osPolicySetId=RPS:employee:rolePolicyCombiningAlgId=&policycombine;permitoverridesSubjectsAttributeValueDataType=&xml;anyURl&roles;employee/SubjectMatchPolicySetIdReferencePPS:employee:role/PolicySetIdReference5.3查询主体是否拥有角色的权限的策略是否拥有manager角色

36、的权限,作用是支持查询某个主体是否拥有某个角色!HasPrivilegesOfRolePolicyformanagerrolePolicyPolicyId=Permission:to:have:manager:role:permissionsRuleCombiningAlgId=&rulecombine;permitoverrides!PermissiontohavemanagerrolepermissionsRuleRuleId=Permission:to:have:manager:permissionsEffect=PermitConditionApplyFunctionId=”&func

37、tion;and”ApplyFunctionId=”&function;anyURIisin”AttributeValueDataType=”&xml;anyURI”&roles;manager/AttributeValueResourceAttributeDesignatorAttributeId=&role;DataType=&xml;anyURl/ApplyApplyFunctionId=”&function;anyURIisin”AttributeValueDataType=”&xml;anyURI”&actions;hasPrivilegesofRole/AttributeValue

38、ActionAttributeDesignatorAttributeId=&action;actionidDataType=”&xml;anyURI”/Apply/Condition是否拥有employee角色的权限,作用是支持查询某个主体是否拥有某个角色PolicyPolicyId=Permission:to:have:employee:role:permissionsRuleCombiningAlgId=&rulecombine;permitoverridesConditionApplyFunctionId=”&function;and”ApplyFunctionId=”&function

39、;anyURIisin”AttributeValueDataType=”&xml;anyURI”&roles;employee/AttributeValueResourceAttributeDesignatorAttributeId=&role;DataType=&xml;anyURl/ApplyApplyFunctionId=”&function;anyURIisin”AttributeValueDataType=”&xml;anyURI”&actions;hasPrivilegesofRole/AttributeValue/Apply/Apply/Condition/Rule/Policy5.4查询是否拥有角色权限的请求一个关于主体Anne是否manager角色相关权限的请求RequestAttributeAttributeId=”&subject;subjectid”DataType=”&xml;string”AttributeValueAnne/AttributeValue/AttributeResourceAttribute

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论