无法为cosmos db分配Azure Role



我正在尝试分配一个身份一个角色来读/写cosmos db。我运行这个命令:

az role assignment create 
--assignee <sp_object_id> 
--role "00000000-0000-0000-0000-000000000002" 
--scope "/subscriptions/<subscriptionId>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<cosmos-db-name>"

这是我得到的错误:

The specified role definition with ID '00000000000000000000000000000002' does not exist.

我尝试了角色名,但没有成功。我已经尝试了GUI,但是这个角色在那里的任何地方都不可见。

如何分配这个角色?

Azure Cosmosdb上的RBAC构建类似于Azure RBAC,对数据操作有更细粒度的控制,而不是Azure资源管理。权限模型详细描述。

在使用SDK与数据平面交互的实现过程中(例如,写数据或读数据),应用程序应该提供细粒度的数据级权限。数据平面级别的权限无法从portal获得

下面的命令提供了"data contributor"container1"的权限数据库内但只有"数据读取器";在"container2"在同一个数据库

az cosmosdb sql role assignment create --account-name ${{ variables.cosmosdbAccountName }} --resource-group ${{ variables.resourceGroupName }} --role-definition-name "Cosmos DB Built-in Data Contributor" --scope "/dbs/${{ variables.cosmosdbAccountDatabaseName }}/colls/${{ variables.cosmosdbContainerOneName }}" --principal-id $(umiObjectId)
az cosmosdb sql role assignment create --account-name ${{ variables.cosmosdbAccountName }} --resource-group ${{ variables.resourceGroupName }} --role-definition-name "Cosmos DB Built-in Data Reader" --scope "/dbs/${{ variables.cosmosdbAccountDatabaseName }}/colls/${{ variables.cosmosdbContainerTwoName }}" --principal-id $(umiObjectId)

上面的例子只显示了内置的CosmosDB数据平面RBAC的用法,在每个容器中使用自定义角色进行更细粒度的访问是一种好做法。

注意:Azure CosmosDB数据容器不是Azure资源,不能通过Azure资源模型(ARM)创建。因此,该权限模型满足了授权需求,并具有许多安全优势

似乎普通的角色命令对cosmosdb不起作用,应该使用这个命令:

az cosmosdb sql role assignment create

最新更新