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

通过Bicep实现从Azure Key Vault向Azure容器环境导入证书

实现方案:通过Bicep+部署脚本自动同步Key Vault证书到Azure容器环境

前提条件

  • 部署身份(用户或服务主体)需具备:
    • Key Vault的CertificatePermissions:Get权限(用于读取PFX证书)
    • Azure容器环境的Microsoft.App/managedEnvironments/certificates/write权限(用于创建/更新证书)
  • Key Vault中存储的证书必须是带私钥的PFX格式,且设置了密码

具体实现代码

1. 参数与现有资源引用

先定义必要参数,并引用已存在的Key Vault和容器环境:

param location string = resourceGroup().location
param keyVaultName string
param certificateNameInKV string // Key Vault中PFX证书的名称
param containerEnvName string
param certificatePassword string // Key Vault证书设置的密码
param certificateNameInEnv string = 'ta-cert'

// 引用现有Key Vault
resource keyVault 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
  name: keyVaultName
}

// 引用现有Azure容器环境
resource containerEnv 'Microsoft.App/managedEnvironments@2022-06-01-preview' existing = {
  name: containerEnvName
}

2. 部署脚本实现自动同步

通过部署脚本执行PowerShell命令,完成证书下载、Base64转换,再同步到容器环境:

resource syncCertificateScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'SyncKVToContainerEnvCert'
  location: location
  kind: 'AzurePowerShell'
  properties: {
    azPowerShellVersion: '9.7'
    scriptContent: '''
      # 从Key Vault获取PFX证书的密文并转换为字节数组
      $certSecret = Get-AzKeyVaultSecret -VaultName $args[0] -Name $args[1]
      $certBytes = $certSecret.SecretValue | ConvertFrom-SecureString -AsPlainText | ConvertFrom-Base64String

      # 将证书字节转换为容器环境要求的Base64格式
      $base64Cert = [Convert]::ToBase64String($certBytes)

      # 创建或更新容器环境中的证书
      az containerapp env certificate create `
        --name $args[4] `
        --environment $args[2] `
        --resource-group $env:RESOURCE_GROUP_NAME `
        --password $args[3] `
        --value $base64Cert
    '''
    arguments: concat(keyVaultName, ' ', certificateNameInKV, ' ', containerEnvName, ' ', certificatePassword, ' ', certificateNameInEnv)
    cleanupPreference: 'OnSuccess' // 部署成功后自动清理脚本资源
    timeout: 'PT30M'
    dependsOn: [
      containerEnv
      keyVault
    ]
  }
}

关键说明

  • 部署脚本会在Bicep部署流程中自动执行,完全替代手动转换Base64的步骤
  • 当Key Vault中的证书更新后,重新部署该Bicep文件即可完成容器环境证书的同步更新
  • 需确保certificatePassword与Key Vault存储PFX证书时设置的密码完全一致,否则容器环境无法正常导入证书

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:15:29