如何从Azure权限错误定位并在UI中添加App Registration所需权限
问题解答
1. Microsoft.Compute/virtualMachines/read权限对应的Azure UI类别
这个权限属于**计算(Compute)**资源提供商范畴,分两种场景对应不同UI路径:
- 如果是通过RBAC(访问控制)给服务主体分配资源级权限(你的场景需要的是这个):
进入VM所在的资源组/订阅的「访问控制(IAM)」页面,添加角色分配时,可直接搜索包含该权限的内置角色(比如「虚拟机参与者」「虚拟机读者」);或者创建自定义角色时,在「权限」搜索框输入Microsoft.Compute,展开后找到「虚拟机 - 读取」子权限。 - 如果是在App Registration中配置ARM API访问权限:
进入目标应用注册的「API权限」页面,点击「添加权限」→ 选择「Azure Service Management」→ 切换到「应用权限」,展开「计算」分类,就能找到对应「读取虚拟机」的权限项。
2. 从权限路径快速定位添加权限的通用方法
Azure UI方式
- 拆分权限路径:从
Microsoft.Compute/virtualMachines/read中提取资源提供商Microsoft.Compute和具体操作virtualMachines/read。 - RBAC权限分配(推荐用于资源操作场景):
- 进入目标资源(VM/资源组/订阅)的「访问控制(IAM)」→「添加角色分配」。
- 若用内置角色:在「角色」搜索框输入关键词(比如“虚拟机 读取”),找到匹配的角色后选择,再指定你的服务主体完成分配。
- 若需精准单个权限:选择「自定义角色」→「创建」,在「权限」步骤搜索
Microsoft.Compute,勾选对应virtualMachines/read权限,设置可分配范围后保存,再分配给服务主体。
- App Registration API权限配置:
- 进入应用注册的「API权限」→「添加权限」→ 选择「Azure Service Management」,在「应用权限」中按资源提供商分类找到对应权限,添加后点击「授予管理员同意」。
编程方式(以Azure CLI为例)
- 获取服务主体的Object ID:
az ad sp show --id <你的应用注册客户端ID> --query id -o tsv
- 创建包含目标权限的自定义角色(可选,若已有匹配内置角色可跳过):
az role definition create --role-definition '{ "Name": "VM只读访问角色", "Description": "仅允许读取虚拟机资源", "Actions": ["Microsoft.Compute/virtualMachines/read"], "AssignableScopes": ["/subscriptions/<你的订阅ID>"] }'
- 给服务主体分配角色:
az role assignment create --assignee <服务主体Object ID> --role "VM只读访问角色" --resource-group <你的资源组名称>
内容的提问来源于stack exchange,提问作者Dave R
相关产品推荐
相关产品推荐

