Policy-Based Access Control (PBAC) Isn’t as Great as You Think
Blog post from Permit.io
Policy-Based Access Control (PBAC) is an authorization model that appears flexible and powerful due to its use of custom logic to define access policies, but it introduces significant complexities and challenges when implemented. Unlike more structured models like Role-Based Access Control (RBAC), Attribute-Based Access Control (ABAC), and Relationship-Based Access Control (ReBAC), PBAC lacks a clear framework, making it prone to errors and confusion. Developers often struggle with the choice of programming language for writing these policies, as general-purpose languages may not be optimized for the specific needs of access control. While policy as code offers advantages such as power, flexibility, and traceability, it can create barriers for non-developers who need to understand and engage with these policies. Additionally, PBAC involves significant engineering overhead to construct the necessary architecture and schema, and performance can suffer if policies are not carefully modeled. Auditing and incident response also pose challenges, as complex policy logic can be difficult to decipher during security breaches. While PBAC can be a valuable tool for managing highly complex policies that cannot be expressed otherwise, simpler models like RBAC, ABAC, and ReBAC should be prioritized unless the complexity of the access requirements specifically necessitates the use of PBAC.