What are the benefits of each, and when should I choose one over the other? Are there situations where these should be merged?

Do you have examples of common usages?

And what about MAC, where does that fit in?

1 Answer 1


RBAC (Role based access control) is based on defining a list of business roles, and adding each user in the system to one or more roles. Permissions and privileges are then granted to each role, and users receive them via their membership in the role (pretty much equivalent to a group). Applications will typically test the user for membership in a specific role, and grant or deny access based on that.
Discretionary Access Control (DAC) allows a user or administrator to define an Access Control List (ACL) on a specific resource (e.g. file, registry key, database table, OS object, etc), this List will contain entries (ACE) that define each user that has access to the resource, and what her privileges are for that resouce.

The main benefit of RBAC over DAC, is ease of management - in principle you have a very few roles, centrally administered, no matter how many users, and its just a question of granting each user the correct role; as opposed to DAC, where for each new user (or change in user, or deletion, etc), you have to go around to all the resources she needs access to and add them to the list.
On the other hand, DAC is often simpler, and generally more granular. Also, in the DAC model the data owner can decide who has access (if he has that permission on the data) and add or remove people from the list.

Very common example of DAC is the Windows file system. On the other hand, very common example of RBAC is the DAC on corporate file servers - anyone in the "Sales" ActiveDirectory group will have access to the \Sales\ shared folder. More commonly is the Administrators group in Windows.

MAC is Mandatory Access Control, this can be seen as a classification or privacy level. This is most often used in military systems, and back in the Mainframe days :). Not so much used anymore, though current OS's are implementing a flavor of this, such as Vista/Win7's Integrity Levels.

To sum up the differences:

  • DAC is based on personal permissions, RBAC on "group"-level permissions
  • DAC is set by the data owner, RBAC by the system owner/s (usually the developer defines the access given to each role, and the operational admin puts users into roles)
  • DAC definitions are typically attached to the data/resource, whereas RBAC is usually defined in two places: in code/configuration/metadata (the roles access), and on the user object (or table - the roles each user has).
  • On the other hand, RBAC roles are centrally administered (who is associated with which roles), whereas DAC is administered "on the resource" (i.e. you administer each resource individually).
  • The definition of permissions per role is typically static in RBAC, and users are only granted roles; in DAC the permissions per resource are often changed at runtime.
  • DAC should be seen as enumerating "who has access to my data", and RBAC defines "what can this user do".
  • 1
    From what I understand of RBAC is that there are no objects - only actions that can be performed.
    – d-_-b
    Dec 14, 2011 at 5:30
  • 1
    @RolfRander though that is common in many implementations, that is not inherent to the model.
    – AviD
    Mar 10, 2012 at 21:42
  • 5
    It might be nice to note that RBAC and ACL can replace eachother; you can configure RBAC permissions to cover the policy set out by ACL and vice versa. Also, there are quite some implementations of RBAC out there who grant discretionary powers to users. Those RBAC systems have been proven to be able to offer all functionality of DAC.
    – Jacco
    May 18, 2012 at 10:17
  • 3
    It might also be nice to note that in RBAC there are no negative-permission (deny). Although some implementations do provide them, negative permissions are usually associated with ACL/DAC and not with RBAC.
    – Jacco
    May 18, 2012 at 10:19
  • 1
    For negative permissions and more fine-grained authorization on resources, use attribute based access control (ABAC) Aug 17, 2016 at 16:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .