具有高安全性要求的多租户网站 - 可能的配置?

时间:2012-01-12 18:25:57

标签: asp.net security iis multi-tenant

我们正在为数百个而非数千个独立租户构建一个多租户系统,具有高数据安全性要求。目前,计划是:

  • 隔离数据库(每个租户一个)
  • 网站和应用程序池(每个租户一个),以唯一标识运行,这是唯一可以访问相应数据库的标识。
  • 每个租户单独的物理目录结构

显然,推出更新需要完全自动化以保持最佳状态,可能使用MS Deploy + PowerShell脚本,并且一次部署一个租户。

我们是否在这条路线上制造维护噩梦?我们应该在这种情况下评估其他可能的配置,这可能会在不牺牲安全方面的情况下最大限度地减少管理开销吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

有几种方法可以让租户A关闭租户B的数据。

    正如您所描述的那样,
  1. Siloing - 服务租户B的机器拒绝来自专用于其他租户的机器的所有网络连接,并且具有单独的物理驱动器,日志等。这里有你担心的零日关于那些试图感染您的代码更新的网络消息和特洛伊木马,以及任何可以在孤岛中的机器之间窃听网络消息的设备。
  2. 加密所有存储的数据 - 而不是单独的计算机,您加密所有数据。通常,这仍然需要siloing数据库,但不需要文件系统或日志。您担心的零天是1,以及处理进程边界,内存缓存,文件系统监控以及影响与租户密钥库通信的任何事情。我没有多少经验,但我怀疑这是一次行政胜利。
  3. Information flow analysis - 确保每个数据都已标记。来自为租户A的请求提供服务的程序的所有请求都标记为A,并且为租户A提供服务的所有程序仅接受标记为A而不是B的消息。这可以用于深度防御。方案,因为它本身不保护存储系统。

答案 1 :(得分:1)

您所描述的确实是一种多租户方式,但如上所述,它与多租户不同。有关要考虑的因素,请参阅IBM Developerworks文章http://www.ibm.com/developerworks/cloud/library/cl-multitenantsaas/index.html?ca=drs-

  1. 请考虑您将拥有多少租户以及每个租户平均拥有多少用户。
  2. 如果您将拥有大量租户,那么您的模型可能会变得太昂贵而无法维护。一万个租户,每个都有自己的数据库,文件系统结构等,祝你好运。
  3. 成功因素,SalesForce.com,NetSuite等真正的多租户成功主要是因为它们是多租户,一个代码库,一个数据库模型等。所有租户访问一个大型系统并查看隔离数据
  4. 真正的多租户的另一种选择是虚拟化,而虚拟化如VMWare,您可以拥有自己的蛋糕并吃掉它。每个vmware映像都具有您需要的所有功能,并且可以按需实例化。您可以对代码进行一次更新,并在实例化映像时进行部署。它比你现在设想的孤岛更具成本效益,但不如真正的多租户。

答案 2 :(得分:1)

你所描述的确实是一种非常安全的做事方式,但似乎会涉及很多开销。需要考虑的一件事是如何处理登录。是否每个用户都需要指定TenantId,UserName和Password?或者您是否可能为每个租户分配一个独特的子域?

就维护而言,处理事情的最佳方法是将多个teneant塞入单个Web服务器/ Web场,并将所有数据推送到单个关系db / db群集中。这样,当您升级一个客户时,每个人都会升级。在某些时候,您将不得不购买另一个Web场/数据库集群来放置更多租户,但您会惊讶地发现1个实例可以走多远。

此规则的例外当然是Google和Facebook这样的网站,他们拥有太多的用户和太多的传统关系数据库数据。但对于95%以上的网站,我相信这种模式可以发挥作用。

就安全性而言,您可以向数据库中的每个表添加一个TenantId,并在每个查询上对其进行过滤。是的,这是非常重要的,但您描述的维护程序也不是。