In computer science, an Access Control Matrix or Access Matrix is an abstract, formal security model of protection state in computer systems, that characterizes the rights of each subject with respect to every object in the system. It was first introduced by Butler W. Lampson in 1971.[1]
An access matrix can be envisioned as a rectangular array of cells, with one row per subject and one column per object. The entry in a cell – that is, the entry for a particular subject-object pair – indicates the access mode that the subject is permitted to exercise on the object. Each column is equivalent to an access control list for the object; and each row is equivalent to an access profile for the subject.[2]
According to the model, the protection state of a computer system can be abstracted as a set of objects [math]\displaystyle{ O }[/math], that is the set of entities that needs to be protected (e.g. processes, files, memory pages) and a set of subjects [math]\displaystyle{ S }[/math], that consists of all active entities (e.g. users, processes). Further there exists a set of rights [math]\displaystyle{ R }[/math] of the form [math]\displaystyle{ r(s,o) }[/math], where [math]\displaystyle{ s \in S }[/math], [math]\displaystyle{ o \in O }[/math] and [math]\displaystyle{ r(s,o) \subseteq R }[/math]. A right thereby specifies the kind of access a subject is allowed to process object.
In this matrix example there exist two processes, two assets, a file, and a device. The first process is the owner of asset 1, has the ability to execute asset 2, read the file, and write some information to the device, while the second process is the owner of asset 2 and can read asset 1.
Asset 1 | Asset 2 | File | Device | |
---|---|---|---|---|
Role 1 | read, write, execute, own | execute | read | write |
Role 2 | read | read, write, execute, own |
Because it does not define the granularity of protection mechanisms, the Access Control Matrix can be used as a model of the static access permissions in any type of access control system. It does not model the rules by which permissions can change in any particular system, and therefore only gives an incomplete description of the system's access control security policy.
An Access Control Matrix should be thought of only as an abstract model of permissions at a given point in time; a literal implementation of it as a two-dimensional array would have excessive memory requirements. Capability-based security and access control lists are categories of concrete access control mechanisms whose static permissions can be modeled using Access Control Matrices. Although these two mechanisms have sometimes been presented (for example in Butler Lampson's Protection paper) as simply row-based and column-based implementations of the Access Control Matrix, this view has been criticized as drawing a misleading equivalence between systems that does not take into account dynamic behaviour. [3]