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