Without going into implementation details, the development of an RBAC-compliant security model can be broken down into three steps:
- Group the users of the application into Roles.
- Groups the permissions to functionality in the application into Realms.
- Map the roles to the realms -- giving sets of people access to the appropriate sets of application functionality.
HR events are the single largest source of change in IT systems. If you have an application with a set of User and User Permissions tables that need to be updated when an employee or contractor is hired, let go, promoted or transferred you have a heavy drag on your baseline support costs. By expressing application security in terms of roles instead of individuals we allow ourselves a level of insulation from HR events.
A second source of change is ongoing application development and refinement. As new functionality is implemented, we seek to re-use our realms such that the scope of the existing security model is expanded while the model itself remains static.
An important aspect of building out RBAC infrastructure is to clearly define role criteria and ownership. Role membership should ideally be based on objective criteria. A job code from PeopleSoft is a good criteria for a role. "People that Bob says can have access" is a poor defining criteria for a role.
Ownership of roles is also important to have defined clearly. The owner(s) of a role is the person or persons who are responsible for evaluating the criteria for group membership and adding and removing individuals from the role. In the case of roles that are dynamically driven from attributes in an HR or Identity store, role ownership is equivalent to ownership of the attributes or attribute values that underpin the role criteria.
In an enterprise, the business side of the house (not IT) should manage role ownership.
Similarly with realms, ownership is a critical success factor. In essence the realms protect data so data stewards make the best choice for realm owners. Realm membership is often more subjective, but the membership decisions are often only made during a development cycle so more analysis can be applied. A realm owner has two questions to answer in deciding whether to grant a role access to the permissions granted by their realm:
- Is the criteria for role membership sufficiently objective and, if so, is it appropriate for these people to be granted this access?
- Given the owner(s) of the role, how comfortable am I that the role owners will maintain the role membership in compliance with the stated criteria?
The change of realm membership described above is a change in an application's security model that is one of the more radical types that can be elegantly absorbed. The actual usage of realms to secure application functionality is less radical and requires less analysis. For instance, an application's security model has a role "Customer Service Rep I" that has access to the realm "View Customer Data" which provides access to the customer's name, address and phone number. The application is updated to provide access to a customer's account activity. The "View Customer Data" might be simply applied to the new functionality, requiring no change at all to the roles or realms securing the application.
RBAC is a security pattern that provides application architects with a powerful tool for partnering with business architects to describe and implement application security models that absorb change and react to many of the common dynamic aspects of a corporate environment.
No comments:
Post a Comment