我想通过 ARM 模板创建 Azure 密钥保管库、密钥和磁盘加密集。
我知道如何通过门户执行此操作,并且我知道如何通过 ARM 模板创建密钥保管库、密钥和磁盘加密集,但我不明白的是 1) 如何引用密钥(如在如何获取带有版本号的 keyUrl
和 2) 如何让磁盘加密集访问密钥保管库。在门户中,我通过转到密钥保管库并授予生成的身份访问权限来执行后者,但不确定如何通过 ARM 模板或什至可能这样做。
谢谢。
更新:深入研究一下,我认为做第一个的方法是这样的?
"keyUrl": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', variables('keyvaultName'), variables('keyName'))).keyUriWithVersion]"
(其中保管库名称等存储在引用的变量中)。
答案 0 :(得分:0)
想出了这个问题的答案。以下代码段部署了一个密钥保管库、一个密钥、一个磁盘加密集,然后是一个允许磁盘加密集访问密钥保管库的访问策略。
{
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2019-09-01",
"name": "[concat(variables('keyvaultName'), '/', variables('keyName'))]",
"location": "[variables('location')]",
"tags": "[parameters('resourceTags')]",
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', variables('keyvaultName'))]"
],
"properties": {
"kty": "RSA",
"keySize": 4096
}
},
{
"type": "Microsoft.Compute/diskEncryptionSets",
"apiVersion": "2019-07-01",
"name": "[variables('diskencsetName')]",
"location": "[variables('location')]",
"tags": "[parameters('resourceTags')]",
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults/keys', variables('keyvaultName'), variables('keyName'))]"
],
"identity": {
"type": "SystemAssigned"
},
"properties": {
"activeKey": {
"sourceVault": {
"id": "[resourceId('Microsoft.KeyVault/vaults', variables('keyvaultName'))]"
},
"keyUrl": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', variables('keyvaultName'), variables('keyName')), '2019-09-01', 'Full').properties.keyUriWithVersion]"
}
}
},
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"apiVersion": "2019-09-01",
"name": "[concat(variables('keyvaultName'), '/add')]",
"dependsOn": [
"[resourceId('Microsoft.Compute/diskEncryptionSets', variables('diskencsetName'))]"
],
"properties": {
"accessPolicies": [
{
"tenantId": "[subscription().tenantId]",
"objectId": "[reference(resourceId('Microsoft.Compute/diskEncryptionSets', variables('diskencsetName')), '2019-07-01', 'Full').identity.PrincipalId]",
"permissions": {
"keys": [
"Get",
"WrapKey",
"UnwrapKey"
],
"secrets": [],
"certificates": []
}
}
]
}
},
我意识到我可以通过 reference()
函数获得我需要的属性,所以只需弄清楚我需要什么,然后将其全部放入模板中。不得不从 Key Vault 定义中分离出访问策略,以便我可以创建 Key Vault 和磁盘加密集,然后将两者结合在一起。
希望这可以帮助其他寻找相同内容的人。谢谢。