最佳angular色访问控制(RBAC)数据库模型

什么是最好的数据库模式来跟踪一个Web应用程序的基于angular色的访问控制?

我正在使用Rails,但由Google链接的RBAC插件看起来没有维护(只有300次提交到SVN;最近一次是在一年前)。

这个概念足够简单,可以从头开始实施,但又复杂又重要,所以值得一试。

那么其他人如何构build和实施他们的RBAC模型呢?

根据我在这方面的基础知识,RBAC的基本angular色是:

  • 资源。
  • 权限。
  • 用户。
  • angular色(即组)。

资源 < – 要求 – >( 一个或多个权限

angular色 < – 是 – >( 一个或多个权限的集合。

用户 < – 可以有 – >( 一个或多个angular色

这种模式的表格将是:

  • 允许
  • angular色
  • 用户
  • role_permission
  • USER_ROLE

现在,如果您希望应用程序的用户能够configuration资源需要的权限,那么您可能还希望在这里包含资源。 但我从来不需要这个。 希望有所帮助。

下面是一个简单的图表来说明Amr Mostafa的出色答案

在这里输入图像说明

我恰好在这里工作在他们这边的RBAC子系统上……真是巧合。

我的模型基于系统中需要权限的不同实体的构build块,可以是查看/更新或执行操作的属性。 当然,在系统中也有不同的angular色 (可以给用户),而把整个东西放在一起的粘合剂就是访问规则 ,连接一个特定的angular色,一个特定的需要许可的实体和许可理所当然的。 访问规则可能如下所示:

rule 14: guest role + page name + read permission rule 46: approver role + add column + execute permission 

等等。 我会把ERD作为练习留给读者;-)如果你有问题,留下评论。

Yuval = 8-)

您可以使用Restful ACL Rails插件 。

我想你的问题的答案和你想要的一样深刻。 如果您碰巧考虑将angular色分组到组中,然后将组与用户联系起来是不够的。 最终,您需要为特定对象(论坛,video等)上的用户授予特定的权限。

我更接近于瓦尔的回答,我们需要的只是联系项目范围内的对象+操作+用户。 提供这个; 一个基础对象(Entity)是非常有意义的。 从实体inheritance的任何对象都可以通过这种方式轻松地与用户+操作相关联。

正如你也希望保持简单一样, 我的build议是;

  • 任何由于rbac限制而产生的对象都应该从一个基本实体派生。
  • 应该有一个与实体一一对应的angular色列表。
  • 应该有用户和angular色之间的关系列表。

为了更进一步,我还会推荐以下内容(对于自动化的rbac)

  • 我使用基于服务的访问我的对象。 那是; 我创build对象的存储库(为我做db-access),并通过服务函数访问存储库。
  • 我在每个服务function的开始处使用自定义属性。 这定义了访问该function所需的angular色。
  • 我使用User参数来访问我所有的服务函数,并且每个服务函数在执行之前都会进行angular色检查。 reflection帮助我了解我调用哪个函数,以及它具有什么样的angular色(通​​过自定义属性)
  • 我也在我的应用程序启动时运行初始化程序,并检查所有函数(及其属性),并查看是否添加了新的必需angular色。 如果有一个angular色,我刚刚添加,似乎没有在数据库上,它创build它在数据库。

但是,唉,这只是.NET可用,据我所知,Java没有自定义属性,所以目前还不可能用于Java。

我想提出一些代码示例,但我懒得这样做。 如果您对我的rbac方式有疑问, 你可以在这里问,我一定会回复。

对于.net应用程序,您应该看看像Visual Guard http://www.visual-guard.com/,以避免从头开始处理权限和angular色。;

另外对于.net,您有成员和angular色提供程序和授权与configuration处理。 http://www.odetocode.com/Articles/427.aspx

angular色需求非常适合基于angular色的身份validationfunction,并得到良好的维护。

我真的很喜欢这篇博文, http://pivotallabs.com/users/nick/blog/articles/272-access-control-permissions-in-rails

编辑:

看起来,railscasts的ryanb认为沿着相同的路线,并创build了一个称为cancan https://github.com/ryanb/cancan使用类似于pivotollabs文章的基本技术的gem。;

尝试https://github.com/ThoughtWorksStudios/piece ,它是您pipe理基于用户angular色的访问控制的规则引擎:

  1. 定义访问控制规则
  2. 结合规则来构build新的规则

您可以在这里find完整的Rails应用程序示例: https : //github.com/xli/piece-blog

RBAC简介 –

基于angular色的访问控制系统是基于组织用户的angular色限制对“某些源或应用程序或应用程序的某些function”的访问的一种方法。

在这里,限制可以通过多个权限进行,这些权限是由pipe理员创build的,用于限制访问权限,这些权限共同表示一个angular色,将分配给用户。

如果我们在RBAC中稍微深入一点,它基本上包含3个特征。

1)authentication – 它确认用户的身份。 通常通过用户帐户和密码或凭证完成。

2)授权 – 它定义了用户可以在应用程序中做什么,不能做什么。 防爆。 “修改订单”是允许的,但是“创build新订单”是不允许的。

3)审核用户对应用程序的操作。 – 跟踪用户对应用程序的操作,以及谁已授予哪些用户的访问权限?

这是RBAC系统的非常基本的顶视图。

RBAC系统的基本结构可以包含以下组件:用户,angular色,权限或限制,资源。

  • 权限或限制 – 权限表示对应用程序资源的访问。
  • angular色 – 它包含权限的集合
  • 用户 – 分配给用户的单个或多个angular色,因此最终用户通过angular色包含权限。

除此之外,如果您想要支持复杂的场景,您还可以收集用户(称为组),并将angular色分配给组。 所以,这是关于RBAC结构的非常基本的信息。

您也可以查看这篇文章的更多信息: