2011-02-28 361 views
3

是否有任何人有任何架构,数据模型或建议来创建帐户为多租户的用户/角色管理系统。例如,组织A中的用户可能被分配到某个项目的角色,组织B中的某个应用程序。任何想法?我一直在阅读RBAC,只是寻找一个很好的例子。设置用户/角色管理系统 - 使用多租户

感谢

回答

2

你有没有看着Rhino security?它可能并不完全符合你的要求,但是Ayende在通过安全模型&开发过程中做得很好,可以给你一个很好的起点。

+0

谢谢,我已经经历了许多文章阅读,我想我已经想出了一个体面的数据模型。在Visio中构建 - 让我知道您的想法。 http://img232.imageshack.us/i/rolesystemdraft.jpg/ – 2011-03-01 19:04:06

+0

看起来很合理。我认为在你的脑海里,所有的访问都是由公司+角色分配的,没有个人权利的概念? – Paul 2011-03-01 19:07:56

1

您在.NET中,但对于PHP世界中的我们来说,Zend Framework提供了轻量级访问控制框架,使您能够构建自己的ACL实现,使您能够理解概念并在.NET中构建自己的实现。在http://framework.zend.com/manual/en/zend.acl.introduction.html

我能够给用户提供我们目前使用的,如果你需要更多的帮助实现一个MySQL工作台文件

1

摘要信息RBAC: 基于角色的访问控制系统,是限制对“一些访问的方法来源或应用程序或基于组织用户角色的应用程序的某些功能。

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

如果我们稍微深入RBAC,它基本上包含3个功能。

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

2)授权 - 它定义了用户可以在应用程序中执行和不能执行的操作。防爆。 '修改订单'是允许的,但'创建新订单'是不允许的。

3)审核用户对应用程序的操作。 - 跟踪用户对应用程序的操作,以及谁授予了哪些用户的访问权限?这是RBAC系统的非常基本的顶视图。

对于多租户应用程序,我会建议'管理组和用户'与角色和权限。

让我们举一个例子。

有针对应用程序的多个客户(承租人):

Client A – has – 100 users [Tenant A] 
Client B – has – 50 users [Tenant B] 
Client C – has – 100 users [Tenant C] 

因此,该方案会是这样,这个客户的每个客户端和用户应只允许访问应用程序的特定功能,这些客户的管理员应该只能管理他们的用户。

因此,要解决这个问题,我们可以

  1. 定义和管理组(租户)
  2. 定义和管理用户或帐户作为组的成员(租客)
  3. 限制为每个租户访问通过角色或权限申请
  4. 将安全管理授权给每个客户或组织内的本地用户
    如下所示。

组层次: Groups Hierarchy1:

其中组“客户A”和它的后代组将包含“客户A”的用户,同样为其他客户或机构。

相应地,用户将被分配到适当的组,并且角色将被分配给特定的组。

您可以查看本文 - 该文章介绍了如何通过VisualGuard提供的即用型框架来处理用户和角色管理的多租户应用程序。

http://www.visual-guard.com/EN/net-powerbuilder-application-security-authentication-permission-access-control-rbac/secure-saas-and-multi-tenant-apps-with-asp-net-or-wcf-Silverlight.php