Skip to main content

Parameterized Role-Based Access Control for Django

Project description

(Parameterized Role-Based Access Control)

https://github.com/dimagi/django-prbac

Build Status Test coverage PyPi version

About RBAC and PRBAC

Role-based access control (RBAC) is the standard method for access control in large systems. With RBAC, you grant privileges to roles. For example you might grant the privilege Reporting to the role Analyst. In most systems, you can nest roles as deeply as you want, and give users however many roles. A good example of this in practice is PostgreSQL roles and privileges.

The roles and privileges are whatever abstract concepts make sense for your system. It is up to application code to determine what actions to take based on the privileges granted. You can use django-prbac to implement lower level concepts such as row-level or object-level access control.

Parameterized role-based access control (PRBAC) adds parameters to roles and privileges. Now, for example, you might grant "Reporting(organization="Dimagi",area="Finance") to FinancialAnalyst(organization="Dimagi"). If you don’t use parameters, then it is just RBAC. If you use parameters with finite sets of choice, then it is exponentially more powerful. If you use parameters with infinitely many choices (such as strings or integers) then it is infinitely more powerful. A good example of limited parameterization is how particular privileges (SELECT, UPDATE, etc) in PostgreSQL may be parameterized by an object. In PRBAC this parameterization is pervasive.

In-depth documentation

To learn more about parameterized role-based access control as implemented in this library, please visit http://django-prbac.readthedocs.org/

Access Control for Django

  • django.contrib.auth: This app, shipped with Django, provides unix-style access control (users, groups, permissions) with an extensible set of permissions that are implicitly parameterized by a content type. This is fundamentally different than role-based access control. It is only worth mentioning because it comes with Django and everyone is going to want to know “why did you reimplement the wheel?”. If django.contrib.auth is the wheel, then RBAC is the car and PRBAC is a transformer. I leave it as an exercise to the reader to attempt to implement PRBAC using django.contrib.auth :-)

  • django-rbac: This project appears defunct and is not parameterized in any rate.

  • django-role-permissions: This app implements a sort of RBAC where roles are statically defined in code.

  • Others can be perused at https://www.djangopackages.com/grids/g/perms/. Many offer object-level permissions, which is as orthogonal to role-based access control as unix permissions. In fact, this is probably true of anything using the term “permissions”.

Quick Start

To install, use pip:

$ pip install django-prbac

License

Django-prbac is distributed under the MIT license. (See the LICENSE file for details)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_prbac-1.1.2.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_prbac-1.1.2-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file django_prbac-1.1.2.tar.gz.

File metadata

  • Download URL: django_prbac-1.1.2.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for django_prbac-1.1.2.tar.gz
Algorithm Hash digest
SHA256 622d7af07c93321aaa931848e5b3e1a8c70eb9d6be258f98977fe406afe0bfd3
MD5 7dcb01c8e9b97eb9bb5ccdd4e7938d40
BLAKE2b-256 1dade1d5d2b2811ab2001ef36647fba7efb033204fbf6b70a603c2f0771a8dc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_prbac-1.1.2.tar.gz:

Publisher: pypi.yml on dimagi/django-prbac

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_prbac-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: django_prbac-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for django_prbac-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1d0c6edf6ff5c8f4bc2387a79b9f779cb84a2e8a9acecbfb92e4d70839be4239
MD5 2bf659ac4a3eadfae48d96007c529831
BLAKE2b-256 33f265c1c08a65dab2bc3155674fa4784129e44a9debb45af65e6e0fe581f44a

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_prbac-1.1.2-py3-none-any.whl:

Publisher: pypi.yml on dimagi/django-prbac

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page