我正在尝试使用 AAD 在 C# 中创建 Cosmos 数据库。
CosmosClient CreateDatabaseIfNotExistsAsync 方法抛出 Cosmos 异常
“禁止 (403);子状态:5300;请求被 Auth cosmos-eus2-01 阻止:给定请求 [POST /dbs] 无法由 AAD 令牌授权”
微软文档称“使用 Microsoft Entra 身份会阻止任何非数据操作”。 链接在这里 https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/troubleshoot-forbidden#non-data-operations-are-not-allowed
使用帐户密钥创建 CosmosClient 是此错误的唯一解决方法吗?
是的。您无法在数据平面 SDK 上使用 AAD 凭据执行管理平面操作。
正如您提供的文档链接所述,它指向 https://learn.microsoft.com/azure/cosmos-db/how-to-setup-rbac#permission-model:
您无法使用任何 Azure Cosmos DB 数据平面 SDK 通过 Microsoft Entra 身份对管理操作进行身份验证。相反,您必须通过以下选项之一使用 Azure 基于角色的访问控制
对于 .NET,它是 Azure.ResourceManager.CosmosDB