2017-04-24 42 views
1

在我的设计中,我想将DocumentDB用作我的多租户SAAS应用程序的后端。 由于每个租户的数据可以> 10gb,我想要使用每个租户模型的集合。 需求是我如何确保我的应用程序中的数据隔离。租户1不能在代码和天蓝色门户中看到租户2的数据。我如何设置相同的集合权限?DocumentDB权限

回答

1

我想用一个集合每个租户模型

你可以尝试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); 
+0

谢谢,真的有帮助。我是否也可以拥有一组用户或基于角色的集合权限? – MiniKh

+0

据我所知,Azure DocumentDB中没有**组**和**角色**概念。正如我在我的回复中提到的,为了在您的应用程序中实施**多租户**,您可以在DocumentDB中创建与您的实际用户或应用程序租户相对应的用户。请检查[此链接](https://docs.microsoft.com/en-us/azure/documentdb/documentdb-resources#users)以了解有关DocumentDB用户的更多信息。 –

+0

有没有更新?如果回复帮助您解决问题,请将其标记为答案,这将有助于他人快速找到答案并解决类似问题。 –