通过Azure DevOps服务连接创建跨租户VNet对等互连报错如何解决
LinkedAuthorizationFailed: The client has permission to perform action 'Microsoft.Network/virtualNetworks/peer/action' on scope '/subscriptions//resourcegroups/RG-VNet-A/providers/Microsoft.Network/virtualNetworks/vNet01/virtualNetworkPeerings/Tenant-A-to-Tenant-B', however the current tenant '***' is not authorized to access linked subscription 'tenant A subcription ID'.
错误根因
该报错触发的核心原因是Azure DevOps流水线使用的服务主体仅完成了单个租户的权限配置,未获得对等互连涉及的另一租户下订阅的访问授权。跨租户VNet对等操作要求执行身份的服务主体在两个租户的对应订阅下都具备对等操作权限。
修复步骤
- 首先从Azure DevOps项目的「服务连接」配置页,获取当前流水线用的Azure资源管理器服务连接对应的服务主体应用ID
- 登录对等互连涉及的另一租户的Azure AD后台,将上述服务主体添加为访客用户,完成邀请验证流程
- 在租户A的目标订阅(即报错中提到的
tenant A subcription ID)的访问控制(IAM)页面,给该服务主体授予包含Microsoft.Network/virtualNetworks/peer/action权限的角色,推荐直接授予网络贡献者角色 - 同样在租户B的VNet所属订阅的访问控制(IAM)页面,给该服务主体授予对等操作所需的对应权限
- 回到Azure DevOps刷新对应服务连接的凭据,验证服务连接可正常识别两个租户下的订阅资源后,重新触发流水线运行
本地权限验证方法
可通过Azure CLI提前验证权限配置是否生效,执行如下命令登录服务主体:
az login --service-principal -u <服务主体应用ID> -p <服务主体密钥> --tenant <DevOps服务连接所属租户ID>
登录完成后分别查询两个租户下的目标VNet信息,确认可正常获取资源后再运行流水线即可避免该报错。
内容的提问来源于stack exchange,提问作者User0102
相关产品推荐
相关产品推荐

