Azure Cosmos DB for MongoDB 中基于角色的访问控制

重要

你是否正在寻找一种数据库解决方案,以应对需要高扩展性、99.999% 可用性服务级别协议(SLA)、即时自动扩展和跨多个区域的自动故障转移的场景? 请考虑使用 Azure Cosmos DB for NoSQL

Azure Cosmos DB for MongoDB 公开了一个内置的基于角色的访问控制系统,它允许你使用精细的基于角色的权限模型授权数据请求。 用户和角色驻留在数据库中,并使用 Azure CLI、Azure PowerShell 或 Azure 资源管理器(ARM)进行管理。

核心概念

在 Azure Cosmos DB for MongoDB 中使用基于角色的访问控制之前,需要了解一组核心概念。

资源

资源是我们向其应用访问控制规则的集合或数据库。

特权

特权是在特定资源上可以执行的操作。 例如,“读取对集合 xyz 的访问权限”。特权分配给特定角色。

角色

角色具有一个或多个特权。 把角色分配给用户(一个或多个),使他们能够执行这些权限中定义的动作。 角色存储在单个数据库中。

诊断日志审核

另一个名为 userId 的列出现在 Azure 门户的诊断功能的表中。 此列显示哪个用户执行了每个数据计划操作。 如果未启用基于角色的访问控制,则此列中的值保持为空。

特权

此列表包括可用于 Azure Cosmos DB for MongoDB 中角色的所有特权。

  • 查询和写入
    • find
    • insert
    • remove
    • update
  • 变更流
    • changeStream
  • 数据库管理
    • createCollection
    • createIndex
    • dropCollection
    • killCursors
    • killAnyCursor
  • 服务器管理
    • dropDatabase
    • dropIndex
    • reIndex
  • 诊断
    • collStats
    • dbStats
    • listDatabases
    • listCollections
    • listIndexes

内置角色

这些角色已存在于每个数据库上,无需创建。

read readWrite dbAdmin dbOwner
changeStream ✅ 是 ✅ 是 ✅ 是 ✅ 是
collStats ✅ 是 ✅ 是 ✅ 是 ✅ 是
listCollections ✅ 是 ✅ 是 ✅ 是 ✅ 是
listIndexes ✅ 是 ✅ 是 ✅ 是 ✅ 是
createCollection ✖️ 不 ✅ 是 ✅ 是 ✅ 是
createIndex ✖️ 不 ✅ 是 ✅ 是 ✅ 是
dropCollection ✖️ 不 ✅ 是 ✅ 是 ✅ 是
dbStats ✖️ 不 ✖️ 不 ✅ 是 ✅ 是
dropDatabase ✖️ 不 ✖️ 不 ✅ 是 ✅ 是
reIndex ✖️ 不 ✖️ 不 ✅ 是 ✅ 是
find ✅ 是 ✅ 是 ✖️ 不 ✅ 是
killCursors ✅ 是 ✅ 是 ✖️ 不 ✅ 是
dropIndex ✖️ 不 ✅ 是 ✅ 是 ✅ 是
insert ✖️ 不 ✅ 是 ✖️ 不 ✅ 是
remove ✖️ 不 ✅ 是 ✖️ 不 ✅ 是
update ✖️ 不 ✅ 是 ✖️ 不 ✅ 是