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