使用ARM为现有共享Key Vault添加Secrets和访问策略会覆盖原有配置吗
如何使用ARM模板为Azure现有共享Key Vault新增Secrets且不覆盖原有内容
我正在查找如何使用ARM为Azure中被其他应用共享使用的现有Key Vault添加Secrets和访问策略的相关信息,已阅读相关文档。
当前核心疑问:在自有服务的解决方案中编写新的ARM模板和参数文件,部署时是否会覆盖或删除Key Vault内已有的内容?
我已将DevOps的CICD流水线部署模式设置为*incremental(增量)*模式,仅用于资源的更新和创建。
实操验证结果
最终摸索出了正确的处理方式:先创建了一个新的Key Vault资源,添加若干Secrets和访问策略,模拟需要新增Secrets的已有共享Key Vault场景,之后编写了如下模板:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "keyVault": { "type": "string" }, "Credentials1": { "type": "secureString" }, "SecretName1": { "type": "string" }, "Credentials2": { "type": "secureString" }, "SecretName2": { "type": "string" } }, "variables": { }, "resources": [ { "type": "Microsoft.KeyVault/vaults/secrets", "name": "[concat(parameters('keyVault'), '/', parameters('SecretName1'))]", "apiVersion": "2015-06-01", "properties": { "contentType": "text/plain", "value": "[parameters('Credentials1')]" } }, { "type": "Microsoft.KeyVault/vaults/secrets", "name": "[concat(parameters('keyVault'), '/', parameters('SecretName2'))]", "apiVersion": "2015-06-01", "properties": { "contentType": "text/plain", "value": "[parameters('Credentials2')]" } } ], "outputs": {} }
经过验证结论如下:
- 要为已有共享Key Vault添加Secrets,仅需要定义
Microsoft.KeyVault/vaults/secrets子资源即可,也就是仅声明本次要新增到已有Key Vault的Secrets资源 - 该模板在增量部署模式下运行正常,除了新增指定的Secrets外,不会修改已有Key Vault的任何其他配置,也不会删除原有Secrets
- 目前该方案暂未实现全自动化,还无法自动添加对应资源的Principal ID(身份标识),但已经可以免去手动逐个添加Secrets的操作,Principal ID可暂时手动添加。
内容的提问来源于stack exchange,提问作者H4p7ic
相关产品推荐
相关产品推荐

