【问题标题】:DocumentDB Permissions on CollectionsDocumentDB 对集合的权限
【发布时间】:2017-09-21 16:50:27
【问题描述】:

在我的设计中,我想使用 DocumentDB 作为我的多租户 SAAS 应用程序的后端。 由于每个租户的数据可能 > 10gb,我想使用每个租户模型的集合。 要求是如何确保我的应用程序中的数据隔离。租户 1 应该无法在代码和 Azure 门户上查看租户 2 数据。如何为相同的集合设置权限?

【问题讨论】:

    标签: collections user-permissions azure-cosmosdb


    【解决方案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);
    

    【讨论】:

    • 感谢您的帮助。我还可以对集合拥有一组用户或基于角色的权限吗?
    • 据我所知,Azure DocumentDB 中没有 groupsroles 概念。正如我在回复中提到的,为了在您的应用程序中实现 多租户,您可以在 DocumentDB 中创建与您的实际用户或应用程序租户相对应的用户。请查看this link 了解有关 DocumentDB 用户的更多信息。
    • 有什么更新吗?如果回复对您解决问题有帮助,请标记为回答,方便其他人快速找到答案,解决类似问题。
    • 感谢您的更新。必须在 DocumentDB 中创建用户或角色。对于集合,我们无法创建用户并保留该信息。但是可以通过从同一集合中读取用户和权限信息来形成查询,该集合具有包含用户和权限的文档,并使用 User 和 Permission 类为实际数据创建查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    相关资源
    最近更新 更多