Take the 2-minute tour ×
Information Security Stack Exchange is a question and answer site for Information security professionals. It's 100% free, no registration required.

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?

share|improve this question

1 Answer 1

up vote 28 down vote accepted

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".
share|improve this answer
    
So the difference is access control based on a per user basis (DAC) versus on a per user group basis (RBAC)? –  VirtuosiMedia Nov 14 '10 at 20:37
    
@VirtuosiMedia, I updated my answer with a simple summary of the highlights :) –  AviD Nov 14 '10 at 20:47
    
From what I understand of RBAC is that there are no objects - only actions that can be performed. –  d-_-b Dec 14 '11 at 5:30
    
@sims yes, that is true too. RBAC does not relate to specific items of data, just "what this role can do". –  AviD Dec 14 '11 at 8:58
    
Also in RBAC is the concept of a session: the roles you currently have is related to your login-session. (For example: you can be both an administrator or a normal user, but not both at once, your session tells which role(s) you currently have) –  Rolf Rander Mar 10 '12 at 14:06

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.