我正在试用Azure Document DB,因为我们计划创建一个多租户应用程序。
对于多租户应用程序,我的想法是每个租户创建1个db用户。这为我提供了租户数据完全分离的优势:在创建文档时,将向租户用户添加权限。(读/写)这意味着在查询时,数据将始终局限于当前租户。
我还尝试了每个终端用户1个DB用户。但是这给我带来了很多管理文档安全性的开销。当租户z中的用户x添加文档时,租户z中的所有用户都需要更新该文档的额外权限。这似乎不可行。
我的假设正确吗?或者你会建议另一种方法吗?这种方法有什么缺点吗?
对于我们的多租户解决方案,我们选择根本不使用DocumentDB的控件,并在中间层完成所有授权,主要是因为我们希望它是基于谓词的,并且每个租户都不同。也就是说,您在租户级别使用DocumentDB的授权功能的方法是有意义的。这将为您的租户提供额外的保证,确保其他租户无法看到他们的数据。
我的一个想法是,如果你有一些跨租户功能(可能以租户组的形式),那么它会打破模型,所以你可能要考虑一下。
我假设租户有数百个,用户有数千个,但无论他们是多少,您都应该确认DocumentDB授权能力可扩展到该级别。也许监控这一点的DocumentDB产品经理可以插话?