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

通过Azure CLI分配Azure Security Benchmark政策时参数JSON怎么写

Azure Security Benchmark 政策分配参数JSON编写规范

Azure Security Benchmark(ASB)属于Azure官方预置的政策倡议(Policy Set Definition),它的参数文件结构和单条独立政策的参数文件结构有明显区别,多数编写报错都是因为直接套用单条政策的参数格式导致的。

核心编写原则

  • 绝对不要从零手写参数结构,第一步先拉取当前环境下目标ASB倡议的原生参数骨架:执行az policy set-definition show --name ASBID,把输出结果里的parameters字段结构完整复制出来,作为你参数文件的基础。
  • 参数层级、键名必须和拉取到的原生结构完全对齐,Azure CLI对参数键的匹配是严格区分大小写、空格、特殊字符的,哪怕多打一个空格都会出现参数不识别的问题。
  • 你需要调整的单条政策效果配置,本质是修改倡议参数结构里对应到该政策的效果类参数值,不需要深入嵌套到单条政策的规则定义层级。

标准文件结构示例

调整完效果参数的JSON文件大致结构如下,所有键名请以你实际拉取的ASB定义结构为准:

{
  "parameters": {
    // 对应ASB下各政策的效果配置,可设置为AuditIfNotExist/Audit/Disabled
    "unencryptedVmAuditEffect": {
      "value": "AuditIfNotExists"
    },
    "vmSizeRestrictionEffect": {
      "value": "Audit"
    },
    "sqlTransparentDataEncryptionEffect": {
      "value": "Disabled"
    },
    // 保留ASB内置的通用必填参数,不需要自定义的情况下可以留空值,避免参数缺失报错
    "defaultLogAnalyticsWorkspace": {
      "value": {
        "location": "",
        "workspaceId": "",
        "workspaceKey": ""
      }
    }
  }
}

高频踩坑说明

  • 不要直接把单条政策的原生参数名放到顶层:ASB在封装内部嵌套的单条政策时,会把每个单条政策的参数做一层重命名,常见格式是[政策全称][参数名],比如"Allowed resource types[effect]",这类带方括号、空格的键名必须完全原样保留,不能自行简化命名。
  • 即便你把某个依赖工作区的政策效果设为Disabled,也不要删掉对应的工作区参数,否则Azure CLI会判定参数缺失导致创建失败,只需要参数值填空字符串即可兼容。
  • 参数文件里不要包含政策规则、定义范围这类非参数内容:分配层面的参数文件只需要传递键值对形式的参数值,不需要复写整个政策逻辑。

无风险校验方法

写完JSON文件后不要直接执行创建命令,可以加上--what-if参数做预校验:
az policy assignment create --what-if --name "Name" --display-name "Name" --scope /providers/Microsoft.Management/managementGroups/MyMG --policy-set-definition ASBID --params ".\my.parameters.json"
这个命令不会真正创建政策分配,只会校验参数格式、结构是否和目标政策定义匹配,根据输出的报错信息调整JSON即可,不需要反复做无效的创建尝试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 00:57:04