jeeves  by jeanqasaur

DSL for automatic enforcement of privacy policies

created 11 years ago
336 stars

Top 83.0% on sourcepulse

GitHubView on GitHub
Project Summary

Jeeves is a Python-based embedded DSL for automatically enforcing information flow policies, designed for developers needing to manage data privacy and access control. It allows programmers to define policies that govern how sensitive data can be shared or derived, simplifying the enforcement of complex privacy rules.

How It Works

Jeeves employs a policy-agnostic programming model by separating core functionality from privacy policies. Programmers provide two views of sensitive data: a high-confidentiality (secret) view and a low-confidentiality (public) view. The Jeeves runtime then simultaneously processes both views, ensuring that outputs adhere to the defined policies, which specify permissible data flows based on viewer identity and data sensitivity.

Quick Start & Requirements

  • Installation: Clone the repository, set up a Python 2 virtual environment (virtualenv -p python2 --no-site-packages env), activate it (source env/bin/activate), and install dependencies (pip install -r requirements.txt).
  • Prerequisites: Python 2.7.6, MacroPy (1.0.3), Nose (1.3.7), Mock (2.0.0), Z3 SMT Solver (with Python bindings). Optional Django dependencies for demos.
  • Setup: Requires manual installation of Z3 binaries or building from source.
  • Resources: Virtual environment setup recommended.
  • Documentation: JeevesLib API, Wiki.

Highlighted Details

  • Implemented as an embedded DSL in Python.
  • Enforces information flow policies, tracking data lineage beyond direct access.
  • Policy-agnostic programming model separates concerns.
  • Runtime enforces policies across high- and low-confidentiality data views.

Maintenance & Community

  • Active user group for questions and suggestions.
  • Project appears to be research-oriented.

Licensing & Compatibility

  • License not explicitly stated in the README.
  • Compatibility with commercial or closed-source projects is undetermined without a license.

Limitations & Caveats

The project explicitly requires Python 2.7.6 and has dependencies like MacroPy and specific Django versions, indicating potential compatibility issues with modern Python environments. The Z3 SMT solver installation can be complex.

Health Check
Last commit

7 years ago

Responsiveness

1 day

Pull Requests (30d)
0
Issues (30d)
0
Star History
0 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.