Saas模型数据隔离

时间:2011-07-02 07:13:34

标签: security orm frameworks cloud saas

我使用symfony框架在php中写了一个应用程序。我不想在托管服务器上为客户单独安装,而是将其作为SaaS模型转移到一个安装,为所有客户运行谷歌代码或其他基于云的服务。虽然我想拥有一个好框架的好处,但我并不依赖于PHP。

所以挑战:如果所有客户都使用相同的应用程序,那么我们就可以找到隔离每个客户数据的方法。客户为eample做管理员访问权限,可以管理他们自己的用户和权限。在简单的级别,您可以在每个表中获取组织标识符,并将其添加到所有数据库操作中。然而,大多数应用程序框架都使用某种类型的ORM,而且我还没有找到一个能够在一个级别上轻松/似乎很容易实现这一点的应用程序代码。

有没有人看过这个,对这个问题有什么好的方法吗?

3 个答案:

答案 0 :(得分:1)

正如Itay所说,multi-tenant system是一个常见的要求。前段时间我正在对这个问题进行一些研究,并对处理这个问题的不同方法以及每个问题的优缺点进行了很好的介绍:http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html

此特定演示文稿针对的是Rails受众,但原则与任何语言相同。

答案 1 :(得分:0)

您描述的方法很常见,PHP(优势之一)将允许您相对轻松地进入ORM代码并根据您的需要进行修改。

第二种方法是为每个组织创建一个单独的数据库,为共享资源创建一个联合数据库 有点设计挑战(但只是一点点)。

如果你真的很大,那么你甚至需要为每个组织考虑一个单独的数据库服务器(我会说在99.99999%的情况下这是一个严重的过度杀伤)。

答案 2 :(得分:0)

这篇MSDN文章为您提供了多租户中数据架构的非常好的概述:http://msdn.microsoft.com/en-us/library/aa479086.aspx