Django的参数化基于角色的访问控制
项目描述
(参数化基于角色的访问控制)
https://github.com/dimagi/django-prbac
关于RBAC和PRBAC
基于角色的访问控制(RBAC) 是大型系统中访问控制的标准方法。使用RBAC,您将 权限 授予 角色。例如,您可能将 Reporting 权限授予 Analyst 角色。在大多数系统中,您可以按深度嵌套角色,并为用户提供任意数量的角色。实践中一个很好的例子是 PostgreSQL角色和权限。
角色和权限是您系统中的任何抽象概念。由应用程序代码决定根据授予的权限采取什么操作。这当然可以以更低级别的权限系统(如行级或对象级访问控制列表(ACL))来实现。
参数化基于角色的访问控制(PRBAC) 为角色和权限添加参数。现在,例如,您可以授予 "Reporting(organization="Dimagi",area="Finance") 给 FinancialAnalyst(organization="Dimagi")。如果不使用参数,那么它就是RBAC。如果使用有限选择集的参数,那么它将呈指数级增强。如果使用无限选择集的参数(例如字符串或整数),那么它将无限增强。有限的参数化示例是PostgreSQL中特定权限(SELECT、UPDATE 等)如何通过一个对象进行参数化。在PRBAC中,这种参数化是普遍存在的。
深入文档
要了解有关此库中实现的参数化基于角色的访问控制的更多信息,请访问 http://django-prbac.readthedocs.org/
Django的访问控制
django.contrib.auth:这个应用程序是Django附带的应用程序,提供Unix风格的访问控制(用户、组、权限),具有可扩展的权限集,这些权限隐式地通过内容类型进行参数化。这与基于角色的访问控制有根本的不同。这里只提一下,因为它与Django一起提供,每个人都会想知道“你为什么要重新发明轮子?”。如果 django.contrib.auth 是轮子,那么RBAC是汽车,PRBAC是变形金刚。我将将其留给读者作为练习,尝试使用 django.contrib.auth 实现PRBAC :-)
django-rbac:这个项目看起来已经停止维护,并且没有进行任何参数化。
django-role-permissions:此应用程序实现了一种RBAC,其中角色在代码中静态定义。
其他内容可以在 https://www.djangopackages.com/grids/g/perms/ 上查看。许多提供对象级权限,这与基于角色的访问控制正交,就像Unix权限一样。实际上,这可能适用于使用“权限”一词的任何东西。
快速入门
要安装,请使用pip
$ pip install django-prbac
许可证
Django-prbac采用MIT许可协议发布。(有关详细信息,请参阅LICENSE文件)
项目详情
下载文件
下载适合您平台的项目文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。