XACML-PolicySet与request结构简介

时间:2023-03-08 17:17:36
XACML-PolicySet与request结构简介

本文由@呆代待殆原创,转载请注明出处。

一、PolicySet的结构

XACML-PolicySet与request结构简介

PolicySet 的基本嵌套结构如上图所示,下面让我们一个一个来说明。

PolicySet:XACML策略架构的顶层元素,由PolicySetId、Version、PolicyCombiningAlgld、Target、Policy、ObligationExpressions、AdviceExpressions以及其他PolicySet组成

PolicySetId:PolicySet的唯一标识用来确保PAP和PDP没有两个相同的标识,相当于人的身份证号码。

Version:PolicySet的版本号

PolicyCombiningAlgld:PolicySet所采用的组合算法,policySet会包含多个policies或者PolicySets,所以有时候一个请求会返回多个结果(Permit,Deny,NotApplicable,Indeterminate)所以需要有能调和这种情况的机制,于是提 出了combining Algorithms,举一个常用的算法当例子。

Deny-overrides:

1, 如果有一个Deny出现,则最终结果为Deny。

2, 若上述不满足,若有一个Indeterminate{DP} 则最终为Indeterminate{DP}。

3, 若上述都不满足,若有一个Indeterminate{D},且其他都为Indeterminate{P}或Permit,则结果为Indeterminate{DP}。

4, 若上述都不满足,若有一个是Indeterminate{D},则结果为Indeterminate{D}。

5, 若上述都不满足,若有一个是Permit,则结果为Permit。

6, 若上述都不满足,若有一个是Indeterminate{P},这结果是Indeterminate{P}。

7, 若上述都不满足,则结果是NotApplicable。

ObligationExpressions与Advicexpressions:他们是可选的,可以是rule,policy或者policySet的组成部分,一个obligation是一个对PEP的指令,必须在access request被(拒绝/接受)之(前/后)被执行,用来执行一些额外的操作(如维护访问记录等),advice和obligation的唯一区别是advice可以被PEP忽略。

Target:定义了一组适用于PolicySet的request,当发来的request与target匹配时,说明PolicySet适用于request,Target可以由PolicySet的创建者声名也可以从policy元素用到的<Target>元素计算,包括4个基本元素,即资源(Resource)、主体(Subject)、动作(Actions)和环境(Environment)。

subject attributes:代表这个请求的发起者。

resource attributes:要访问的资源。

action attributes:要对资源执行的动作。

environment attribute:取决于可用的system sensor,可能包括系统时间、威胁等级threat level等等。

Policy:Policy元素是能提交PDP的最小实体,主要元素有PolicyId、Version、Target、Rule、ObligationExpressions、AdviceExpressions、CombinedDesicion。

PolicyId:Policy的Id。它是PAP的依赖确保PDP只可见一个持有相同Id的Policy。

Version:Policy的版本号。

RuleCombiningAlgld:规则组合算法,与PolicyCombiningAlgld类似理解即可。

Target:定义了一个Policy或一个决定请求集合的适用性。Target能够被Policy元素的构造者声明,也可能由被引用Rule元素中的target元素作交集或并集计算得到。

Rule:Rule元素应当定义在policy中的单个规则里。这个元素的主要组件分别是RuleId、Target、Condition、ObligationExpressions和AdviceExpressions以及Effect。

RuleId:验证所属规则的标识。

Effect:Rule被满足时返回的结果,可以取值Permit或者Deny。

Condition:Rule里需要被检验的断言。

标准定义如下,其中有些元素上面并没有提到:

XACML-PolicySet与request结构简介

二、request元素的结构

Request 元素的结构:主要包括ReturnPolicyIdList、CombinedDecision、Attributes

ReturnPolicyIdList:这个属性用于请求,PDP返回了一个完全可应用policy和policy set的列表,这些policy和policy set在决定中被用于作为一个决定回应。

CombinedDecision:这个属性提出通过PDP将多个决定合并成为一个单独决定的请求。

Attributes:通常有多个,用来表示请求属性的相关信息,一般包括subject、resource、action、environment或者其他access request。

标准定义如下,有些元素上面并没有提到:

XACML-PolicySet与request结构简介

本文参考:

[1] http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047147

[2] Ferraiolo, David, Chandramouli, Ramaswamy, Kuhn, Rick, et al. Extensible Access Control Markup Language (XACML) and Next Generation Access Control (NGAC)[C]// ACM International Workshop on Attribute Based Access Control. ACM, 2016.