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

如何通过Terraform从Azure Key Vault导入Azure Web App证书

从Azure Key Vault导入证书到Web App的Terraform配置

你提供的示例代码使用的是自动托管的App Service证书(azurerm_app_service_managed_certificate),如果要绑定存储在Azure Key Vault中的证书,需要先通过azurerm_app_service_certificate资源建立Key Vault与App Service的关联,再完成绑定。

步骤1:配置Key Vault访问权限

首先确保Web App拥有读取Key Vault证书的权限,通过访问策略实现:

# 假设你已有Key Vault和Web App资源
resource "azurerm_key_vault_access_policy" "app_service_cert_access" {
  key_vault_id = azurerm_key_vault.your_kv.id
  tenant_id    = data.azurerm_client_config.current.tenant_id
  object_id    = azurerm_app_service.your_webapp.identity[0].principal_id

  # 授予证书读取权限
  certificate_permissions = [
    "Get",
    "List",
  ]
}

步骤2:关联Key Vault中的证书到App Service

创建azurerm_app_service_certificate资源,将Key Vault中的证书导入到App Service证书存储:

resource "azurerm_app_service_certificate" "kv_imported_cert" {
  name                = "kv-imported-cert"
  resource_group_name = azurerm_resource_group.your_rg.name
  location            = azurerm_resource_group.your_rg.location

  # 指定Key Vault的ID和证书对应的Secret ID
  key_vault_id        = azurerm_key_vault.your_kv.id
  key_vault_secret_id = azurerm_key_vault_secret.your_cert_secret.id
}

步骤3:修改证书绑定配置

将原绑定代码中的certificate_id替换为上面导入的证书资源ID:

resource "azurerm_app_service_certificate_binding" "example" {
  hostname_binding_id = azurerm_app_service_custom_hostname_binding.example.id
  # 替换为Key Vault导入的证书ID
  certificate_id      = azurerm_app_service_certificate.kv_imported_cert.id
  ssl_state           = "SniEnabled"
}

关键说明

  • azurerm_app_service_certificate是Key Vault证书与App Service之间的桥梁,必须同时指定key_vault_id和key_vault_secret_id(Key Vault中证书以Secret形式存储)。
  • 必须确保Web App的托管身份(或服务主体)拥有Key Vault的证书读取权限,否则导入操作会失败。
  • 原代码中的azurerm_app_service_managed_certificate是Azure自动生成的托管证书,不适用于Key Vault中已存在的自定义证书场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:18:20