## Overview 简单地说,XACML引擎根据预先定义策略集来对传入的请求进行授权,产生的结果可以有: * Permit: 允许对资源进行操作。 * Deny: 拒绝对资源进行操作。 * Not Applicable (NA): 不可用,没有找到适用的策略。 * Indeterminate: 不确定。 ## 请求 Request 一个请求包含多组属性: Subject: 请求的主体,发起者 Resource: 数据,服务 Action: 请求对资源的操作 Environment: 全局环境属性,独立于具体的Subject, Resource, Action 请求的响应: Decision: `Permit|Deny|NA` Status: `status:ok`等 Obligations: ## 策略 Policies 一个策略包含: Obligations: 可选,根据策略评估的结果执行指定的操作 Target: 策略适用的目标,使用匹配函数对下列项目在请求中进行匹配 `Evaluate function XXX-Match ("an-attr-value", [XXXAttributeDesignator Value])`。`AttributeDesignator`从请求中寻找对应的属性值。 * Subjects * Resources * Actions * Environment Rules: * Effect: 条件返回True时的结果,`Permit|Deny` (False: NA, Indeterminate: Indeterminate)。 * Condition: 规则的条件,授权的核心判断逻辑,使用逻辑函数判断 `And (isResourceEqual("a-path"), Or(isSubjectEqual("a-sub"), isActionEqual("an-action"))`,返回`True|False|Indeterminate`。 * Target: 规则适用的目标,类似策略的Target Rule Combining Algorithm: 当有多条规则时,计算出最终的结果 * permit-overrides: 一票通过 * ordered-permit-overrides: * deny-overrides: 一票否决 * ordered-deny-overrides: * first-applicable: 取第一条适用规则的结果 策略集:包含多个策略,以及Target,Policy Combining Algorithm,和前述类似。 ## 引擎组件 Policy Enforcement Point (PEP) Policy Administration Point (PAP) Policy Decision Point (PDP) Policy Information Point (PIP) Context Handler ## Reference [SPEC](http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html) [Understanding Xacml Policy Language XACML](http://wso2.com/library/articles/2011/10/understanding-xacml-policy-language-xacml-extended-assertion-markup-langue-part-1/) [XML 安全: 使用 XACML 控制信息访问](http://www.ibm.com/developerworks/cn/xml/x-xacml/index.html) [Tutorial on XACML](http://www.cs.odu.edu/~mukka/cs795sum15.net/Lecturenotes/day7/xacmltutorial.pptx)