用于跟踪Web应用程序的基于角色的访问控制的最佳数据库架构是什么?
我正在使用Rails,但谷歌链接的RBAC插件看起来没有维护(只有300次提交到SVN;最近几乎是一年前)。
这个概念很简单,可以从头开始实施,但又复杂而重要,值得一试。
那么其他人如何构建和实施他们的RBAC模型?
答案 0 :(得分:56)
对于我在该领域的基本知识,RBAC的基本参与者是:
资源< - require - > (一个或多个)权限。
角色< - 是 - >的集合(一个或多个)权限。
用户< - 可以拥有 - > (一个或多个)角色。
这种模型的表格是:
现在,如果您希望应用程序的用户能够配置资源所需的权限,那么您可能还希望在此处包含资源。但我从来不需要那个。希望有所帮助。
答案 1 :(得分:20)
这是一个简单的图表来说明Amr Mostafa's excellent answer
答案 2 :(得分:3)
我碰巧在这里工作的RBAC子系统正在工作......真是巧合。
我的模型基于系统中需要权限的不同实体的构建块,无论是查看/更新的属性还是要执行的操作。当然,系统中也有不同的角色(可以提供给用户),将整个事物放在一起的粘合剂是访问规则,连接特定角色,特定权限需求实体和授予的权限。访问规则可能如下所示:
rule 14: guest role + page name + read permission
rule 46: approver role + add column + execute permission
等等。我会把ERD作为练习留给读者;-)如果你有问题,请发表评论。
Yuval = 8 - )
答案 3 :(得分:2)
您可以使用Restful ACL Rails plugin。
答案 4 :(得分:1)
我认为你问题的答案与你想要的一样深。如果您碰巧考虑将角色放入组中,然后将组与用户关联是不够的。最终,您需要为特定对象(论坛,视频等)的用户授予特定权限。
我更接近于Yuval的答案,我们所需要的只是关联项目范围的对象+动作+用户。提供这个;基础对象(实体)非常有意义。从Entity继承的任何对象都可以通过这种方式轻松地与用户+操作相关联。
你也希望保持简单;我的建议是;
为了更进一步,我还会推荐以下内容(针对自动化的rbac)
但是,唉,这只适用于.NET,据我所知,Java没有自定义属性,因此不太可能用于Java。
我想提出一些代码示例,但我太懒了。如果你对我的rbac方式有疑问,你可以问这里,我肯定会回复。
答案 5 :(得分:0)
Role Requirement非常适用于Restful Authentication,可以提供基于角色的身份验证功能并且维护良好。
答案 6 :(得分:-1)
对于.net应用程序,您应该查看Visual Guard http://www.visual-guard.com/之类的内容,以避免必须从头开始处理权限和角色。
对于.net,您还可以使用配置处理成员资格和角色提供程序以及授权。 http://www.odetocode.com/Articles/427.aspx
答案 7 :(得分:-1)
我非常喜欢这篇博客文章http://pivotallabs.com/users/nick/blog/articles/272-access-control-permissions-in-rails。
编辑:
似乎ryanb的railscasts沿着相同的路线思考并使用类似于pivotollabs帖子的基本技术创建了一个名为cancan https://github.com/ryanb/cancan的宝石。
答案 8 :(得分:-1)
RBAC简介 -
基于角色的访问控制系统是一种基于组织用户的角色限制对“某些源或应用程序或应用程序的某些功能”的访问的方法。
此处,限制可以通过多个权限进行,这些权限由管理员创建以限制访问权限,这些权限共同代表一个角色,该角色将分配给用户。
如果我们在RBAC中稍微深入一点,它基本上包含3个功能。
1)身份验证 - 确认用户的身份。通常通过用户帐户和密码或凭证来完成。
2)授权 - 它定义了用户在应用程序中可以执行和不可执行的操作。防爆。允许“修改订单”,但不允许“创建新订单”。
3)审核用户对应用程序的操作。 - 它跟踪用户对应用程序的操作,以及谁已授予哪些用户访问权限?
这是RBAC系统非常基本的顶视图。
RBAC系统的基本结构可以包含以下组件: 用户,角色,权限或限制,资源。
除此之外,如果要支持复杂方案,还可以拥有用户集合 - 称为 - 组,并且可以将角色分配给组。 所以,这是关于RBAC结构的非常基本的信息。
答案 9 :(得分:-1)
尝试https://github.com/ThoughtWorksStudios/piece,它是您管理基于用户角色的访问控制的规则引擎:
您可以在此处找到完整的Rails应用程序示例:https://github.com/xli/piece-blog