Mandatory Access Control
Contents
Definition
Mandatory Access Control (MAC) and Mandatory Integrity Control (MIC) are both security models that restrict access to resources, but they focus on different goals and are emphasized in different systems.[1]
Mandatory Access Control (MAC)
What it is: A strict access control model where the operating system enforces policies defined by a central authority—not by individual users.
Used in: Unix/Linux systems (e.g., SELinux, AppArmor), military and government environments.
How it works:
Every user and resource is assigned a security label (e.g., Top Secret, Confidential).
Access is granted only if the user’s clearance matches or exceeds the resource’s classification.
Goal: Prevent unauthorized information flow and enforce confidentiality.
Example: A user with “Secret” clearance cannot access a “Top Secret” file, even if file permissions allow it.
Mandatory Integrity Control (MIC)
What it is: A Windows-specific model introduced in Windows Vista that enforces integrity levels to prevent lower-trust processes from modifying higher-trust objects.
Used in: Microsoft Windows (Vista and later).
How it works:
Objects and processes are labeled with integrity levels: Low, Medium, High, or System.
A process with a lower integrity level cannot write to or modify an object with a higher level—even if it has permission via ACLs.
Goal: Protect system integrity by isolating untrusted code (e.g., web browsers, downloaded files).
Example: A browser running in “Low” integrity can’t write to a user’s documents folder (which is “Medium”).
Key Differences
Feature | MAC (Unix/Linux) | MIC (Windows) |
Focus | Confidentiality and classification | System integrity and trustworthiness |
Label Type | Security classification (e.g., Secret) | Integrity level (e.g., Low, Medium) |
Granularity | User and object-based | Process and object-based |
Policy Control | Centralized, non-discretionary | Enforced by OS, layered over ACLs |
Typical Use Case | Military, secure servers | Desktop security, sandboxing |
DoD definitions | Bell-LaPadula, no read up, no write down | Biba, no write up, no read down |
Primary risk focus | Data exposure | Program alterations |
Discretionary = The [computing base] shall define and control access between named users and named objects (e.g. files and programs). The enforcement mechanism (e.g. Access Control Lists)shall allow users to specify and control sharing of those objects by named individuals or defined groups.
Mandatory - The [computing base] shall enforce a mandatory access control policy over all subject and storage objects(e.g. files, programs, segments and devices). These subject and objects shall be assigned sensitivity labels that are a combination of hierarchical classification levels and non-hierarchical categories. The labels shall be used as basis for Mandatory Access Control decisions.
Solutions
SELinux
stands for **Security-Enhanced Linux**—a powerful security architecture built into many Linux distributions.
- What Is SELinux?
- SELinux** is a **Linux kernel security module** that enforces **mandatory access control (MAC)** policies.
- It was originally developed by the **NSA** and released to the open-source community in 2000. Unlike traditional discretionary access control (DAC), where users and processes can set permissions, **SELinux policies are centrally defined and enforced**, even for root. This makes it much harder for compromised processes to escalate privileges or access unauthorized resources.
- Introduced into Red Hat Enterprise Linux
- IAndroid 4.3: SELinux introduced in permissive mode—violations were logged but not enforced.
- IAndroid 5.0+: Switched to enforcing mode by default, applying SELinux policies system-wide.
- IAndroid 8.0 (Oreo): SELinux adapted to support Project Treble, allowing vendors to maintain separate policies for their components.
- Android 11+: Further modularization with system_ext and product partitions, each with tailored SELinux policies.
- How It Works
- Every **process (subject)** and **resource (object)**—like files, ports, or sockets—has a **security context**.
- SELinux uses **type enforcement** to define what types of processes can access what types of resources.
- Access decisions are made by checking these contexts against a **policy database**.
- Modes of Operation
- **Enforcing**: SELinux actively blocks unauthorized actions.
- **Permissive**: Violations are logged but not blocked (useful for debugging).
- **Disabled**: SELinux is turned off.
- You can check and change the mode via `/etc/selinux/config` or with the `getenforce` and `setenforce` commands.
- Why It Matters
- **Limits damage** from compromised services (e.g., a hacked web server can’t access unrelated files).
- **Supports fine-grained control** over system behavior.
- **Essential for hardened environments**, especially in government, finance, and cloud deployments.
References
- ↑ DoD, Trusted Computer System Evaluation DoD 5200-28 STD 1985-12