You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为其他Azure租户的service principal授予本租户VNET访问权限

Azure跨租户Service Principal VNET权限配置操作指引

操作前提

你需要持有TenantA的全局管理员/用户访问管理员角色,同时拥有TenantA内中央VNET所属订阅的所有者或用户访问管理员权限。

操作步骤

步骤1:将TenantB的Service Principal注册到TenantA目录

  1. 切换Azure操作上下文到TenantA目录,打开Azure Cloud Shell,执行以下任一命令完成SP注册:
    • PowerShell命令:
      New-AzADServicePrincipal -ApplicationId <替换为TenantB SP的应用(客户端)ID>
    • Azure CLI命令:
      az ad sp create --id <替换为TenantB SP的应用(客户端)ID>
  2. 命令执行完成后,可在TenantA的Azure AD「企业应用程序」列表中搜索到该SP,确认注册成功。

步骤2:为TenantB的SP授予TenantA中央VNET的对应权限

  1. 进入TenantA的中央VNET资源详情页,点击左侧菜单「访问控制(IAM)」→「添加」→「添加角色分配」
  2. 角色选择页勾选「网络贡献者」(如需最小权限可自定义包含Microsoft.Network/virtualNetworks/peer/action和VNET读权限的自定义角色),点击「下一步」
  3. 分配对象选择「用户、组或服务主体」,点击「选择成员」,搜索刚才注册的TenantB SP的名称并选中,点击「下一步」→「审查+分配」完成授权
  4. 权限最长需要15分钟生效,建议等待5分钟后再做权限验证

步骤3:适配Terraform脚本支持跨租户部署

在原有Terraform配置中新增TenantA的专属azurerm provider实例,示例配置如下:

# 主Provider,用于在TenantB部署业务资源
provider "azurerm" {
  tenant_id       = "<TenantB租户ID>"
  client_id       = "<TenantB SP客户端ID>"
  client_secret   = "<TenantB SP客户端密钥>"
  subscription_id = "<TenantB目标订阅ID>"
  features {}
}

# 别名Provider,用于操作TenantA的中央VNET资源
provider "azurerm" {
  alias           = "tenant_a"
  tenant_id       = "<TenantA租户ID>"
  client_id       = "<TenantB SP客户端ID>"
  client_secret   = "<TenantB SP客户端密钥>"
  subscription_id = "<TenantA中央VNET所属订阅ID>"
  features {}
}

后续调整VNET peering资源配置,分别关联两个Provider创建双向 peering 即可。

权限验证方法

本地使用TenantB的SP身份执行命令登录TenantA:
az login --service-principal -u <TenantB SP客户端ID> -p <TenantB SP客户端密钥> --tenant <TenantA租户ID>
登录成功后尝试查询TenantA中央VNET信息、执行peering创建测试,确认操作可正常执行即代表权限配置生效。

注意:不要在Terraform脚本中硬编码SP密钥等敏感信息,可通过Jenkins环境变量传递对应参数,避免敏感信息泄露。

内容的提问来源于stack exchange,提问作者chitender kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:06:05