azure-resource-manager - 部署中的 key 保管库值和链接的模板参数

标签 azure-resource-manager azure-service-fabric azure-keyvault azure-rm-template

我有一个模板来创建 key 保管库和其中的 secret 。我还有一个 Service Fabric 模板,它需要 key 保管库中的 3 个内容:保管库 URI、证书 URL 和证书指纹。

如果我使用 powershell 创建 key 保管库和 key ,则可以轻松地从输出中手动复制这 3 个内容,并将它们粘贴到服务结构模板的参数中。但是,由于该证书与服务结构集群具有相同的生命周期,我希望做的是从 key 保管库模板链接到服务结构模板,因此当我部署 key 保管库和 secret 时(顺便说一句,这是一个已使用 Base 64 编码为字符串的 key 。我可以将其作为另一个 key 保管库中的 secret ...),我可以将这 3 个值作为参数传递。

所以我有两个问题。

  1. 如何检索 ARM 模板中的 3 个值。 Powershell 将它们输出为 key 保管库的“ResourceId”、 secret 的“Id”和 secret 的“版本”。我的尝试:

    "sourceVaultValue": {
        "value": "resourceId('Microsoft.KeyVault/vaults/', parameters('keyVaultName')"
        },
    "certificateThumbprint": {
        "value": "[listKeys(resourceId('secrets', parameters('secretName')), '2015-06-01')"
        },
    "certificateUrlValue": { "value": "[concat('https://', parameters('keyVaultName'), '.vault.azure.net:443/secrets/', parameters('secretName'), resourceId('secrets', parameters('secretName')))]"
    

但是certificateUrlValue不正确。您可以看到我尝试过使用和不使用 listKeys,但似乎都不起作用...(指纹位于 certUrl 本身内)

  • 如果我要获得正确的值,我想尝试将它们作为参数传递给下一个模板。然而,所讨论的模板比我想传递的 3 个参数多了很多参数。那么是否可以有一个parametersLink 元素来链接到参数文件,以及一个仅用于这3 个参数的元素?或者是否有一种预期的方法可以做到这一点?
  • 干杯

    最佳答案

    好的,当你回到键盘时试试这个......

    1) 对于 uri,您可以使用如下输出:

    "secretUri": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), parameters('secretName'))).secretUri]"
    }
    

    对于#2,您不能混合和匹配链接和某些值,只能是其中之一。

    关于如何做到这一点的一些想法(这在一定程度上取决于您想要如何构建部署的其余部分)...

    • 考虑这个问题的一种方法是不要嵌套 SF,而是将它们部署在同一个模板中,因为它们具有相同的生命周期
    • 不要嵌套 SF 模板,而是嵌套 KV 模板并在 SF 模板中引用该部署的输出...
    除此之外,我想不出任何优雅的东西 - 因为您想将“动态”参数传递给嵌套部署,所以唯一的方法就是在链接后面动态写入参数文件或传递所有参数进入部署资源。

    HTH - LMK 如果没有...

    关于azure-resource-manager - 部署中的 key 保管库值和链接的模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144593/

    相关文章:

    azure - Azure Key Vault 中的 AATL 文档签名证书

    azure - 如何从Azure Key Vault读取和更新Azure Logic App的parameters.json文件中的 secret 信息

    azure - 为使用 OnPrem 数据网关的 API 连接部署 ARM 模板成功,但缺少 authType 和网关参数

    .net - 从自定义镜像创建 Azure VM

    azure - Bicep 的未知 Key Vault 访问策略

    asp.net-web-api - 如何调用部署在azure上的WEB api服务结构?

    c# - 如何将数据传递到 `OnActivateAsync()` 以初始化我的有状态 actor?

    azure - 筛选详细 Azure ARM 模板

    azure - 为什么应该使用 Service Fabric 反向代理而不是 Azure 应用程序网关与 SF 集群通信?

    c# - 在 ASP.net MVC Web 应用程序中设置 Azure KeyVault