Recent from talks
Nothing was collected or created yet.
Authorization
View on Wikipedia
Authorization or authorisation (see spelling differences), in information security, computer security and IAM (Identity and Access Management),[1] is the function of specifying rights/privileges for accessing resources, in most cases through an access policy, and then deciding whether a particular subject has privilege to access a particular resource. Examples of subjects include human users, computer software and other hardware on the computer. Examples of resources include individual files or an item's data, computer programs, computer devices and functionality provided by computer applications. For example, user accounts for human resources staff are typically configured with authorization for accessing employee records.
Authorization is closely related to access control, which is what enforces the authorization policy by deciding whether access requests to resources from (authenticated) consumers shall be approved (granted) or disapproved (rejected).[2]
Authorization should not be confused with authentication, which is the process of verifying someone's identity.
Overview
[edit]IAM consists the following two phases: the configuration phase where a user account is created and its corresponding access authorization policy is defined, and the usage phase where user authentication takes place followed by access control to ensure that the user/consumer only gets access to resources for which they are authorized. Hence, access control in computer systems and networks relies on access authorization specified during configuration.
Authorization is the responsibility of an authority, such as a department manager, within the application domain, but is often delegated to a custodian such as a system administrator. Authorizations are expressed as access policies in some types of "policy definition application", e.g. in the form of an access control list or a capability, or a policy administration point e.g. XACML.
Broken authorization is often listed as the number one risk in web applications.[3] On the basis of the "principle of least privilege", consumers should only be authorized to access whatever they need to do their jobs, and nothing more.[4]
"Anonymous consumers" or "guests", are consumers that have not been required to authenticate. They often have limited authorization. On a distributed system, it is often desirable to grant access without requiring a unique identity. Familiar examples of access tokens include keys, certificates and tickets: they grant access without proving identity.
Implementation
[edit]A widely used framework for authorizing applications is OAuth 2. It provides a standardized way for third-party applications to obtain limited access to a user's resources without exposing their credentials.[5]
In modern systems, a widely used model for authorization is role-based access control (RBAC) where authorization is defined by granting subjects one or more roles, and then checking that the resource being accessed has been assigned at least one of those roles.[5] However, with the rise of social media, Relationship-based access control is gaining more prominence.[6]
Even when access is controlled through a combination of authentication and access control lists, the problems of maintaining the authorization data is not trivial, and often represents as much administrative burden as managing authentication credentials. It is often necessary to change or remove a user's authorization: this is done by changing or deleting the corresponding access rules on the system. Using atomic authorization is an alternative to per-system authorization management, where a trusted third party securely distributes authorization information.
Related interpretations
[edit]Public policy
[edit]In public policy, authorization is a feature of trusted systems used for security or social control.
Banking
[edit]In banking, an authorization is a hold placed on a customer's account when a purchase is made using a debit card or credit card.
Publishing
[edit]In publishing, sometimes public lectures and other freely available texts are published without the approval of the author. These are called unauthorized texts. An example is the 2002 'The Theory of Everything: The Origin and Fate of the Universe' , which was collected from Stephen Hawking's lectures and published without his permission as per copyright law.[citation needed]
See also
[edit]References
[edit]- ^ Fraser, B. (1997), RFC 2196 – Site Security Handbook, IETF
- ^ Jøsang, Audun (2017), A Consistent Definition of Authorization, Proceedings of the 13th International Workshop on Security and Trust Management (STM 2017)
- ^ "A01 Broken Access Control - OWASP Top 10:2021". owasp.org. Retrieved 1 May 2025.
- ^ "Authorization - OWASP Cheat Sheet Series". cheatsheetseries.owasp.org. Retrieved 1 May 2025.
- ^ a b Hingnikar, Abhishek (2023). Solving Identity Management in Modern Applications (2nd ed.). Apress. pp. 63, 147. ISBN 9781484282601.
- ^ Gates, Carrie (2007). "Access control requirements for web 2.0 security and privacy". IEEE Web. 2: 12–15.
Authorization
View on GrokipediaFundamental Concepts
Definition and Scope
Authorization is the process by which a system determines whether a subject—such as a user, process, or entity—is permitted to perform a specific action on a resource, based on established policies or rules.[1] This determination grants or enforces access privileges, ensuring that only authorized interactions occur within a computing environment.[1] The scope of authorization encompasses both affirmative outcomes, where access is granted, and negative outcomes, where it is denied, to maintain system security and compliance. Central to this process are foundational elements like permissions, which specify allowable actions; roles, which group permissions for assignment to subjects; and privileges, which represent broader rights derived from those permissions.[1] Authorization forms a core component of access control, the broader framework governing resource interactions in information systems. The concept of authorization traces its origins to early computing systems in the 1970s, particularly through access control lists (ACLs) implemented in the Multics operating system, which enabled fine-grained control over file and resource sharing among multiple users.[9] Over time, it has evolved into a key pillar of modern information security, integrated into the CIA triad—confidentiality, integrity, and availability—which underpins protections against unauthorized disclosure, alteration, or disruption of data.[10] Guiding principles of authorization include the principle of least privilege, which mandates granting subjects only the minimum access necessary to accomplish their tasks, thereby minimizing potential damage from errors or compromises.[11] Complementing this is the separation of duties, which distributes conflicting responsibilities across multiple subjects to prevent any single entity from completing a high-risk action independently, reducing risks of fraud or abuse.[12]Distinction from Authentication
Authentication is the process of verifying the identity of a user, device, or system, confirming that they are who or what they claim to be, typically through methods such as passwords, biometrics, multi-factor tokens, or digital certificates.[13][14] This verification step occurs prior to authorization, establishing the subject's legitimacy before assessing their permissions.[15] The primary distinction between authentication and authorization lies in their core questions and sequencing: authentication addresses "who are you?" by validating identity, while authorization answers "what are you allowed to do?" by enforcing access rights and permissions on resources or actions.[16][17] In standard security workflows, authentication must succeed first; only then does authorization proceed to evaluate and grant or deny specific privileges based on policies, roles, or attributes.[15] These concepts form part of the Authentication, Authorization, and Accounting (AAA) framework, a foundational security triad used to manage and audit access in networks and systems.[18] Authentication handles identity verification, authorization manages policy enforcement and privilege assignment post-verification, and accounting (or auditing) tracks resource usage for compliance and monitoring.[19] This integrated approach ensures comprehensive control, with authorization specifically addressing the risks of over-permissive access after identity is confirmed.[20] Common misconceptions arise when conflating the two processes, such as assuming OAuth fully encompasses both; in reality, OAuth 2.0 is an authorization framework for delegating access to resources, often requiring separate mechanisms like OpenID Connect for authentication.[21] Similarly, single sign-on (SSO) systems primarily streamline authentication across multiple applications using shared credentials or tokens, but they do not inherently perform authorization checks, which must be implemented per resource to prevent unauthorized actions.[22][14] A typical workflow illustrates this sequence: a subject requests access to a protected resource; the system first authenticates the subject by challenging and validating their credentials—if this fails, access is immediately denied. Successful authentication triggers authorization, where the system queries policies or attributes to check permissions; if authorized, the action proceeds, but failure results in denial, ensuring no access without both validations.[15][17]Technical Frameworks
Access Control Models
Access control models provide the foundational frameworks for implementing authorization in computing systems, defining how decisions are made about granting or denying access to resources. These models evolved to address varying needs for security, flexibility, and manageability, ranging from rigid system-enforced policies to dynamic, attribute-driven evaluations. Key models include Discretionary Access Control (DAC), Mandatory Access Control (MAC), Role-Based Access Control (RBAC), and Attribute-Based Access Control (ABAC), each suited to different environments such as operating systems, enterprises, and distributed networks.[23] Discretionary Access Control (DAC) allows resource owners to define and manage access permissions for other users, typically through access control lists (ACLs) that specify allowed operations like read, write, or execute. In DAC, the owner retains full discretion over privilege assignments and propagation, enabling flexible, user-centric control without central oversight. This model has been historically prominent in Unix file systems, where file permissions are set via ACLs in i-nodes, using identifiers for owner, group, and others to enforce access based on effective user and group IDs.[24] While DAC offers simplicity for small-scale systems, it is vulnerable to issues like privilege accumulation and trojan horse attacks, as users can inadvertently grant excessive rights.[23] Mandatory Access Control (MAC) enforces access decisions centrally through system-assigned security labels on subjects (users or processes) and objects (resources), preventing users from overriding policies regardless of ownership. Policies are based on labels such as clearance levels for subjects and classification levels for objects, ensuring strict enforcement for high-security contexts like confidentiality protection. The Bell-LaPadula model exemplifies MAC for confidentiality, introducing rules like the simple security property (no read up) and the *-property (no write down) to prevent unauthorized information flows in multilevel security systems.[25] SELinux implements MAC in Linux kernels via the Flask architecture, applying type enforcement and multilevel security to label processes and files, thereby containing potential breaches from compromised applications.[26] MAC provides robust security in sensitive environments but lacks flexibility, making it challenging for dynamic or user-driven scenarios.[23] Role-Based Access Control (RBAC) regulates access by assigning users to roles based on their job functions within an organization, with permissions then linked to those roles rather than individual users. Core components include users (individuals), roles (job positions), and permissions (approved operations on resources), allowing indirect access management through role assignments and hierarchies. The ANSI/INCITS 359-2004 standard formalizes RBAC, defining elements like core RBAC (basic user-role-permission relations) and extensions for separation of duties, and was revised as INCITS 359-2012 to enhance interoperability.[27] RBAC excels in enterprise scalability, efficiently handling access for organizations with over 500 users by reducing administrative overhead and minimizing errors in large-scale permission management, as evidenced by industry savings of $1.1 billion from reduced downtime.[28] However, it can suffer from role explosion in complex hierarchies, limiting adaptability to non-role-based contexts.[23] Attribute-Based Access Control (ABAC) makes authorization decisions dynamically by evaluating policies against attributes of the subject (e.g., user role or clearance), resource (e.g., classification or owner), action, and environment (e.g., time or location). Policies are expressed as rules that combine these attributes to grant or deny access, enabling context-aware and fine-grained control without predefined user mappings. The eXtensible Access Control Markup Language (XACML), an OASIS standard, facilitates ABAC policy expression through components like policy decision points (PDPs) for evaluation and policy enforcement points (PEPs) for application, supporting interoperability across systems.[23] ABAC supports external users and complex policies effectively but requires significant resources for attribute management and policy maintenance.[23] The evolution of these models traces back to the 1970s, when DAC and MAC emerged in systems like Multics and early Unix to address basic protection needs, with MAC focusing on military-grade confidentiality via models like Bell-LaPadula (1973). By the 1990s, RBAC was proposed as a scalable alternative to the limitations of DAC and MAC, formalized in 1992 by Ferraiolo and Kuhn, and standardized in 2004 to meet enterprise demands. ABAC further advanced this progression in the 2000s, incorporating dynamic attributes for modern, distributed environments.[29]| Model | Pros | Cons |
|---|---|---|
| DAC | Flexible owner control; simple for small systems | Vulnerable to privilege escalation; high administrative burden in large setups[23] |
| MAC | Strong central enforcement; high security for confidentiality | Inflexible for dynamic access; complex policy updates[23] |
| RBAC | Scalable for enterprises; simplifies role-based administration | Role explosion in hierarchies; static for contextual needs[23] |
| ABAC | Fine-grained, dynamic policies; supports external users | Complex implementation; resource-intensive maintenance[23] |
Implementation in Software Systems
In software systems, authorization is typically implemented through distinct architectural components that separate decision-making from enforcement. The Policy Decision Point (PDP) evaluates access requests against defined policies to render authorization decisions, while the Policy Enforcement Point (PEP) intercepts requests and enforces those decisions by allowing or denying access.[23] These components often integrate into middleware layers, such as API gateways, where the PEP resides at the entry point to services, querying the PDP for real-time evaluations before permitting resource access.[30] This separation enhances modularity, allowing policies to be updated centrally without altering application code. Programming approaches to authorization emphasize explicit checks embedded in code, often using simple conditional logic for permission validation. For instance, a basic permission guard in pseudocode might appear as follows:if (user.hasPermission("read", resource)) {
return resource.[data](/page/Data);
} else {
throw new AccessDeniedException("Insufficient permissions");
}
if (user.hasPermission("read", resource)) {
return resource.[data](/page/Data);
} else {
throw new AccessDeniedException("Insufficient permissions");
}
@PreAuthorize("hasRole('ADMIN')"), to declaratively enforce rules during request processing.[31] Similarly, Casbin offers a multi-language library supporting models like RBAC, where policies are defined in a configuration file and enforced via an enforcer.Enforce(user, obj, act) call to check access dynamically.[32]
Authorization data is commonly stored in databases to manage permissions scalably. In relational databases, a typical schema for RBAC involves tables linking users to roles and roles to permissions, such as:
| Table | Columns | Purpose |
|---|---|---|
| users | id (PK), username | Stores user identities |
| roles | id (PK), name | Defines roles like "admin" |
| permissions | id (PK), action, resource | Specifies actions on resources |
| user_roles | user_id (FK), role_id (FK) | Assigns roles to users |
| role_permissions | role_id (FK), permission_id (FK) | Links permissions to roles |

