The ability to control access on the security system itself. This control is exercised inside the policy administration programs.
In addition to what functions may be executed, we must control which entities to operate on. A common use case is to allow User X the ability to reset and unlock passwords only for Users within Organization Y. Another is the administrator may only assign a specific subset of Roles to Users who reside inside their Organization. Additionally we must also be able to limit an Administrator to a specific subset of Roles in which to Grant to a subset of Permissions. Indeed every API that changes state inside the back-end security repository must be governed via a well understood delegated administration policy.
Administrative Role-Based Access Control (ARBAC)
Apache Fortress has implemented ARBAC02. [link to paper]. This is a formal model for Delegated Administration and builds on the ANSI RBAC specification. The control is marshaled into three interfaces:
- Delegated Admin Manager – Provides CRUD for related entities like Administrative Roles and Permissions.
- Delegated Review Manager – Interrogation of Delegated Admin policy objects.
- Delegated Access Manager – Enforcement of Delegated Administration Policies.
1 & 2 are for management of the Delegated Admin policies themselves. 3 is for enforcement of Delegated Admin policies at runtime.
Delegated Admin Policy Enforcement
There are two types of controls:
- Ensure that the caller has the permission to call the security administrative method (e.g. addUser, addRole, addPermission,…)
- Ensure the caller is entitled to perform the function for a given organization (e.g. which Users and Permissions to grant access rights).
With Fortress, the Delegated Administration control is baked into its APIs. The enforcement occurs during API invocation which means it can’t be circumvented by poorly implemented administrative programs.
In addition to control, every API invocation leaves an audit trail so you may determine what policies changed, by whom, when and where.