当我通过数据库连接并尝试从容器中读取一些数据时,收到 403 错误,表明我的主体没有 Microsoft.DocumentDB/databaseAccounts/readMetadata 权限。
我已经浏览了 Azure 门户中的所有可用角色,但没有一个能解决问题。
由于某些绝对疯狂的原因,UI 中可用的角色不足以开始从 Cosmos 读取数据。相反,您需要分配系统中存在的特殊隐藏角色来读取或写入数据。
看这里:
https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-setup-rbac#metadata-requests
具体来说,读的角色为 00000000-0000-0000-0000-000000000001,读+写的角色为 00000000-0000-0000-0000-000000000002。同一篇文章解释了如何从 Azure Powershell 添加这些内容:
https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-setup-rbac#using-azure-powershell-1
我几乎失去了理智,试图找出为什么我无法读取自己的数据,因为我已经为我的用户提供了几种角色类型,但没有一个起作用。我不知道为什么 Azure 团队决定从 UI 中隐藏所需的角色。希望他们看到这个答案并提供一些线索。
这应该可以通过“DocumentDB Account Contributor”角色实现。
来自docs,关于这个角色:
可以管理 Azure Cosmos DB 帐户。 Azure Cosmos DB 以前称为 DocumentDB。