如何在 ARM 模板中创建 Key Vault 托管存储帐户?

Posted

技术标签:

【中文标题】如何在 ARM 模板中创建 Key Vault 托管存储帐户?【英文标题】:How to create a Key Vault Managed Storage Account in an ARM template? 【发布时间】:2021-01-31 19:46:30 【问题描述】:

我有一个 ARM 模板,用于创建存储帐户和密钥保管库:

...

    "apiVersion": "2019-04-01",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "mystorageaccountname",
    "location": "canadacentral",
    "sku": 
        "name": "Standard_LRS"
    ,
    "kind": "StorageV2",
    "properties": 
        "supportsHttpsTrafficOnly": true
    

...

...


    "apiVersion": "2019-09-01",
    "type": "Microsoft.KeyVault/vaults",
    "name": "mykeyvault",
    "location": "canadacentral",
    "properties": 
        "tenantId": "[subscription().tenantId]",
        "sku": 
            "family": "A",
            "name": "standard"
        ,
        "accessPolicies": []
    

...

我想要我的Key Vault to manage the storage account。对我来说不幸的是,到目前为止我拥有的found examples 是 Powershell 脚本。

在ARM template documentation 中,我不清楚如何实现这样的事情。

问题

如何在 ARM 模板中配置密钥保管库来管理存储帐户?

【问题讨论】:

【参考方案1】:

直到某个时候,因为 ARM 模板不支持直接从它们创建 Azure KV 密钥,所以不可能做这样的事情。最近发布了一个更新,它终于可用了:


            "type": "Microsoft.KeyVault/vaults/keys",
            "name": "[concat(parameters('vaultName'), '/', parameters('keyName'))]",
            "apiVersion": "2019-09-01",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
            ],
            "properties": 
                "kty": "[parameters('keyType')]",
                "keyOps": "[parameters('keyOps')]",
                "keySize": "[if(equals(parameters('keySize'), -1), json('null'), parameters('keySize'))]",
                "curveName": "[parameters('curveName')]"
            
        

您可以在此处查看完整示例 - https://docs.microsoft.com/en-us/azure/key-vault/keys/quick-create-template?tabs=CLI。这样,您就可以引用存储帐户密钥值并将其直接放入 Azure Key Vault。您可以尝试使用该结构来做到这一点:

[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), providers('Microsoft.Storage', 'storageAccounts').apiVersions[0]).keys[0].value]

【讨论】:

以上是关于如何在 ARM 模板中创建 Key Vault 托管存储帐户?的主要内容,如果未能解决你的问题,请参考以下文章

通过 ARM 模板部署 Azure ML MSI 可在 Key Vault 上启用清除保护

在 Azure Key Vault 支持的 Databricks 中创建秘密范围失败

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

如何通过 PowerShell 或 ARM 模板在 Azure 数据资源管理器中创建表和摄取映射

如何在 ARM 模板中引用在 Azure 门户中创建的现有存储账户?

使用 ARM 模板创建 Azure Databricks 令牌