如何配置Azure VM托管身份以查看并访问所有订阅及资源?
配置Azure VM托管身份以访问所有订阅及资源
核心思路
要让VM的托管身份能查看所有订阅并访问所有资源,关键是在Azure AD租户根范围为该身份分配对应的租户级角色,而非仅在单个订阅或资源组层面分配。
具体操作步骤
获取VM托管身份的对象ID
- 用Azure CLI执行:
az vm identity show --resource-group <你的资源组名称> --name <VM名称> --query principalId -o tsv - 或在Azure门户中,进入VM的「身份」选项卡,直接查看系统/用户分配身份的对象ID。
- 用Azure CLI执行:
在租户根范围分配角色
需使用拥有全局管理员或特权角色管理员权限的账号操作:- 门户操作:
- 进入Azure Active Directory,左侧菜单选择「角色和管理员」
- 搜索并选中目标角色(仅查看选「全局读取者」,需全权限操作选「所有者」)
- 点击「添加分配」,在成员列表中搜索VM托管身份的名称或对象ID,添加后保存分配。
- CLI操作:
先获取租户ID:
执行角色分配(以全局读取者为例):az account show --query tenantId -o tsv
若需全权限访问,将角色名替换为az role assignment create --assignee <VM托管身份对象ID> --role "Global Reader" --scope "/""Owner"即可。
- 门户操作:
验证权限生效
在VM上重新执行az login --identity,然后运行az account list查看是否能列出所有订阅,再尝试访问其他订阅的资源(如az vm list --subscription <目标订阅ID>)确认权限正常。
注意事项
- 租户级角色分配的权限覆盖所有订阅,需严格遵循最小权限原则,避免过度授权。
- 权限生效可能需要3-5分钟,若刚完成分配无法立即验证,稍等片刻再重试。
内容的提问来源于stack exchange,提问作者Fiona
相关产品推荐
相关产品推荐

