求助:通过Azure DevOps实现APIM管理证书的自动化添加与续期
实现Azure DevOps自动化Key Vault证书添加至APIM及自动续期
1. 自动化将Key Vault证书添加至API Management
首先确保Azure DevOps的服务主体拥有以下权限:
- Key Vault:
Certificate Get权限(通过访问策略配置) - API Management:
Microsoft.ApiManagement/service/certificates/write权限(通过RBAC角色或自定义权限配置)
在Azure DevOps Pipeline中添加Azure CLI任务,选择目标Azure订阅后,运行以下命令完成证书导入:
# 替换为你的资源信息 KEY_VAULT_NAME="your-keyvault-name" CERT_NAME="your-certificate-name" RESOURCE_GROUP="your-resource-group" APIM_NAME="your-apim-instance-name" APIM_CERT_DISPLAY_NAME="apim-cert-display-name" # 获取Key Vault证书的完整ID(包含版本) CERT_ID=$(az keyvault certificate show --vault-name $KEY_VAULT_NAME --name $CERT_NAME --query "id" -o tsv) # 将证书关联到APIM az apim certificate create --resource-group $RESOURCE_GROUP --service-name $APIM_NAME --name $APIM_CERT_DISPLAY_NAME --key-vault-id $CERT_ID
如果需要覆盖已存在的APIM证书,添加--yes参数自动确认替换。
2. 实现证书自动续期
步骤1:配置Key Vault证书自动续期
先确保Key Vault中的证书策略已开启自动续期,运行以下CLI命令配置:
# 设置证书在生命周期80%时自动续期 az keyvault certificate update-policy --vault-name $KEY_VAULT_NAME --name $CERT_NAME --renew-at-percentage-lifetime 80 --auto-renew true
步骤2:在Azure DevOps中触发APIM证书更新
Key Vault证书续期后,APIM不会自动同步新版本,需要通过Pipeline触发更新,推荐两种方式:
方式A:定时检查更新
创建定时触发的Azure DevOps Pipeline,每周/每日运行以下脚本,对比Key Vault最新证书版本与APIM当前使用版本,不一致则更新:
# 获取Key Vault最新证书ID LATEST_CERT_ID=$(az keyvault certificate show --vault-name $KEY_VAULT_NAME --name $CERT_NAME --query "id" -o tsv) # 获取APIM当前关联的证书ID CURRENT_CERT_ID=$(az apim certificate show --resource-group $RESOURCE_GROUP --service-name $APIM_NAME --name $APIM_CERT_DISPLAY_NAME --query "keyVault.id" -o tsv) # 版本不一致时更新APIM证书 if [ "$LATEST_CERT_ID" != "$CURRENT_CERT_ID" ]; then az apim certificate create --resource-group $RESOURCE_GROUP --service-name $APIM_NAME --name $APIM_CERT_DISPLAY_NAME --key-vault-id $LATEST_CERT_ID --yes echo "APIM证书已更新至最新版本" else echo "APIM使用的已是最新证书版本" fi
方式B:事件驱动触发
通过Azure Event Grid监听Key Vault的CertificateNewVersionCreated事件,当证书续期生成新版本时,触发Azure DevOps Pipeline执行上述更新脚本。这种方式更实时,无需定时轮询。
内容的提问来源于stack exchange,提问作者PavanKumar GVVS
相关产品推荐
相关产品推荐

