多租户应用程序中的 Azure DocumentDB 用户

Posted

技术标签:

【中文标题】多租户应用程序中的 Azure DocumentDB 用户【英文标题】:Azure DocumentDB Users in a multi tenant application 【发布时间】:2016-11-08 14:56:32 【问题描述】:

我正在使用 Azure 文档数据库,因为我们计划创建一个多租户应用程序。

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

我还在为每个最终用户设置 1 个 DB 用户。但这给了我很多开销来管理文档的安全性。当租户 z 中的用户 x 添加文档时,租户 z 中的所有用户都需要更新该文档的额外权限。这似乎不可行。

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

【问题讨论】:

【参考方案1】:

对于我们的多租户解决方案,我们选择完全不使用 DocumentDB 的控件,而是在中间层进行所有授权,主要是因为我们希望它基于谓词并且每个租户都不同。也就是说,您在租户级别使用 DocumentDB 授权功能的方法是有意义的。这将为您的租户提供额外的保证,确保其他租户无法看到他们的数据。

我的一个想法是,如果您有一些跨租户功能(可能以租户组的形式),那么它会破坏模型,因此您可能需要考虑这一点。

我假设租户有数百人,用户有数千人,但无论他们是什么,您都应该确认 DocumentDB 授权能力可以扩展到该级别。也许监控这一点的 DocumentDB 产品经理之一可以插话?

【讨论】:

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

以上是关于多租户应用程序中的 Azure DocumentDB 用户的主要内容,如果未能解决你的问题,请参考以下文章

在没有 Office 365 订阅的情况下使用 Azure 多租户应用程序访问用户日历信息

在多租户应用程序中如何检查应用程序在 Azure 门户中注册的租户数据?

Azure Service Fabric 多租户

多租户 - Azure IoT 客户是不是应该共享一个中心?

无法登录多租户应用程序

AZure账号-订阅-租户