2016-11-08 105 views
1

由于我们计划创建多租户应用程序,因此我正在使用Azure文档数据库。Azure DocumentDB多租户应用程序中的用户

对于多租户应用程序,我的想法是创建每个承租人1个数据库用户。这为我提供了租户数据完全分离的优势:创建文档时,将向租户用户添加权限。 (读/写)这意味着查询时,数据将始终限定在当前租户的范围内。

我也玩弄每个终端用户1个DB用户。但是这给我管理文档安全带来了很多开销。当租户z中的用户x添加文档时,来自租户z的所有用户都需要更新,并为该文档提供额外的权限。这似乎是不可行的。

我的假设是否正确?或者你会为此提出另一种方法?这种方法有什么缺点吗?

回答

2

对于我们的多租户解决方案,我们选择了在所有不使用DocumentDB的控制和做所有我们的授权在中间层主要是因为我们想基于谓词和每个租户不同的那样。也就是说,您在租户级别使用DocumentDB授权功能的方法是有道理的。这将使您的租户更加确信其他租户无法看到他们的数据。

我的一个想法是,如果你有一些交叉租户功能(也许在租户分组的形式),那么它会破坏模型,所以你可能要考虑这一点。

我认为住户数百用户成千上万,但不管他们,你应该确认DocumentDB授权能力扩展到这一水平。也许监视它的DocumentDB产品经理之一可以嵌入?

+1

在DocumentDB的用户和权限功能旨在授予一组细粒度资源的直接访问数据库。从创建权限生成的资源令牌是临时的 - 与OATH令牌的行为方式类似。如果您希望授予用户对一组资源的直接访问权限,那么这非常适合您。如果您只是想为应用程序隔离租户,那么在中间层执行此操作会轻松很多。 –