Role-Based Access Control (RBAC)


Role-based access control (RBAC) is an access control model where resources are protected by ACLs that are managed by administrators and that provide user permissions based on job functions (roles).

  • Each set of permissions is a role
  • Each principal is allocated to one or more roles
    • a user or service account
  • right to modify the permissions assigned to each role is reserved to a system owner
  • system is nondiscretionary
    • each principal cannot modify the ACL of a resource
    • though they can change the resource in other ways
  • Principals gain rights implicitly, rather than explicitly
    • through being assigned to a role vs being assigned the right directly
  • filesystem ACLs are where these permissions are stored and enforced
    • locally or networked storage

Security Groups

  • a security group account partially turns a discretionary system into a role-based one
    • rather assigning rights directly to user accounts
      • system owner assigns user accounts to security group accounts
    • principals gain rights by being made a member of a security group
      • can be a member of multiple groups
      • can receive rights and permissions from several sources
    • RBAC can be partially implemented by mapping security groups onto roles
      • but are not identical schemes
    • membership in security groups is discretionary
      • assigned by admins rather than determined by the system
    • ideally, a principal should only inherit the permissions of a role to complete a particular task
      • not retain them permanently
    • admins should be prevented from escalating their own privileges
      • e.g.,
        • assigning roles to their own accounts arbitrarily
        • boosting a role’s permissions