Access control: ACL, RBAC and ABAC – who may do what?
In short: Authentication clarifies who someone is, authorisation what the person may do; common models are access lists (ACL), roles (RBAC) and rule-based attributes (ABAC).
In more detail: Two questions are often confused: authentication (“Who are you?”, login) and authorisation (“What may you do?”). For the latter every application needs a permission model.
In Depth
ACL: access control lists
For each resource there is a list of people/groups and permitted actions: file.txt: Mia (read, write), group Team (read). Typical for file systems (NTFS, POSIX ACLs), network devices, cloud storage. Advantage: very fine-grained; disadvantage: confusing with many resources.
RBAC: role-based access control
Rights are assigned to roles, people have roles: admin, editor, reader. New employees get the role instead of many individual rights; rights change centrally. Widespread (databases, Kubernetes, cloud, CMS). Danger: role explosion (too many special roles) and permission creep (gradual accumulation).
ABAC and other models
ABAC (attribute-based) decides by properties of user, resource, action and context: “Doctors may read patient files of their ward during duty hours.” Very flexible but more complex. Add ReBAC (relationship-based: “owner, member of a group”, as in Google Drive; systems: Zanzibar, OpenFGA, SpiceDB) and policy engines (OPA, Cedar). DAC (owner decides) and MAC (central security levels, for example SELinux) are classic basic models.
Good practice
- Least privilege: allow only what is necessary, deny by default.
- Always check on the server, never only in the interface (hiding a button is not enough).
- Check at object level: may this user see exactly this record? (protection against IDOR/broken access control, number 1 of the OWASP Top 10.)
- Separation of duties, regular permission reviews, logging.
- Keep permissions central and testable, not scattered across many individual functions.
See also: Authentication, Least privilege, OWASP Top 10