Extended composition
The introduction of Indeterminate
decisions, the composition of rules becomes more complex. Note that for the sake of compactness, we abbreviate Indeterminate
to Ind
in the different definitions below.
In general, an easy way to extend the composition operators is to consider a set based interpretation of the Indeterminate decision:
Decision | Set based decision |
---|---|
Permit | {Permit} |
Deny | {Deny} |
NA | {NA} |
Ind(P) | {Permit, NA} |
Ind(D) | {Deny, NA} |
Ind(PD) | {Permit, Deny} |
Ind(PD) | {Permit, Deny, NA} |
Note that Ind(PD)
is mapped with two different set-based decisions. In practice, this does not make a huge difference.
In other words, the decision Permit
indicates that only Permit
is the right decision, while Ind(P)
indicates that the decision could be either Permit
or NA
(but not Deny
).
When composing extended decisions, we can simply apply the operator to every possible combination across the two set based decisions.
For instance, in order to compute POV(Ind(P), Ind(D))
, we consider it as POV({Permit, NA}, {Deny, NA})
, and therefore we compute the different possibilites:
POV(Permit, Deny)
=Permit
POV(Permit, NA)
=Permit
POV(NA, Deny)
=Deny
POV(NA, NA)
=NA
We can conclude that POV(Ind(P), Ind(D))
= {Permit
, Permit
, Deny
, NA
} = Ind(PD)
.
Note that this only applies to POV
and DOV
. The operators tend to keep a simple interpretation. We provide the full definitions of the extended operators below, but as an exercise, try to calculate the following:
POV(Permit, Ind(P))
= ?POV(Permit, Ind(D))
= ?POV(Deny, Ind(P))
= ?DOV(Deny, Ind(P))
= ?DOV(Permit, Ind(P))
= ?
Permit-Overrides
XACML proposes an algorithmic definition of POV:
The permit overrides combining algorithm is intended for those cases where a permit decision should have priority over a deny decision. This algorithm has the following behaviour:
- If any decision is “Permit”, the result is “Permit”.
- Otherwise, if any decision is “Ind{DP}", the result is “Ind{DP}".
- Otherwise, if any decision is “Ind{P}” and another decision is “Ind{D} or Deny, the result is “Ind{DP}".
- Otherwise, if any decision is “Ind{P}", the result is “Ind{P}".
- Otherwise, if decision is “Deny”, the result is “Deny”.
- Otherwise, if any decision is “Ind{D}", the result is “Ind{D}".
- Otherwise, the result is “NotApplicable”.
POV | Permit | Deny | NA | Ind(P) | Ind (D) | Ind (PD) |
---|---|---|---|---|---|---|
Permit | Permit | Permit | Permit | Permit | Permit | Permit |
Deny | Permit | Deny | Deny | Ind (PD) | Deny | Ind (PD) |
NA | Permit | Deny | NA | Ind (P) | Ind (D) | Ind (PD) |
Ind(P) | Permit | Ind (PD) | Ind (P) | Ind (P) | Ind (PD) | Ind (PD) |
Ind (D) | Permit | Deny | Ind (D) | Ind (PD) | Ind (D) | Ind (PD) |
Ind (PD) | Permit | Ind (PD) | Ind (PD) | Ind (PD) | Ind (PD) | Ind (PD) |
Deny-Overrides
Accord to the XACML specification, DOV is analogous to POV, but favours Deny
instead of Permit
.
This algorithm has the following behaviour:
- If any decision is “Deny”, the result is “Deny”.
- Otherwise, if any decision is “Indeterminate{DP}", the result is “Indeterminate{DP}".
- Otherwise, if any decision is “Indeterminate{D}” and another decision is “Indeterminate{P} or Permit, the result is “Indeterminate{DP}".
- Otherwise, if any decision is “Indeterminate{D}", the result is “Indeterminate{D}".
- Otherwise, if any decision is “Permit”, the result is “Permit”.
- Otherwise, if any decision is “Indeterminate{P}", the result is “Indeterminate{P}".
- Otherwise, the result is “NotApplicable”.
DOV | Permit | Deny | NA | Ind(P) | Ind(D) | Ind(PD) |
---|---|---|---|---|---|---|
Permit | Permit | Deny | Permit | Permit | Ind(PD) | Ind(PD) |
Deny | Deny | Deny | Deny | Deny | Deny | Deny |
NA | Permit | Deny | NA | Ind(P) | Ind(D) | Ind(PD) |
Ind(P) | Permit | Deny | Ind(P) | Ind(P) | Ind(PD) | Ind(PD) |
Ind(D) | Ind(PD) | Deny | Ind(D) | Ind(PD) | Ind(D) | Ind(PD) |
Ind(PD) | Ind(PD) | Deny | Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) |
PUD
PUD is directly extended from its basic definition
PUD | Permit | Deny | NA | Ind(P) | Ind(D) | Ind(PD) |
---|---|---|---|---|---|---|
Permit | Permit | Deny | Permit | Permit | Permit | Permit |
Deny | Deny | Deny | Deny | Deny | Deny | Deny |
NA | Permit | Deny | Permit | Permit | Permit | Permit |
Ind(P) | Permit | Deny | Permit | Permit | Permit | Permit |
Ind(D) | Permit | Deny | Permit | Permit | Permit | Permit |
Ind(PD) | Permit | Deny | Permit | Permit | Permit | Permit |
DUP
PUD is directly extended from its basic definition
DUP | Permit | Deny | NA | Ind(P) | Ind(D) | Ind(PD) |
---|---|---|---|---|---|---|
Permit | Permit | Permit | Permit | Permit | Permit | Permit |
Deny | Permit | Deny | Deny | Deny | Deny | Deny |
NA | Permit | Deny | Deny | Deny | Deny | Deny |
Ind(P) | Permit | Deny | Deny | Deny | Deny | Deny |
Ind(D) | Permit | Deny | Deny | Deny | Deny | Deny |
Ind(PD) | Permit | Deny | Deny | Deny | Deny | Deny |
FA
The extended definition of First-Applicable is an interesting case. Morisset & Zannone (2014) argue that the definition given in XACML is not compatible with the intuition that Indeterminate(X)
decisions correspond to either X
or NA
. We present below the definition from Morisset & Zannone (2014) rather than the XACML one.
FA | Permit | Deny | NA | Ind(P) | Ind(D) | Ind(PD) |
---|---|---|---|---|---|---|
Permit | Permit | Permit | Permit | Permit | Permit | Permit |
Deny | Deny | Deny | Deny | Deny | Deny | Deny |
NA | Permit | Deny | NA | Ind(P) | Ind(D) | Ind(PD) |
Ind(P) | Ind(P) | Ind(P) | Ind(P) | Ind(P) | Ind(P) | Ind(P) |
Ind(D) | Ind(D) | Ind(D) | Ind(D) | Ind(D) | Ind(D) | Ind(D) |
Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) |
Only-one-applicable (OOA)
Finally, the operator OOA returns an Indeterminate
decisions more than one policy returns Permit
or Deny
.
OOA | Permit | Deny | NA | Ind(P) | Ind(D) | Ind(PD) |
---|---|---|---|---|---|---|
Permit | Ind(PD) | Ind(PD) | Permit | Ind(P) | Ind(D) | Ind(PD) |
Deny | Ind(PD) | Ind(PD) | Deny | Ind(P) | Ind(D) | Ind(PD) |
NA | Permit | Deny | NA | Ind(P) | Ind(D) | Ind(PD) |
Ind(P) | Ind(P) | Ind(P) | Ind(P) | Ind(P) | Ind(PD) | Ind(PD) |
Ind(D) | Ind(D) | Ind(D) | Ind(D) | Ind(PD) | Ind(D) | Ind(PD) |
Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) | Ind(PD) |
Example
References
Morisset, C., & Zannone, N. (2014). Reduction of access control decisions. In Proceedings of the 19th ACM symposium on Access control models and technologies (pp. 53-62). ACM.