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

如何通过编程方式创建Azure订阅与Azure AD租户?

编程创建Azure订阅与AD租户的实现思路

首先得明确:你说的没错,常规的ARM模板确实没法直接搞定这俩资源的创建——因为Azure AD租户属于身份管理核心服务,订阅属于计费管理服务,都不在ARM资源管理器的管辖范围内,这也是为啥UI创建订阅会跳转到其他界面的原因,它调用的是计费系统的后台API,不是ARM。

下面分两部分给你具体的实现思路:

一、Azure AD租户的编程创建

Azure AD租户的创建得靠Microsoft Graph API,这是唯一官方支持的编程方式,Terraform也是基于它封装的。

核心API与权限

  • 调用POST /directoryTenants API,请求体里指定租户的显示名称、域名前缀等参数。
  • 权限要求:必须拥有Directory.ReadWrite.All应用权限(或者全局管理员的委派权限),而且你的账号需要有创建租户的权限(普通用户默认可能没有,需要全局管理员授权)。

Terraform实现示例

如果你用Terraform,可以用azuread_tenant资源,示例代码大概是这样:

provider "azuread" {
  use_cli = true
}

resource "azuread_tenant" "example" {
  display_name     = "Example Tenant"
  initial_domain   = "exampletenant"
}

注意:执行这个的账号必须是全局管理员,而且Terraform的azuread提供者版本要足够新(v2.0+)。

二、Azure订阅的编程创建

订阅属于计费资源,得用Azure Billing API或者对应计费类型的专属API(比如EA、CSP),Terraform的azurerm_subscription资源也是基于这些API封装的。

分场景选择API

  1. Pay-As-You-Go(即用即付)订阅:
    调用Billing API的PUT /providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}/invoiceSections/{invoiceSectionName}/createSubscription接口,需要关联到已有的计费账户、账单配置文件和发票段。

  2. Enterprise Agreement(EA)订阅:
    用EA Billing API的PUT /providers/Microsoft.Billing/billingAccounts/{billingAccountName}/enrollmentAccounts/{enrollmentAccountName}/subscriptions/{subscriptionName}接口,需要EA账户的所有者权限。

  3. Cloud Solution Provider(CSP)订阅:
    用合作伙伴中心API(比如POST /v1/customers/{customer-id}/subscriptions),适合CSP合作伙伴为客户创建订阅。

Terraform实现示例

如果用Terraform创建EA下的订阅,示例代码如下:

provider "azurerm" {
  features {}
}

resource "azurerm_subscription" "example" {
  subscription_name     = "Example Subscription"
  billing_account_id    = "/providers/Microsoft.Billing/billingAccounts/1234567"
  enrollment_account_id = "/providers/Microsoft.Billing/billingAccounts/1234567/enrollmentAccounts/8901234"
}

这里的billing_account_id和enrollment_account_id需要从EA门户获取,执行的账号必须有EA账户的创建订阅权限。

关键注意事项

  • 权限是核心:不管用API还是Terraform,都需要对应的高权限(比如全局管理员、计费账户所有者),普通账号没法直接创建。
  • 订阅不能凭空创建:必须关联到已有的计费实体(比如EA账户、即用即付账单),因为涉及到付费逻辑。
  • UI跳转的原因:Azure Portal创建订阅时跳转到的是计费管理界面,本质是调用Billing API的前端实现,和ARM资源管理器是两个独立的系统。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:00:17