1

我有一个 arm,它创建了我的通知中心命名空间和中心本身。我还将证书导入 azure key-vault。是否可以在 arm 或部署 arm 之后使用此证书?

4

1 回答 1

1

是的,您可以在 ARM 模板中使用密钥保管库机密,但您只能通过两种方式这样做。Key Vault 机密在 ARM 模板中的引用方式如下:

"sslCertData": {
  "reference": {
    "keyVault": {
      "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
    },
  "secretName": "[parameters('keyVaultSslCertDataSecretName')]"
  }
}

但是,您只能在parameters.json文件中使用此引用。

使用密钥库的第一种方法是创建一个带有秘密数据参数的模板:

"sslCertData": {
  "type": "securestring"
}

然后创建一个parameters.json包含上述密钥库和机密名称引用的文件,并从命令行使用参数文件部署模板:

New-AzResourceGroupDeployment `
  -ResourceGroupName $resourceGroupName `
  -TemplateUri <The Template File URI> `
  -TemplateParameterFile <The Parameter File>

第二种方法是使用父模板或“包装器”模板,该模板将子模板部署到您要使用密钥的位置。

在父模板中,您将部署此资源:

{
  "type": "Microsoft.Resources/deployments",
  "name": "childTemplate",
  "apiVersion": "2017-06-01",
  "properties": {
    "mode": "incremental",
    "templateLink": {
    "uri": "[variables('child-template-url')]",
    "contentVersion": "1.0.0.0"
    },
    "parameters": {
      "sslCertData": {
        "reference": {
          "keyVault": {
            "id": "[resourceId(parameters('keyVaultSubscriptionId'),  parameters('keyVaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
          },
          "secretName": "[parameters('keyVaultSslCertDataSecretName')]"
        }
      }
    }
  }
}

传入子模板的参数用于构造参数文件。因此,就像在第一种方法中一样,我们使用模板文件和参数文件来访问密钥库机密,但我们可以从门户而不是命令行部署它。

于 2019-09-26T23:57:24.240 回答