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

如何在Azure ARM模板中从Key Vault安装多个版本的证书

解决方案

ARM模板本身不支持直接调用Key Vault的动态接口拉取证书全部版本,你遇到的传入版本号报错问题,是因为构造secret资源ID的方式有误,按以下方式调整即可正常引用指定历史版本:

  1. 调整certificatesToInstall变量结构,将需要部署的证书名称、对应版本号提前录入,示例如下:
"variables": {
    "certificateStore": "My",
    "certificatesToInstall": [
        // 当前版本
        {
            "certName": "your-cert-name",
            "certVersion": "当前版本哈希值"
        },
        // 上一可用版本
        {
            "certName": "your-cert-name",
            "certVersion": "历史版本哈希值"
        }
    ]
}
  1. 修改secrets配置段中certificateUrl的构造逻辑,将证书名和版本号用/拼接后作为完整的secret资源名传入resourceId函数:
"secrets": [
    {
        "sourceVault": {
            "id": "[parameters('sourceVault')]"
        },
        "copy": [
            {
                "name": "vaultCertificates",
                "count": "[length(variables('certificatesToInstall'))]",
                "input": {
                    "certificateStore": "[variables('certificateStore')]",
                    "certificateUrl": "[reference(resourceId(parameters('subscriptionId'), parameters('resourceGroupName'), 'Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), concat(variables('certificatesToInstall')[copyIndex('vaultCertificates')].certName, '/', variables('certificatesToInstall')[copyIndex('vaultCertificates')].certVersion)), '2016-10-01').secretUriWithVersion]"
                }
            }
        ]
    }
]

如果不想硬编码版本号,可在部署前通过Azure CLI/PowerShell拉取指定证书的所有可用版本,筛选出需要的版本号作为参数传入ARM模板即可。
部署前需确保执行部署操作的身份对应Key Vault的访问策略中,已开启获取证书、获取机密权限,否则会拉取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:27:02