最好基于角色的访问控制(来说)数据库的模型[封闭]
-
06-07-2019 - |
题
什么是最好的数据库模式,以跟踪基于角色的访问控制一个网络应用程序?
我使用的轨道,但来说插件链接,通过Google看起来维护(只有300承诺SVN;最新的几乎是一年前)。
这个概念是简单的足以实现从头开始,但复杂和重要,这是值得的权利。
因此,如何做人的建筑师和实现他们来说的模型?
解决方案
我相当基本的知识在这一领域的基本行为者的来说是:
- 资源。
- 权限。
- 用户。
- 角色(即组)。
资源 <-需要->(一个或多) 权限.
角色 <-集合->(一个或多) 权限.
用户 <-可以->(一个或多) 角色.
表这样的模式将是:
- 权限
- 作用
- 用户
- role_permission
- user_role
现在你可能需要包括的资源,在这里以及如果你想要应用程序的用户能够配置其权限的资源需要。但是我从不需要。希望这有所帮助。
其他提示
这是一个简单的图表来说明 Amr Mostafa的出色答案
我碰巧在这里工作的RBAC子系统正在工作......真是巧合。
我的模型基于系统中需要权限的不同实体的构建块,无论是查看/更新的属性还是要执行的操作。当然,系统中也有不同的角色(可以提供给用户),将整个事物放在一起的粘合剂是访问规则,连接特定角色,特定权限需求实体和授予的权限。访问规则可能如下所示:
rule 14: guest role + page name + read permission
rule 46: approver role + add column + execute permission
等等。我会把ERD作为练习留给读者;-)如果你有问题,请发表评论。
Yuval = 8 - )
您可以使用 Restful ACL Rails插件。
我想回答你的问题去为深为你想要走。如果你想把角色组成,然后关联的团体用户不够。最终你会需要给予特定权限的用户在一个特定的对象(一个论坛、视频等)。
我更靠近尤瓦的答案,我们所需要的是相关联的项目范围内对象+行动+用户。提供这一点;一个基本目(实体)非常有意义。任何对象的继承实体可以很容易地与用户相关联+行动这种方式。
你还想让事情简单;我的建议;
- 任何物体由于来说的限制应该源自一个基本的实体。
- 应该有一个列表中的角色,这是一对一相关的一个实体。
- 应该有一个清单的用户之间的关系和角色。
拿东西进了一步,我还将建议如下(对于一个自动化来说)
- 我用基于服务的访问给我的对象。这就是;我创建respositories的对象(其数据库的访问对我来说)和我访问的仓库,通过服务职能。
- 我用一个定义属性在开始的每一服务的功能。这一定义需要作用,以访问这一职能。
- 我用的是用户的参数来访问我所有的服务职能,并且每个服务功能不作用,检查在执行本身。反射有助于我了解其功能我打电话,什么样的作用(通过自定属性)
- 我还运行一个初始化对我的应用程序的启动,和它检查的所有职能(及其属性的),并认为如果我加入一个新的需要作用。如果有一个角色我只是增加而不会出现在数据库,它创建了它在数据库。
但很可惜,这只是可用的。净,因为我知道Java没有定义属性,因此,尚不可能提供Java。
我想来一些代码的例子,但我太懒做到这一点。仍然如果你有疑问我的方式来说;你可以问问这里和我一定会答复。
角色要求非常适用于Restful Authentication,以提供基于角色的身份验证功能和维护得很好。
对于.net应用程序,您应该查看Visual Guard http://www.visual-guard。 com / 以避免必须从头开始处理权限和角色。
对于.net,您还可以使用配置处理成员资格和角色提供程序以及授权。 http://www.odetocode.com/Articles/427.aspx
尝试 https://github.com/ThoughtWorksStudios/piece ,这是一个规则引擎管理基于用户角色的访问控制:
- 定义访问控制规则
- 合并规则以构建新规则 醇>
您可以在此处找到完整的Rails应用程序示例: https://github.com/xli/piece-blog
介绍来说-
基于角色的出入控制系统的一种方法是限制访问'一些消息来源或应用程序或某些功能的应用基于角色的用户的组织。
在这里,限制可以通过多的权限,这些都是创建管理员的访问限制,这些权限集体代表的作用,这将分配给用户。
如果我们去稍微更深来说,这基本上包含3个特征。
1)验证它确认用户的身份。它通常是通过用户的帐户和密码,或凭证。
2)授权--它规定了什么样的用户可以做到和不能做一个应用程序。前。'修改为'是允许的,但'创造新秩序'并不容许的。
3)审计的用户操作上的应用。-这跟踪用户的操作应用、以及谁授予其的访问其中的用户?
这是非常基本的顶图片的来说系统。
基础结构的系统来说可以包含下列部件:用户、角色、权限或限制的资源。
- 权限或限制的权限表示访问以 应用程序的资源。
- 角色,它包含收集的权限
- 用户单个或多个角色分配给用户,所以最终用户 含有权限通过手段的作用。
此外,还可以收集有用户谓的组成和作用可以分配给群体,如果你想来支持复杂的情况。所以,这是非常基本的信息来说结构。
我非常喜欢这篇博文: https:// content。 pivotal.io/blog/access-control-permissions-in-rails
编辑:
似乎ryanb的railscasts沿着相同的路线思考并创建了一个名为cancan的宝石 https:// github。 com / ryanb / cancan 使用类似于pivotollabs帖子的基本技术。