azure - 通过 ARM 模板创建 Azure 密钥保管库、密钥和磁盘加密集
问题描述
我想通过 ARM 模板创建 Azure 密钥库、密钥和磁盘加密集。
我知道如何通过门户执行此操作,并且我知道如何通过 ARM 模板创建密钥库、密钥和磁盘加密集,但我不明白的是 1)如何引用密钥(如如何获取keyUrl
版本号)和 2)如何授予磁盘加密集对密钥保管库的访问权限。在门户中,我通过访问密钥库并授予生成的身份访问权限来执行后者,但不确定如何通过 ARM 模板进行操作,或者是否可能这样做。
谢谢。
更新:深入研究一下我认为做第一个的方法是这样的?
"keyUrl": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', variables('keyvaultName'), variables('keyName'))).keyUriWithVersion]"
(其中保管库名称等存储在引用的变量中)。
解决方案
想出了这个问题的答案。以下代码段部署了一个密钥保管库、一个密钥、一个磁盘加密集,然后是一个访问策略,该访问策略授予磁盘加密集对密钥保管库的访问权限。
{
"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()
函数获得我需要的属性,所以只需弄清楚我需要什么,然后将它们全部放入模板中。必须从密钥保管库定义中分离出访问策略,以便我可以创建密钥保管库和磁盘加密集,然后将两者绑定在一起。
希望这可以帮助其他寻找相同的人。谢谢。
推荐阅读
- html - Bootstrap 和 Angular 未捕获的 TypeError
- c++ - 打印出浮点数的内部十六进制
- spring-boot - spring boot @Autowired 来自另一个模块的 bean
- sql-server - 输入到 SQL Server 后日期时间更改
- astronomy - 将拟合文件数据和/或标题复制到新的拟合文件中
- docker - 在 Docker 容器中启动 Windows 服务
- tsql - 操作数类型冲突:日期与 int / NOT IN 子查询不兼容
- c# - Naudio C#:如何准确地将秒表与音频播放进度同步?
- javascript - 浏览器重新加载选项卡关闭区分调用事件
- oracle - 我有运行时错误任何机构都可以检查功能以及缺少什么