11.07.2015 Views

Designing Fast and Scalable XACML Policy Evaluation Engines

Designing Fast and Scalable XACML Policy Evaluation Engines

Designing Fast and Scalable XACML Policy Evaluation Engines

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

IEEE TRANSACTIONS ON COMPUTERS, MANUSCRIPT ID XXXX 9the evaluation result is NotApplicable.Solution: XEngine prevents errors as follows. To preventnetworking errors, as a preprocessing step, we first obtainall remote <strong>XACML</strong> policies. To prevent syntax errors, wepreprocess <strong>XACML</strong> policies <strong>and</strong> requests <strong>and</strong> make surethat they are syntactically correct. To deal with incompleterequests, given a request <strong>and</strong> an <strong>XACML</strong> policy, we firstfind all the rules that the request matches <strong>and</strong> all the ruleswhere the evaluation of the request is indeterminate; then usethe structure tree of the <strong>XACML</strong> policy to make the finaldecision based on the above policy/rule combining algorithmsin Algorithm 4, which considers indeterminate decisions.Algorithm 4: ResolveByStructureTree2(O,V )Input: (1) A set O of original <strong>XACML</strong> rules O = {R a1 ,···,R ah },where a 1 < ··· < a h (h ≥ 1).(2) A resolution tree rooted at node V <strong>and</strong> V has m childrenV 1,···,V m.Output: The resolved decision of the rules in O1 S = ∅;2 for i := 1 to m do3 O i := {R x|V i.left ≤ x ≤ V i.right};4 if O i ≠ ∅ then S := S∪ ResolveByStructureTree(O i,V i);5 /*Suppose S = {R b1 ,···,R bg }, where b 1 < ··· < b g (g ≥ 1)*/6 if V.algorithm = First-Applicable then return R b1 ’s evaluation result;7 else if V.algorithm = Only-One-Applicable then8 if |S| > 1 then return error;9 else return R b1 ’s evaluation result;10 else if V.algorithm = Permit-Overrides then11 if V ’s children are nonterminal nodes then12if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is permit then returnpermit;13else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is deny then returndeny;14else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is indeterminatethen15return indeterminate;1617181920elseif ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is permit then returnpermit;else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is indeterminate<strong>and</strong> R bi ’s effect is permit then return indeterminate;else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is deny then returndeny;else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is indeterminate<strong>and</strong> R bi ’s effect is deny then return indeterminate;21 else if V.algorithm = Deny-Overrides then22 if V ’s children are nonterminal nodes then23if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is deny orindeterminate then return deny;24else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is permit thenreturn permit;2526272829elseif ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is deny then returndeny;else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is indeterminate<strong>and</strong> R bi ’s effect is deny then return indeterminate;else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is permit thenreturn permit;else if ∃i,1 ≤ i ≤ g, R bi ’s evaluation result is indeterminate<strong>and</strong> R bi ’s effect is permit then return indeterminate;XEngine h<strong>and</strong>les incomplete requests slightly different,<strong>and</strong> arguably better, than <strong>XACML</strong> specification 2.0 [9]. InXEngine, if an incomplete request has no hope of satisfyingthe target of a policy or matching a rule regardless of themissing values, then the evaluation of the policy or the rule isNotApplicable. However, according to <strong>XACML</strong> specification2.0, as long as a request has missing values needed to evaluatea policy target or a rule, the evaluation of the request on thepolicy or the rule is indeterminate. For example, consideringa rule saying “a professor can change grades” <strong>and</strong> a requestin which the subject is a student <strong>and</strong> the resource is gradesbut the value of the action is not provided, XEngine evaluatesthis request on the rule as NotApplicable because no matterwhat the value for the action is, this request by no meanscan match the rule as their values of the subject attribute donot match. However, <strong>XACML</strong> specification 2.0 evaluates thisrequest on the rule as indeterminate simply because of themissing value for the action attribute. We argue that XEngineh<strong>and</strong>les incomplete requests in a more precise (thereforebetter) manner than <strong>XACML</strong> specification 2.0 does.Further note that the way that XEngine h<strong>and</strong>les incompleterequests is consistent with the way that XEngine h<strong>and</strong>lesmulti-valued requests. Given a multi-valued request Q <strong>and</strong>a rule (or policy, or policy set), either all the single-valuedrequests decomposed from Q are complete for the rule (orpolicy, or policy set) or all the single-valued requests decomposedfrom Q are incomplete for the rule (or policy, or policyset). This is because all the single-valued requests decomposedfrom Q have values for the same set of attributes.Example: Considering the policy in Fig. 4(a), whose structuretree is in Fig. 4(b). Suppose we are given a multi-valuedrequest Q, which can be decomposed into two single-valuedrequest Q 1 <strong>and</strong> Q 2 . Suppose the evaluation of Q 1 on R 3 isindeterminate <strong>and</strong> that on any other rule is NotApplicable, <strong>and</strong>the evaluation of Q 2 on R 5 is permit <strong>and</strong> that on any otherrule is NotApplicable. Based on Algorithm 4, the evaluationresult of request Q on node V 4 is indeterminate <strong>and</strong> that onnode V 5 is permit. Similarly, the evaluation result of Q onnode V 3 is permit <strong>and</strong> that on node V 1 is permit.J. Correctness of <strong>XACML</strong> NormalizationThe correctness of <strong>XACML</strong> policy numericalization is obvious.The correctness of <strong>XACML</strong> policy normalization followsfrom Lemmas 4.1 <strong>and</strong> 4.2, Theorems 4.3 <strong>and</strong> 4.4.Lemma 4.1: Given an <strong>XACML</strong> policy (or policy set) Xwith combining algorithm A, where A ∈ {Permit-Overrides,Deny-Overrides}, for any request Q, the origin block ofthe first rule that Q matches in AllMatch2FirstMatch(X, A)consists of all the rules that Q matches in X.Proof: Let X be 〈X 1 ,···,X n 〉, where each X i is a rule,policy or policy set.We first prove Lemma 4.1 for the base case where each X iis an <strong>XACML</strong> rule. Let 〈R 1 ,···,R n 〉 denote X, where eachR i is a rule. According to the AllMatch2FirstMatch algorithm,we build a partial PDD such that for any decision pathP in thePDD <strong>and</strong> any R i , using P (or R i ) to denote the set of requeststhat match P (or R i ), if P ∩R i ≠ ∅, then P ⊆ R i <strong>and</strong> R i ’sOB ∈ P’s origin block. For any request Q, there exists atmost one decision path in the partial PDD that Q matches.Suppose there exists a decision path P that Q matches. Thus,for any R i that Q ∈ R i , R i ∩P ≠ ∅, which means R i ’s OB∈ P’s OB.We next prove Lemma 4.1 for the case where each X i isa policy or policy set <strong>and</strong> X i ′ is the equivalent sequence ofthe first-match rules. That is, for each X i , we assume thatfor any request Q, the origin block of the first rule that Qmatches in X i ′ consists of all the rules that Q matches in X i.Let 〈R 1 ,···,R g 〉 be 〈X 1|···|X ′ n〉. ′ Similar to the reason forthe base case, for any request Q, if Q matches a decision pathP of the constructed partial PDD for 〈R 1 ,···,R g 〉, then for

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!