VisABAC

An Access Control Policy is a collection of rules describing whether a given access request is permitted or denied.

The main challenge of designing an access control policy is to understand and analyse the evaluation of a given policy according to an access request.

An Access Request can be understood as set of attribute values, represented here by an element NAME_v, which is true if the attribute NAME has the value v, false if the attribute NAME does not have the value v, or unknown if we do not know whether the attribute NAME has the value v or not.

In the following, we will give you a policy and an access request and we will ask you to change the values of some attributes in order to obtain a specified decision (either Permit or Deny).

In general, a policy is a collection of access rules, which should collectively cover all possible cases in order to know what should be done in every situation.

An Access Rule is defined by associating a decision, such as Permit or Deny, with a condition over attribute values.

Rules are combined using composition operators, which specify how to combine the different decisions returned by the rules.

There are two main composition operators: permit-overrides (POV) and deny-overrides (DOV). Intuitively speaking, POV returns Permit if any rule returns Permit; it will return Deny if any rule returns Deny; and NotApplicable if no rule returns Permit or Deny. Similarly, DOV returns Deny if any rule returns Deny; it will return Permit if any rule returns Permit, and NotApplicable if no rule returns Permit or Deny.

Operators section describes in detail the composition operators.

For instance, in order to indicate that any student who has not paid gym membership is denied access to the gym, one could define the following access policy:

The choice of the composition operator is crucial to the evaluation of the whole policy. Other operators are described in the Operators section

The following sub-sections show the most common composition operators used in access control policies. Please notice that not all of the operations are commutative (Not all tables are symmetrical).

Please bear in mind that VisABAC uses line conventions to represent different composition operators.

Deny-Overrides

DOV Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Permit Permit Deny Permit Permit Indeterminate (Permit-Deny) Indeterminate (Permit-Deny)
Deny Deny Deny Deny Deny Deny Deny
Not Applicable Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Indeterminate (Permit) Permit Deny Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny)
Indeterminate (Deny) Indeterminate (Permit-Deny) Deny Indeterminate (Deny) Indeterminate (Permit-Deny) Indeterminate (Deny) Indeterminate (Permit-Deny)
Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Deny Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny)

Visual Representation

Given the following policy P=DOV(R1,R2) where {R1,R2:not applicable}; P is represented by the following line:

Permit-Overrides

POV Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Permit Permit Permit Permit Permit Permit Permit
Deny Permit Deny Deny Indeterminate (Permit-Deny) Deny Indeterminate (Permit-Deny)
Not Applicable Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Indeterminate (Permit) Permit Indeterminate (Permit-Deny) Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny)
Indeterminate (Deny) Permit Deny Indeterminate (Deny) Indeterminate (Permit-Deny) Indeterminate (Deny) Indeterminate (Permit-Deny)
Indeterminate (Permit-Deny) Permit Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny)

Visual Representation

Given the following policy P=POV(R1,R2) where {R1,R2:not applicable}; P is represented by the following line:

Deny-Unless-Permit

DUP Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Permit Permit Permit Permit Permit Permit Permit
Deny Permit Deny Deny Deny Deny Deny
Not Applicable Permit Deny Deny Deny Deny Deny
Indeterminate (Permit) Permit Deny Deny Deny Deny Deny
Indeterminate (Deny) Permit Deny Deny Deny Deny Deny
Indeterminate (Permit-Deny) Permit Deny Deny Deny Deny Deny

Visual Representation

Given the following policy P=DUP(R1,R2) where {R1,R2:not applicable}; P is represented by the following line:

Permit-Unless-Deny

PUD Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Permit Permit Deny Permit Permit Permit Permit
Deny Deny Deny Deny Deny Deny Deny
Not Applicable Permit Deny Permit Permit Permit Permit
Indeterminate (Permit) Permit Deny Permit Permit Permit Permit
Indeterminate (Deny) Permit Deny Permit Permit Permit Permit
Indeterminate (Permit-Deny) Permit Deny Permit Permit Permit Permit

Visual Representation

Given the following policy P=PUD(R1,R2) where {R1,R2:not applicable}; P is represented by the following line:

First-Applicable

FA Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Permit Permit Permit Permit Permit Permit Permit
Deny Deny Deny Deny Deny Deny Deny
Not Applicable Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit)
Indeterminate (Deny) Indeterminate (Deny) Indeterminate (Deny) Indeterminate (Deny) Indeterminate (Deny) Indeterminate (Deny) Indeterminate (Deny)
Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny)

Visual Representation

Given the following policy P=FA(R1,R2) where {R1,R2:not applicable}; P is represented by the following line:

Only-One-Applicable

OOA Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Permit Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Permit Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Deny Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Deny Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Not Applicable Permit Deny Not Applicable Indeterminate (Permit) Indeterminate (Deny) Indeterminate (Permit-Deny)
Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny)
Indeterminate (Deny) Indeterminate (Deny) Indeterminate (Deny) Indeterminate (Deny) Indeterminate (Permit-Deny) Indeterminate (Deny) Indeterminate (Permit-Deny)
Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny) Indeterminate (Permit-Deny)

Visual Representation

Given the following policy P=OOA(R1,R2) where {R1,R2:not applicable}; P is represented by the following line:

Authoring and editing access control policy can be a complex and cognitive demanding task, especially when dealing with a large number of rules and attributes. Visualisation techniques are known to be helpful to users analysing intricate data, and can, in some contexts, help decreasing the cognitive load.

VisABAC enables the visualisation of attribute based access control policies using the Zoomable Circle Packing technique.