我正在尝试为我的 Azure Web 应用程序/函数应用程序创建 Cosmos DB 的数据平面角色分配,以使用其系统分配的托管标识进行访问。
我尝试使用 Azure CLI 和 PowerShell 分配 Cosmos DB 内置数据贡献者(角色定义 ID:00000000-0000-0000-0000-000000000002):
New-AzCosmosDBSqlRoleAssignment
和
az cosmosdb sql role assignment create
第一个命令返回 RoleAssignmentId,第二个命令运行后什么也不返回。我认为两者都会成功。
但是,如果我使用我尝试分配的托管身份的 ObjectId 运行
Get-AzRoleAssignment -ObjectId
,它们不会显示。
我读到,由于这是一个数据平面角色,因此它们不会显示在 Azure 门户 UI 中。但是,在 Azure CLI/PowerShell 中运行任何“获取”角色分配命令时,它是否也不会显示?
我还尝试使用数据平面操作(如/readmetadata)创建自定义角色并分配它。但是它不会显示在任何 Get 命令中。
即使这些角色分配没有显示,它们仍然有效吗?
由于您要分配数据平面角色,因此在使用 Get-AzRoleAssignment 或来自 ARM 的类似 Get 命令时不会出现这些角色,因为这些命令正在查询控制平面角色分配。数据平面角色完全在 Cosmos DB 服务内管理,而不是由 ARM 管理,因此它们不会显示在门户 UI 中或查询基于 ARM 的角色分配时。
要验证数据平面 RBAC 分配是否成功,可以使用 az cosmosdb sql 角色分配列表命令,该命令专门查询 Cosmos DB 中的数据平面角色:
az cosmosdb sql role assignment list --account-name <cosmos-db-account> --resource-group <resource-group>
此命令将显示 Azure Cosmos DB 帐户的数据平面角色分配,包括分配给托管标识的角色分配。