evaluateRule : PDP`Rule ==> PDP`Effect
evaluateRule(rule) == if targetmatch(rule.target) then if rule.cond = nil thenreturn(rule.effect) elseif (rule.cond).wfExpr(env) then cases (rule.cond).EvaluateBind(req,env): true -> return(rule.effect), false -> return(<NotApplicable>),
<Indet> -> return(<Indeterminate>), others -> error end elsereturn <NotApplicable> else return(<NotApplicable>);
evaluatePol : PDP`Policy ==> PDP`Effect
evaluatePol(pol) == if targetmatch(pol.target) then cases pol.ruleCombAlg:
<denyOverrides> -> return(evaluateRulesDenyOverrides(pol.rules)),
<permitOverrides> -> return(evaluateRulesPermitOverrides(pol.rules)), others -> return(<NotApplicable>) end else-- target does not match return(<NotApplicable>);
evaluateRulesDenyOverrides : setof PDP`Rule ==> PDP`Effect
evaluateRulesDenyOverrides(rs) == ifexists r inset rs &
evaluateRule(r) = <Deny> thenreturn(<Deny>) elseifexists r inset rs &
(evaluateRule(r) = <Indeterminate> and pdp.GetEffect(r) = <Deny> ) thenreturn(<Indeterminate>) elseifexists r inset rs &
evaluateRule(r) = <Permit> thenreturn(<Permit>) elseifexists r inset rs &
(evaluateRule(r) = <Indeterminate> and pdp.GetEffect(r) = <Permit> ) thenreturn(<Indeterminate>) elsereturn(<NotApplicable>);
evaluateRulesPermitOverrides : setof PDP`Rule ==> PDP`Effect
evaluateRulesPermitOverrides(rs) == ifexists r inset rs &
evaluateRule(r) = <Permit> thenreturn(<Permit>) elseifexists r inset rs &
(evaluateRule(r) = <Indeterminate> and pdp.GetEffect(r) = <Permit> ) thenreturn(<Indeterminate>) elseifexists r inset rs &
evaluateRule(r) = <Deny> thenreturn(<Deny>) elseifexists r inset rs &
(evaluateRule(r) = <Indeterminate> and pdp.GetEffect(r) = <Deny> ) thenreturn(<Indeterminate>) elsereturn(<NotApplicable>);
-- targetmatch has been adapted. If any of the sets in the target of -- the (rule|policy) is empty then they match anything.
targetmatch : PDP`Target ==> bool
targetmatch(tgt) == if ((tgt.subjects = {}) or (req.GetSubject() inset tgt.subjects)) and
((tgt.resources = {}) or (req.GetResource() inset tgt.resources)) and
((tgt.actions = {}) or (req.GetActions() inter tgt.actions) <> {}) thenreturntrue elsereturnfalse;
end Evaluator
¤ Dauer der Verarbeitung: 0.42 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.