【发布时间】:2017-09-21 16:50:27
【问题描述】:
在我的设计中,我想使用 DocumentDB 作为我的多租户 SAAS 应用程序的后端。 由于每个租户的数据可能 > 10gb,我想使用每个租户模型的集合。 要求是如何确保我的应用程序中的数据隔离。租户 1 应该无法在代码和 Azure 门户上查看租户 2 数据。如何为相同的集合设置权限?
【问题讨论】:
标签: collections user-permissions azure-cosmosdb
在我的设计中,我想使用 DocumentDB 作为我的多租户 SAAS 应用程序的后端。 由于每个租户的数据可能 > 10gb,我想使用每个租户模型的集合。 要求是如何确保我的应用程序中的数据隔离。租户 1 应该无法在代码和 Azure 门户上查看租户 2 数据。如何为相同的集合设置权限?
【问题讨论】:
标签: collections user-permissions azure-cosmosdb
我想为每个租户模型使用一个集合
您可以尝试create DocumentDB users for each tenant and associate the permissions with the user 来控制用户对集合/文档的访问。
string documentCollectionlink = UriFactory.CreateDocumentCollectionUri("{database id}", "{collection id}").ToString();
string databaseLink = UriFactory.CreateDatabaseUri("{database id}").ToString();
Permission docPermission = new Permission
{
PermissionMode = PermissionMode.All,
ResourceLink = documentCollectionlink,
Id = "tenant1perm"
};
await client.CreateUserAsync(databaseLink, new User { Id = "tuser" });
docPermission = await client.CreatePermissionAsync(UriFactory.CreateUserUri("{database id}", "tuser"), docPermission);
然后你可以读取DocumentDB用户的权限并根据租户获取访问令牌,并使用令牌创建一个新的DocumentClient实例来操作资源。
var qclient = new DocumentClient(new Uri(EndpointUri), token);
【讨论】: