DocumentDB 对集合的权限
DocumentDB Permissions on Collections
在我的设计中,我想使用 DocumentDB 作为我的多租户 SAAS 应用程序的后端。
由于每个租户的数据可以> 10gb,我想使用每个租户模型的集合。
要求是如何确保我的应用程序中的数据隔离。租户 1 不应在代码中和 Azure 门户上看到租户 2 的数据。我如何设置集合的权限?
I want to use a collection per tenant model
您可以尝试 create DocumentDB users for each tenant and associate the permissions with the user 来控制用户对 collection/documents 的访问。
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);
在我的设计中,我想使用 DocumentDB 作为我的多租户 SAAS 应用程序的后端。 由于每个租户的数据可以> 10gb,我想使用每个租户模型的集合。 要求是如何确保我的应用程序中的数据隔离。租户 1 不应在代码中和 Azure 门户上看到租户 2 的数据。我如何设置集合的权限?
I want to use a collection per tenant model
您可以尝试 create DocumentDB users for each tenant and associate the permissions with the user 来控制用户对 collection/documents 的访问。
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);