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)=PermitPOV(Permit, NA)=PermitPOV(NA, Deny)=DenyPOV(NA, NA)=NA
We can conclude that POV(Ind(P), Ind(D)) = {Permit, Permit, Deny, NA} = Ind(PD).
Note that this only applies to POVand 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.