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