【问题标题】:Azure ARM tempate - Key Vault with creating empty/default secretsAzure ARM 模板 - 具有创建空/默认机密的 Key Vault
【发布时间】:2022-02-25 19:43:27
【问题描述】:

我正在部署一个包含机密列表的 Azure Key Vault。为此,我使用了quickstart-template

这似乎工作正常,但有一些问题:

  1. 秘密值(在 parameters.json 中提供)在每次部署时都会被覆盖
  2. 我只想创建密钥,以便管理员用户可以为其提供值。但是从属性部分中删除值会导致错误BadRequest/An invalid value was provided for 'value'.

第二个问题注册在github,但是有没有人找到解决这个问题的方法?

【问题讨论】:

    标签: azure azure-keyvault arm-template


    【解决方案1】:

    我建议查看 API 文档,而不是模板参考(因为它很垃圾)。 Here 表示该值是必需的。

    所以这是意料之中的。这不是错误。

    话虽如此,这意味着您需要一些其他方式来管理 Azure Key Vault 中的机密

    【讨论】:

    • 感谢您将我指向 API 文档。虽然这确实不是我所希望的(我希望也有一个“创造秘密”)。
    【解决方案2】:

    如果您正在寻找管理员在以后提供密码,我建议您为管理员附加 Access Policy to the KeyVault via ARM 并在密码中包含一个虚拟值,以便他们可以在门户中更新。

    此外,如果您不是真的热衷于虚拟值或希望自动化创建/插入过程,我建议您使用 PowerShell to create and insert the secret to your Key Vault

    通过 ARM 设置机密可能如下所示:

     {
          "type": "Microsoft.KeyVault/vaults/secrets",
          "name": "[concat(variables('keyVaultName'),'/',variables('secretName'))]",
          "apiVersion": "2018-02-14",
          "properties": {
            "contentType": "text/plain",
            "value": "[parameters('secretValue')]"
          },
          "dependsOn": [
            "[resourceId('Microsoft.KeyVault/vaults',  variables('keyVaultName'))]"
          ]
        },
    

    【讨论】:

    • 虚拟值没问题,问题是在重复部署 ARM 模板时会覆盖管理员设置的值。
    • 好的,我现在更了解你了。您是否考虑过让您的管理员将这些值添加为release variables secrets?提供的链接适用于 DevOps。不确定您是如何发布代码的。基本上,一旦添加并保护它们,就需要在您的 ARM 部署的发布任务中将它们作为覆盖值引用,并最终将虚拟值替换为发布中定义的值
    • 我想过,但这对我们不起作用。它不仅是一个管理员密码,而且是一些可以随时间变化的配置值。诸如电子邮件配置之类的东西。我不喜欢在我的部署管道中设置(和维护)所有这些东西的想法。我基本上需要的是一个 KeyVault-seed-config,就像一个数据库种子。
    • 在重新阅读您的问题和 cmets 后,我更新了答案以包括如何通过 ARM 设置机密。如果参数未更改,则密钥的值不会更改(在 Key Vault 中部署了“新版本”,但它是相同的密钥,因此如果使用 get latest 它不会受到影响)。这可能会解决您的非管理员机密,并将“通过 ARM 播种”。至于管理员特定的人,除了覆盖参数、手动输入 Key Vault 或 powershell 脚本(可能是“种子脚本”)之外,不确定其他任何方式。
    • 谢谢。现在我会忍受它。一个选项可能是设置一个脚本,该脚本从 KeyVault 读取当前值并修改/覆盖“要设置的值”。这可能适用于一组固定的条目,但在我们的例子中,将定期添加秘密。现在,我们将在 keyvault 中为每个暂存环境添加秘密。
    【解决方案3】:

    这对我有用:

    az keyvault secret set --vault-name=<vault-name> --name <secret-name> --file /dev/null
    

    【讨论】:

      猜你喜欢
      • 2017-07-07
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 2017-04-24
      • 2020-11-09
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      相关资源
      最近更新 更多