Policy Description Language for Authorization using Logic-Based Programming

This paper proposes a Datalog-based policy description language that enables fine-grained access control by incorporating dynamic application process states, demonstrating its effectiveness through the successful composition and evaluation of SELinux policies within a Defense-in-Depth strategy.

Original authors: Masaki Hashimoto, Mira Kim, Hidenori Tsuji, Hidehiko Tanaka

Published 2026-06-09
📖 4 min read☕ Coffee break read

Original authors: Masaki Hashimoto, Mira Kim, Hidenori Tsuji, Hidehiko Tanaka

Original paper licensed under CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). This is an AI-generated explanation of the paper below. It is not written or endorsed by the authors. For technical accuracy, refer to the original paper. Read full disclaimer

Imagine you are the head of security for a massive, high-tech castle. Your goal is to protect the most valuable treasures inside. In the past, security guards (the "policies") would stand at every single door and check a long, handwritten list of rules for every single person trying to enter.

The Problem: The "Wall of Paper" Issue
The authors of this paper argue that modern computer systems are like castles that have grown so huge and complex that writing a unique rule for every single door and every single person is impossible.

  • The Old Way (like SELinux): Imagine a security guard holding a stack of 40,000 individual index cards. Each card says, "Person A can open Door B with Key C." If you want to change the rules for a whole group of people, you have to rewrite thousands of cards. It's messy, hard to read, and easy to make a mistake.
  • The Goal: The authors want to stop writing 40,000 separate cards and instead write a single, smart "instruction manual" that covers all of them.

The Solution: A "Smart Recipe Book" (Logic-Based Programming)
The authors propose a new language that acts like a smart recipe book or a computer program for security rules. Instead of listing every single permission, you write "recipes" (logic programs) that explain how permissions work.

Here is how their "recipe book" works, using simple analogies:

  1. Grouping (The "Uniform" Analogy):
    Instead of saying "Bob can open the vault," "Alice can open the vault," and "Charlie can open the vault," you write one rule: "Anyone wearing a Manager's Uniform can open the vault."
    In the paper, this is called hierarchical inheritance. If you put a "Manager's Uniform" on Bob, he automatically gets all the rules for managers. You don't have to write a new rule for him; the system knows he belongs to that group.

  2. Subroutines (The "Assembly Line" Analogy):
    Imagine a factory where a product goes through three steps: Prep, Cook, and Pack. Instead of writing a new rule for every worker at every station, you write one rule for the "Prep Station" and one for the "Cook Station."
    The authors call this subroutinization. You can define a "step" in a process (like a transaction) and say, "Once the 'Prep' step is done, the worker automatically moves to the 'Cook' step." This lets you describe complex, multi-step security processes with just a few lines of text instead of thousands.

  3. Dynamic Status (The "Traffic Light" Analogy):
    Sometimes, a rule depends on what is happening right now. For example, "You can only enter the kitchen if the 'Fire Alarm' is off."
    The new language can handle these changing conditions. It can say, "If the system is currently 'tainted' (like a red traffic light), no one can enter." This allows security to react to the current state of the computer, not just static lists.

The Experiment: Testing the New System
The authors didn't just write the recipe book; they tested it against the real thing.

  • The Test: They took the massive security policy of SELinux (a real, widely-used security system for Linux) and translated it into their new "recipe book" language.
  • The Result (Accuracy): They asked both the old system and the new system the same 15 million questions (e.g., "Can User X do Action Y?"). The answers matched 99% of the time. This proves the new language is just as accurate as the old, complex one.
  • The Result (Efficiency): This is where the magic happened. The original SELinux policy took 6,524 lines of code (and 133 pages of paper). The new language described the exact same security rules in just 335 lines (95 pages). They shrank the policy by about 95%.

Why This Matters
The paper concludes that while the old way (writing every rule individually) is easy to understand if you look at just one rule, it becomes a nightmare when you look at the whole system.

The new language is like switching from writing a dictionary of 40,000 individual words to writing a grammar book.

  • Pros: It makes the whole system much smaller, easier to manage, and easier to see the "big picture." It allows security to be more flexible and adaptable.
  • Cons: If you look at just one single rule in the new system, it might look a bit more abstract (like a math formula) than a simple sentence. But for managing a massive, complex system, the "grammar book" approach is far superior.

In short, the authors built a tool that lets security experts describe complex, multi-layered defenses using smart, reusable logic instead of drowning in a sea of repetitive, individual rules.

Drowning in papers in your field?

Get daily digests of the most novel papers matching your research keywords — with technical summaries, in your language.

Try Digest →