Attribute-based access control
Attribute-based access control (ABAC), also known as policy-based access control, defines an access control paradigm whereby access rights are granted to users through the use of policies which combine attributes together. The policies can use any type of attributes (user attributes, resource attributes, object, environment attributes etc.). This model supports Boolean logic, in which rules contain "IF, THEN" statements about who is making the request, the resource, and the action. For example: IF the requestor is a manager, THEN allow read/write access to sensitive data.
Unlike role-based access control (RBAC), which employs pre-defined roles that carry a specific set of privileges associated with them and to which subjects are assigned, the key difference with ABAC is the concept of policies that express a complex Boolean rule set that can evaluate many different attributes. Attribute values can be set-valued or atomic-valued. Set-valued attributes contain more than one atomic value. Examples are role and project. Atomic-valued attributes contain only one atomic value. Examples are clearance and sensitivity. Attributes can be compared to static values or to one another, thus enabling relation-based access control.
Although the concept itself existed for many years, ABAC is considered a "next generation" authorization model because it provides dynamic, context-aware and risk-intelligent access control to resources allowing access control policies that include specific attributes from many different information systems to be defined to resolve an authorization and achieve an efficient regulatory compliance, allowing enterprises flexibility in their implementations based on their existing infrastructures.
Attribute-based access control is sometimes referred to as policy-based access control (PBAC) or claims-based access control (CBAC), which is a Microsoft-specific term. The key standards that implement ABAC are XACML and ALFA (XACML).
Dimensions of attribute-based access control
ABAC can be seen as:
ABAC comes with a recommended architecture which is as follows:
- The PEP or Policy Enforcement Point: it is responsible for protecting the apps & data you want to apply ABAC to. The PEP inspects the request and generates an authorization request from it which it sends to the PDP.
- The PDP or Policy Decision Point is the brain of the architecture. This is the piece which evaluates incoming requests against policies it has been configured with. The PDP returns a Permit / Deny decision. The PDP may also use PIPs to retrieve missing metadata
- The PIP or Policy Information Point bridges the PDP to external sources of attributes e.g. LDAP or databases.
Attributes can be about anything and anyone. They tend to fall into 4 different categories or functions (as in grammatical function)
- Subject attributes: attributes that describe the user attempting the access e.g. age, clearance, department, role, job title...
- Action attributes: attributes that describe the action being attempted e.g. read, delete, view, approve...
- Object attributes: attributes that describe the object (or resource) being accessed e.g. the object type (medical record, bank account...), the department, the classification or sensitivity, the location...
- Contextual (environment) attributes: attributes that deal with time, location or dynamic aspects of the access control scenario
Policies are statements that bring together attributes to express what can happen and is not allowed. Policies in ABAC can be granting or denying policies. Policies can also be local or global and can be written in a way that they override other policies. Examples include:
- A user can view a document if the document is in the same department as the user
- A user can edit a document if they are the owner and if the document is in draft mode
- Deny access before 9am
Historically, access control models have included mandatory access control (MAC), discretionary access control (DAC), and more recently role-based access control (RBAC). These access control models are user-centric and do not take into account additional parameters such as resource information, the relationship between the user (the requesting entity) and the resource, and dynamic information e.g. time of the day or user IP. ABAC tries to address this by defining access control based on attributes which describe the requesting entity (the user), the targeted object or resource, the desired action (view, edit, delete...), and environmental or contextual information. This is why access control is said to be attribute-based.
One standard that implements attribute- and policy-based access control is XACML, the eXtensible Access Control Markup Language. XACML defines an architecture, a policy language, and a request / response scheme. It does not handle attribute management (user attribute assignment, object attribute assignment, environment attribute assignment) which is left to traditional IAM tools, databases, and directories.
Companies, including every branch in the United States military, have started using ABAC. At its basic level, ABAC uses an ‘IF/THEN/AND’ model to protect the data itself rather than assigning data to a user who can take that information anywhere they please or give a hacker the ability to swipe the file. The US Department of Commerce has made this a mandatory practice and the adoption is spreading throughout several governmental and military agencies.
The concept of ABAC can be applied at any level of the technology stack and an enterprise infrastructure. For example, ABAC can be used at the firewall, server, application, database, and data layer. The use of attributes bring additional context to evaluate the legitimacy of any request for access and inform the decision to grant or deny access.
An important consideration when evaluating ABAC solutions is to understand its potential overhead on performance and its impact on the user experience. It is expected that the more granular the controls, the higher the overhead.
API and micro services security
ABAC can be used to apply attribute-based, fine-grained authorization to the API methods or functions. For instance, a banking API may expose an approveTransaction(transId) method. ABAC can be used to secure the call. With ABAC, a policy author can write the following:
- Policy: managers can approve transactions up to their approval limit
- Attributes used: role, action ID, object type, amount, approval limit.
The flow would be as follows:
- The user, Alice, calls the API method approveTransaction(123)
- The API receives the call and authenticates the user.
- An interceptor in the API calls out to the authorization engine (typically called a Policy Decision Point or PDP) and asks: Can Alice approve transaction 123?
- The PDP retrieves the ABAC policy and necessary attributes.
- The PDP reaches a decision e.g. Permit or Deny and returns it to the API interceptor
- If the decision is Permit, the underlying API business logic is called. Otherwise the API returns an error or access denied.
One of the key benefits to ABAC is that the authorization policies and attributes can be defined in a technology neutral way. This means policies defined for APIs or databases can be reused in the application space. Common applications that can benefit from ABAC are:
- content management systems
- home-grown applications
- web applications
The same process and flow as the one described in the API section applies here too.
Security for databases has long been specific to the database vendors: Oracle VPD, IBM FGAC, and Microsoft RLS are all means to achieve fine-grained ABAC-like security.
Using ABAC, it is possible to define policies that apply across multiple databases. This is called dynamic data masking.
An example would be:
- Policy: managers can view transactions in their region
- Reworked policy in a data-centric way: users with role == manager can do the action == SELECT on table == TRANSACTIONS if user.region == transaction.region
Data security typically goes one step further than database security and applies control directly to the data element. This is often referred to as data-centric security. On traditional relational databases, ABAC policies can control access to data at the table, column, field, cell and sub-cell using logical controls with filtering conditions and masking based on attributes. Attributes can be data, user, session or tools based to deliver the greatest level of flexibility in dynamically granting/denying access to a specific data element. On big data, and distributed file systems such as Hadoop, ABAC applied at the data layer control access to folder, sub-folder, file, sub-file and other granular.
Big data security
File server security
As of Windows Server 2012, Microsoft has implemented an ABAC approach to controlling access to files and folders. This achieved through dynamic access control lists (DACL) and Security Descriptor Definition Language (SDDL). SDDL can be seen as an ABAC language as it uses metadata of the user (claims) and of the file / folder to control access.
- Access control list
- Context-based access control (CBAC)
- Data-centric security
- Discretionary access control (DAC)
- Graph-based access control (GBAC)
- Lattice-based access control (LBAC)
- Mandatory access control (MAC)
- Organisation-based access control (OrBAC)
- Role-based access control (RBAC)
- Rule-set-based access control (RSBAC)
- Capability-based security
- Location-based authentication
- Risk-based authentication
- Classified information
- Federated identity
- Identity driven networking
- Identity management
- Identity management system
- Lightweight Directory Access Protocol
- Security Assertion Markup Language
- Security token service
- Single sign-on
- User provisioning software
- "SP 800-162, Guide to Attribute Based Access Control (ABAC) Definition and Considerations" (PDF). NIST. 2014. Archived from the original (PDF) on 2016-03-05. Retrieved 2015-12-08.
- "Attribute Based Access Control (ABAC), axiomatics.com". Retrieved 2016-07-05.
- "What is Policy-Based Access Control?". Harvesting web technologies. 2019-11-20. Retrieved 2019-11-20.
- RBAC first – ABAC next, or what?, 2015, Horst Walther, GenericIAM Blog. Retrieved on 2016-08-30.
- Karp, Alan, Harry Haury, and Michael Davis. "From ABAC to ZBAC: the evolution of access control models." International Conference on Information Warfare and Security. Academic Conferences International Limited, 2010. Retrieved on 2016-08-30.
- "Technology Overview for Externalized Authorization Management". www.gartner.com. Retrieved 2017-05-31.
- "Leadership Compass: Dynamic Authorization Management - 70966". KuppingerCole. Retrieved 2017-05-31.
- "Alternatives for Roles/Claims Access Control Systems". stackoverflow.com.
- Coffey, Alisa (2019-03-28). "Attribute Based Access Control (ABAC) – Encryption on Steroids". Siemens PLM Community. Retrieved 2019-04-01.
- "Dynamic, Fine-Grained Authorization Secures Big Data".
- "First Fine-grained Data Access Control On Hadoop".
Gartner - improving-runtime-authorization-maturity
- What is attribute-based access control?
- ATTRIBUTE BASED ACCESS CONTROL (ABAC) - OVERVIEW
- Unified Attribute Based Access Control Model (ABAC) covering DAC, MAC and RBAC
- Attribute Based Access Control Models (ABAC) and Implementation in Cloud Infrastructure as a Service
- ABAC not RBAC: Welcome to the (IoT) World of Contextual Security, 2015, Lori MacVittie