Azure RM 模板。使用 Key Vault 密码部署副本 VM

Posted

技术标签:

【中文标题】Azure RM 模板。使用 Key Vault 密码部署副本 VM【英文标题】:Azure RM Template. Deploy copy VM with Key Vault password 【发布时间】:2017-07-01 20:06:50 【问题描述】:

我想通过将密码替换为 Key Vault 机密来自动部署可变数量的 VM(通过副本部署)。我想为不同的虚拟机使用不同的秘密(例如,用于 VM1 的秘密 1,用于 VM2 的秘密 2)。根据文档,我需要引用一个动态 id 为 https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-keyvault-parameter#reference-a-secret-with-dynamic-id 的秘密 我已经调整了文档示例以利用副本来部署我的虚拟机,但是在每次调用嵌套模板时,我都在努力将 secretName 更改为 secretName1、secretName2。我该怎么做?


    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": 
      "vaultName": 
        "type": "string"
      ,
      "secretName": 
        "type": "string"
      
    ,
    "resources": [
    
      "apiVersion": "2015-01-01",
      "name": "[concat('nestedTemplate-', copyIndex())]",
      "type": "Microsoft.Resources/deployments",
      "copy": 
        "name": "nestedTemplateLoop",
        "count": "[parameters('numberOfVMs')]"
      ,
      "properties": 
        "mode": "incremental",
        "templateLink": 
          "uri": "https://www.contoso.com/AzureTemplates/newVM.json",
          "contentVersion": "1.0.0.0"
        ,
        "parameters": 
          "adminPassword": 
            "reference": 
              "keyVault": 
                "id": "[concat(resourceGroup().id, '/providers/Microsoft.KeyVault/vaults/', parameters('vaultName'))]"
              ,
              "secretName": "[parameters('secretName')]"
            
          
        
      
    ],
    "outputs": 

【问题讨论】:

它们有何不同?例如? 我什至不知道如何在简单的 VM 上执行此操作。如果你碰巧看到一个很好的例子,请分享它。 github.com/Azure/azure-quickstart-templates/blob/master/… @4c74356b41,我浏览了您链接的模板并学会了安静一点。虽然,我的问题仍然存在,但我已将其更新为更具体。 【参考方案1】:
"secretName": [concat(parameters('secretName'), copyIndex())]

【讨论】:

纯代码答案确实是一个答案,但可能会从一些上下文/解释中受益。 没什么好解释的,这是一个很简单的表达方式,很直观 你需要解释这个表达式是如何解决问题的。它与 OP 所拥有的有什么不同? 这个答案确实解决了我在每次调用嵌套模板时更改 secretName 的问题。但是使用这种方法会出现另一个问题......因为我在嵌套模板中使用副本并将嵌套模板调用它自己可能会发生冲突。假设我想部署 2 个虚拟机,密码分别为 secret1 和 secret2。但是我的嵌套模板会做两次!使用 VM1 和 VM2 的密码“secret1”,还将尝试为两个 VM 部署密码为“secret2”的 VM1 和 VM2。我该如何克服呢? 好吧,不要在嵌套模板中创建 2 个虚拟机?只创建一个? @Max

以上是关于Azure RM 模板。使用 Key Vault 密码部署副本 VM的主要内容,如果未能解决你的问题,请参考以下文章

部署期间如何使用 Azure Key Vault 传递安全参数值?

Azure Key Vault 使用Azure Portal创建和查看Azure Key Vault

使用 Azure Key Vault 轮换机密

Azure Key Vault 机密查询

Angular - Azure Key Vault 管理 Vault 访问机密

从 Azure Functions 访问 Azure Key Vault 时访问被拒绝