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

如何通过Terraform为Azure DevOps服务连接配置指定服务主体凭证

解决方案

方案1:创建Service Principal客户端密钥(配置最简单,通用性最高)

直接通过Terraform为已创建的应用注册生成客户端密钥即可,新增如下资源:

resource "azuread_application_password" "terraform_app_secret" {
  application_id = azuread_application.terraform_app.id
  # 可自定义密钥有效期,示例为1年
  end_date_relative = "8760h"
}

之后修改azuredevops_serviceendpoint_azurerm的credentials块即可,注意此处serviceprincipalid需要填写服务主体的客户端ID(即application_id,而非对象ID):

credentials {
  serviceprincipalid  = azuread_service_principal.terraform.application_id
  serviceprincipalkey = azuread_application_password.terraform_app_secret.value
}

方案2:使用已存储在Key Vault中的证书

首先要确认你创建的Key Vault证书已开启私钥可导出权限,Terraform执行身份对Key Vault有秘密获取权限。
首先新增数据源读取证书对应的私钥内容(Key Vault中创建证书后会自动生成一个同名的秘密存储私钥):

data "azurerm_key_vault_secret" "terraform_app_cert_key" {
  name         = azurerm_key_vault_certificate.terraform_application.name
  key_vault_id = azurerm_key_vault.terraform_key_vault.id
}

之后修改credentials块引用私钥即可:

credentials {
  serviceprincipalid  = azuread_service_principal.terraform.application_id
  serviceprincipalkey = data.azurerm_key_vault_secret.terraform_app_cert_key.value
}

注意事项

  • 两种方式获取的serviceprincipalkey都是敏感值,Terraform会默认标记为敏感,不会在控制台输出明文
  • 客户端密钥和证书都要注意有效期,避免过期导致服务端点失效
  • 禁止硬编码任何密钥、私钥内容,全部通过Terraform资源引用传递

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:18:02