设置用户/角色管理系统 - 具有多租户

时间:2011-02-28 20:34:03

标签: .net acl access-control rbac user-roles

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

由于

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

你看过Rhino security了吗?它可能不会完全符合您的要求,但Ayende在帮助您完成安全模型方面做得非常出色。同样的发展过程,可以给你一个很好的起点。

答案 2 :(得分:2)

有关 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. 将安全管理委派给每个客户或组织内的本地用户 如下所示:
  5. 群组层次结构: 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

答案 3 :(得分:1)

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

如果您需要其他帮助,我可以提供一个MYSQL工作台文件,其中包含我们当前正在使用的实现