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

如何通过Terraform数据源获取Azure数据工厂(ADF)托管标识的应用程序ID

如何通过Terraform数据源获取Azure数据工厂(ADF)托管标识的应用程序ID

嗨,我完全理解你的需求——你已经能通过Terraform拿到ADF托管标识的对象ID,但想要的是应用程序ID对吧?别担心,咱们只需要多添加一个数据源就能搞定这个问题。

你当前的代码里,azurerm_data_factory数据源确实只返回托管标识的principal_id(也就是对象ID),而应用程序ID需要通过Azure AD的服务主体来获取,因为系统分配的托管标识本质上就是一个Azure AD服务主体。

下面是修改后的完整代码示例:

# 配置AzureRM provider
provider "azurerm" {
  features {}
}

# 配置AzureAD provider(需要确保你的执行账号有读取Azure AD服务主体的权限)
provider "azuread" {}

# 获取目标ADF实例的信息
data "azurerm_data_factory" "adf" {
  name                = "adf-dev-gg-we-01"
  resource_group_name = "your_resource_group_name"
}

# 通过ADF托管标识的对象ID,查找对应的Azure AD服务主体
data "azuread_service_principal" "adf_managed_identity" {
  principal_id = data.azurerm_data_factory.adf.identity[0].principal_id
}

# 输出你需要的托管标识应用程序ID
output "managed_identity_application_id" {
  value = data.azuread_service_principal.adf_managed_identity.application_id
}

简单解释一下这段代码的逻辑:

  1. 首先还是通过azurerm_data_factory数据源获取到ADF的基础信息,包括托管标识的对象ID(principal_id)。
  2. 接着使用azuread_service_principal数据源,通过刚才拿到的对象ID去匹配对应的Azure AD服务主体。
  3. 最后从服务主体数据中提取出application_id,这就是你要的托管标识应用程序ID啦。

注意事项:

  • 确保运行Terraform的账号拥有读取Azure AD服务主体的权限,不然可能会遇到权限不足的报错。
  • 如果你的ADF使用的是用户分配的托管标识,逻辑类似,只是可以直接用azurerm_user_assigned_identity数据源来获取应用程序ID,不需要通过Azure AD服务主体查询。

备注:内容来源于stack exchange,提问作者play_something_good

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 06:28:00