We define a risk mitigation strategy in a Risk Mitigation <Policy> that is treated
as a first-class entity. In other words, any Risk Mitigation <Policy> can be refer-
enced in any Role Assignment <PolicySet> without re-specifying the risk miti-
gation strategy. A Risk Mitigation <Policy> for the emergency example is shown
below. This <Policy> consists of a <VariableDefinition> element and two
<Rule> elements. Note that the <Target> element in this <Policy> is empty, in
which case it is implied by the <Target> of the Role Assignment <PolicySet>.
The <VariableDefinition>(lines 02-04) is used to define a risk threshold for the
mitigation strategy, which essentially splits the risk domain [0, 1] into two risk intervals
[0, 0.7) and [0.7, 1]. Clearly, we can define an arbitrary number of such
<VariableDefinition>elements (risk thresholds) to have more fine-grained risk
intervals. Specifying the risk thresholds in these variables instead of hard-coding them
in the rule conditions provides a flexible way to update and maintain the risk mitigation
policy. Specifically, a policy administrator only needs to change those variable defini-
tions in order to change the risk thresholds for existing risk intervals.
Now it becomes very natural to write different rules that refer to these variables to
implement a risk mitigation strategy. The first <Rule>(lines 05-28) has Permit as its
effect when the condition is satisfied (lines 06-19); that is, the risk value for the access
request lies in the interval [0, 0.7). Note that the <AttributeDesignator> ele-
ment is used to retrieve a risk value for the access request, and the returned value must
meet the specified criteria such as within the access-riskcategory and being issued
by a trusted authority (line 09). We describe how this mechanism works in the next sec-
tion. Similarly, the second <Rule> (lines 29-36) has Deny as its effect if the risk value
lies in the interval [0.7, 1]. Additionally, both rules contain
<ObligationExpression> elements (lines 21, 22 and 35), each of which repre-
sents an obligation. An <ObligationExpression> can include an arbitrary num-
ber of attributeassignments that forms the arguments of the action defined by the obliga-
tion. For example, the obligation expression with <system:alert> id (lines 22-26)
defines an email attribute which indicates that the system is obliged to send an email to
a privacyofficer. When evaluating this <ObligationExpression>,the PDP deter-
mines the value for <emailID> at runtime by the means of an
<AttributeDesignator>, and sends the resulting obligation to the PEP in the
response context. As stated in the XACML specification, the PEP itself has to know
how to handle the obligation when receiving the response. To this end, we propose a
concrete form of the XACML obligation service for interpreting and enforcing differ-
ent types of obligations. We provide some more detail of our implementation of this
obligations service in Sect. 4.
00 <!-- Risk Mitigation <Policy> -->
01 <Policy PolicyId="rm:audit" RuleCombiningAlgId="first-applicable">
02 <VariableDefinition VariableId="risk-threshold-1">
03 <AttributeValue>0.7</AttributeValue>
04 </VariableDefinition>
05 <Rule RuleId="first-risk-interval" Effect="Permit">
06 <Condition><Apply FunctionId="function:and">
07 <Apply FunctionId="double-greater-than-or-equal">
08 <Apply FunctionId="function:double-one-and-only">
09 <AttributeDesignator Category="access-risk" AttributeId="risk" Issuer="TA"/>
71