gpt4 book ai didi

azure - 如何使用 ARM 模板中没有值的 secret 来管理 Azure Key Vault?

转载 作者:行者123 更新时间:2023-12-03 02:02:42 24 4
gpt4 key购买 nike

所以我想创建一个 Azure Key Vault 来管理和版本化我的 secret ,所有这些都在一个地方。我使用arm模板来部署我的所有资源,并编写了一个这样的资源:

 {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"keyVaultName": {
"type": "string",
"defaultValue": "mykeyvaultname",
"metadata": {
"description": "The name of the Key Vault to create."
}
},
"secret1Name": {
"type": "string",
"defaultValue": "secret1Name",
"metadata": {
"description": "The name of the first secret to create."
}
},
"secret1Value": {
"type": "securestring",
"defaultValue": "xxx",
"metadata": {
"description": "The value of the first secret."
}
},
"secret2Name": {
"type": "string",
"defaultValue": "secret2Name",
"metadata": {
"description": "The name of the second secret to create."
}
},
"secret2Value": {
"type": "securestring",
"defaultValue": "xxx",
"metadata": {
"description": "The value of the second secret."
}
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2019-09-01",
"name": "[parameters('keyVaultName')]",
"location": "[resourceGroup().location]",
"properties": {
"sku": {
"family": "A",
"name": "standard"
},
"tenantId": "[subscription().tenantId]",
"accessPolicies": []
},
"resources": [
{
"type": "secrets",
"apiVersion": "2019-09-01",
"name": "[concat(parameters('keyVaultName'), '/', parameters('secret1Name'))]",
"location": "[resourceGroup().location]",
"properties": {
"value": "[parameters('secret1Value')]"
}
},
{
"type": "secrets",
"apiVersion": "2019-09-01",
"name": "[concat(parameters('keyVaultName'), '/', parameters('secret2Name'))]",
"location": "[resourceGroup().location]",
"properties": {
"value": "[parameters('secret2Value')]"
}
}
]
}
],
"outputs": {}
}

期望

我的 key 保管库与我的 secret 一起部署,但没有值。然后,我将能够在我的 Vault 门户中或通过 cli 手动指定值,从而不必在 Arm 模板中指定我的 secret 。

现实看来你不能使用没有值(value)的武器来部署 secret 。对于模板来说这是强制性的。如果我设置默认虚拟值,该值将替换我的 key 保管库中的更新值。

研究我一直无法找到任何合理的解决方案。

KeyVault ARM template overrides secrets when re-deploying

这个答案建议您可以使用条件标签,这听起来像是一个糟糕的解决方法,只会为一个非常简单的用例增加更多的复杂性。

Creating an azure keyvault secret without value?

这个建议在 azure 管道变量库中定义我的 secret ,并在部署时覆盖它们,除了强制我在两个地方指定我的 secret 值之外,实际上意味着将我的 secret 放回到我的库变量中,这正是我想通过使用 azure 的 secret 来避免的事情。

在其他地方,我看到它建议使用 key 保管库中的 secret 填充我的arm模板参数,这会产生一个奇怪的问题22,我需要一个 key 保管库才能获取部署 key 保管库所需的 secret 值。

我确实无法继续。我该如何解决这个问题?

最佳答案

如果使用空值填充 keyvault 的目的是为了节省稍后手动输入它们的时间,我会引用在 Azure CLI 中使用 az keyvault Secret

这样您就可以使用arm模板进行部署,并在稍后自动填充。这是一个使用 DevOps 中的版本的简单任务。

关于azure - 如何使用 ARM 模板中没有值的 secret 来管理 Azure Key Vault?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75611932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com