无法为 cosmos db 分配 Azure 角色
Cannot assign Azure Role for cosmos db
我正在尝试将身份分配给 cosmos db read/write 的角色。我 运行 这个命令:
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,但是这个角色在任何地方都看不到。
如何分配这个角色?
似乎普通的角色命令对cosmosdb不起作用,应该改用这个命令:
az cosmosdb sql role assignment create
Azure Cosmosdb 上的 RBAC 构建类似于 Azure RBAC,其中对数据操作有更精细的控制,而不是 Azure 资源管理。 permission model描述的很详细
在使用 SDK 与 数据平面 交互(例如,写入数据或读取数据)的实施过程中,应为应用程序提供精细的数据级别权限。 无法从门户授予数据平面级别权限。
以下命令提供对数据库中“container1”的“数据贡献者”权限,但仅对同一数据库中的“container2”提供“数据 reader”权限
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 的用法,最好使用自定义角色在每个容器内进行更细粒度的访问。
NOTE: Azure CosmosDB data containers are not Azure Resources, meaning cannot be created by Azure Resource Model (ARM). So this permission model fulfills the authorization need with many security benefits
我正在尝试将身份分配给 cosmos db read/write 的角色。我 运行 这个命令:
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,但是这个角色在任何地方都看不到。
如何分配这个角色?
似乎普通的角色命令对cosmosdb不起作用,应该改用这个命令:
az cosmosdb sql role assignment create
Azure Cosmosdb 上的 RBAC 构建类似于 Azure RBAC,其中对数据操作有更精细的控制,而不是 Azure 资源管理。 permission model描述的很详细
在使用 SDK 与 数据平面 交互(例如,写入数据或读取数据)的实施过程中,应为应用程序提供精细的数据级别权限。 无法从门户授予数据平面级别权限。
以下命令提供对数据库中“container1”的“数据贡献者”权限,但仅对同一数据库中的“container2”提供“数据 reader”权限
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 的用法,最好使用自定义角色在每个容器内进行更细粒度的访问。
NOTE: Azure CosmosDB data containers are not Azure Resources, meaning cannot be created by Azure Resource Model (ARM). So this permission model fulfills the authorization need with many security benefits