Ily*_*dik 2 azure azure-cli azure-cosmosdb
我正在尝试为一个身份分配一个角色来读取/写入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>"
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
The specified role definition with ID '00000000000000000000000000000002' does not exist.
Run Code Online (Sandbox Code Playgroud)
我尝试过使用角色名称,但无济于事。我已经尝试过 GUI,但这个角色在任何地方都看不到。
我该如何分配这个角色?
Azure Cosmosdb 上的 RBAC 的构建方式与 Azure RBAC 类似,其中对数据操作进行更精细的控制,而不是 Azure 资源管理。权限模型有详细描述。
在使用 SDK 与数据平面交互(例如写入数据或读取数据)的实现过程中,应为应用程序提供细粒度的数据级别权限。无法从门户授予数据平面级别权限。
以下命令提供对数据库中“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)
Run Code Online (Sandbox Code Playgroud)
同样,上面的示例仅显示内置CosmosDB 数据平面 RBAC的使用,最好在每个容器中使用自定义角色进行更细粒度的访问。
注意:Azure CosmosDB 数据容器不是 Azure 资源,这意味着不能由 Azure 资源模型 (ARM) 创建。因此,这种权限模型满足了授权需求,并具有许多安全优势
| 归档时间: |
|
| 查看次数: |
3343 次 |
| 最近记录: |