Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Fundamentals of an Enterprise Role-Based Access Control (RBAC) System

DZone's Guide to

Fundamentals of an Enterprise Role-Based Access Control (RBAC) System

Learn how to use RBAC to restrict access to your enterprise systems, and keep your corporate data safe from cyberattacks.

· Security Zone
Free Resource

Discover an in-depth knowledge about the different kinds of iOS hacking tools and techniques with the free iOS Hacking Guide from Security Innovation.

Role-Based Access Control (RBAC) is an approach to restricting system access to users based on defined roles. Many companies have built internal systems like these, but usually in a very archaic and haphazard way.

There are a few primary semantics to a role and a set of attributes, operators, and actions that define a role. 

Image title

Defining a Role

A role should have five semantic components:

  • Name - a human readable and business-friendly way to identify a role.

  • Description - the role's purpose, clearly defined.

  • Tags - important for managing multiple roles and creating roles to manage to roles.

  • Assignments - assigning roles to individuals or groups of individuals.

  • Policies - specific rules and permission sets assigned to a role.

Defining a Policy

A policy has one primary component:

  • Array of Statements - a policy can have many statements. You should be able to save policies and re-use them across multiple roles. In other words, a policy is a collection of specific permission rules.

Defining a Statement

A statement has three components:

  • Resource - the targetted feature, environment, or operation.

  • Effect - typically "Allow" or "Deny".

  • Action - a resource can have many actions, like deleteUser, addUser, modifyUser.  These actions should have human-readable names, like "Delete a User" for "deleteUser." This is essential when you get into more complex actions, like "Modify Image Upload" for "imgUploadMod."

  {
    "effect": "deny",
    "resources": [
      "prod/primaryDB/*"
    ],
    "actions": [
      "deleteDB"
    ]
  }


Mapping Roles

You should be able to assign multiple roles to an individual user. Ideally, you would have a clear user interface that allows you to build these roles and attach them to individual users or groups of users.

Avoiding Technical Debt

It is very common amongst large companies to accrue hundreds or thousands of roles over time. Having an intuitive GUI lets you manage this debt, keep your roles up-to-date, and keep your system secure.

Leveraging Humans to Get the Most Out of Tools

Topics:
security ,Role-Based Access Control ,security compliance ,user access control

Published at DZone with permission of Justin Baker, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}