关于集合的DocumentDB权限

时间:2017-04-24 21:03:57

标签: collections user-permissions azure-cosmosdb

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

1 个答案:

答案 0 :(得分: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);