Azure更新服务主体作用域 新增资源组/配置订阅级访问方法
Azure服务主体权限调整操作指引
你不需要重新创建服务主体,两类需求都可以直接通过Azure CLI的角色分配命令实现,原有服务主体的密钥、ID等凭证不会发生变更。
1. 为服务主体添加第二个资源组的访问权限
你之前创建服务主体时的命令,本质是创建完服务主体后,自动在指定的第一个资源组范围为其绑定了参与者(Contributor)角色。新增第二个资源组的权限,只需要新增一条对应范围的角色分配即可,原有资源组的权限不会受影响:
- 如果已经丢失了服务主体的appId,先执行以下命令查询:
az ad sp list --display-name "MyApp" --query "[].appId" -o tsv - 执行角色分配命令,为第二个资源组授权:
az role assignment create \ --assignee <上一步查到的服务主体appId> \ --role contributor \ --scope /subscriptions/{替换为你的订阅ID}/resourceGroups/{替换为第二个资源组名称} - 执行以下命令验证权限配置,返回结果中能看到两个资源组范围的Contributor角色分配即为配置成功:
az role assignment list --assignee <服务主体appId> -o table
2. 将服务主体访问范围调整为整个订阅级别
该操作完全支持,你可以直接在订阅范围为服务主体绑定对应角色,不需要删除原有资源组级别的权限;如果不需要保留零散的资源组级权限,也可以后续手动删除:
- 执行以下命令,为服务主体授予订阅级别的Contributor权限:
az role assignment create \ --assignee <服务主体appId> \ --role contributor \ --scope /subscriptions/{替换为你的订阅ID} - (可选)如果需要清理原有资源组级别的角色分配,先查询所有现有分配的ID和对应范围:
找到scope为对应资源组的分配条目ID,执行删除命令即可:az role assignment list --assignee <服务主体appId> --query "[].{id:id, scope:scope}" -o tableaz role assignment delete --ids <要删除的角色分配ID>
注意:订阅级别的Contributor权限覆盖范围极广,允许服务主体对订阅下几乎所有资源执行管理操作,生产环境建议遵循最小权限原则评估后再配置。
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

