You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求用ARM模板将现有Key Vault的publicNetworkAccess设为Disabled的方案

用ARM模板更新现有Key Vault的publicNetworkAccess为Disabled

关键要点

  • 无需引用现有资源属性:ARM模板默认采用增量部署模式,未在模板中声明的属性会保留原有配置,不需要用reference函数拉取现有访问策略、SKU等属性(该函数易引发依赖或权限问题)。
  • 必须指定核心属性:更新时需保留sku和tenantId(这两个是Key Vault的必填创建属性,更新时不指定会触发报错)。

示例ARM模板

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "现有Key Vault的名称"
      }
    },
    "keyVaultSku": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "现有Key Vault的SKU层级"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-02-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "sku": {
          "family": "A",
          "name": "[parameters('keyVaultSku')]"
        },
        "tenantId": "[subscription().tenantId]",
        "publicNetworkAccess": "Disabled"
      }
    }
  ]
}

部署命令

使用Azure CLI部署模板:

az deployment group create \
  --resource-group <你的资源组名称> \
  --template-file <模板文件路径> \
  --parameters keyVaultName=<现有KV名称> keyVaultSku=<现有KV的SKU>

常见问题说明

  • 为什么reference函数无效?
    reference函数需要在部署时访问目标Key Vault的运行时状态,若模板中同时包含资源创建/更新逻辑,易出现循环依赖;此外,部署账号若没有Key Vault的读取权限,也会导致函数调用失败。直接指定核心属性+目标更新属性,是更可靠的方案。
  • 访问策略会被重置吗?
    不会,增量部署模式下,未在模板中声明的accessPolicies会保留原有配置,无需额外处理。

内容的提问来源于stack exchange,提问作者user19145379

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:15:42