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

分配ASB计划时配置AKS策略Deny效果及多参数的问题

如何在分配Azure Security Benchmark计划时为特定策略设置Deny效果并配置全部参数

一、通过Azure门户实现

Azure门户的ASB计划分配UI默认仅暴露计划级别的公共参数,无法直接为单个策略配置全部参数或修改效果,但可以通过JSON视图手动编辑分配配置:

  1. 进入ASB计划的分配页面,完成基本信息(分配范围、名称、描述等)配置。
  2. 切换到「参数」步骤,先填写门户显示的默认参数,然后点击页面顶部的「JSON视图」按钮。
  3. 在JSON编辑器中,找到对应策略(ID:423dd1ba-798e-40e4-9c4d-b6902674b423)的policyDefinitions条目,修改以下内容:
    • 将effect字段的值从默认(如Audit)改为"Deny"
    • 添加parameters字段,填入labelSelector、namespace等需要配置的参数值,示例片段:
      {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/423dd1ba-798e-40e4-9c4d-b6902674b423",
        "effect": "Deny",
        "parameters": {
          "labelSelector": {
            "value": "app=backend"
          },
          "namespace": {
            "value": "prod"
          },
          "excludedNamespaces": {
            "value": ["kube-system", "kube-public"]
          }
        }
      }
      
  4. 验证JSON格式无误后,点击「保存」,继续完成后续分配步骤即可。

二、通过自动化代码实现

如果门户的JSON编辑方式不够灵活,可使用Azure CLI、PowerShell或ARM模板批量配置:

1. Azure CLI

创建自定义参数JSON文件(例如asb-custom-params.json):

{
  "policyDefinitions": [
    {
      "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/423dd1ba-798e-40e4-9c4d-b6902674b423",
      "effect": "Deny",
      "parameters": {
        "labelSelector": {"value": "env=production"},
        "namespace": {"value": "default"},
        "excludedNamespaces": {"value": ["kube-system"]}
      }
    }
  ]
}

执行分配命令:

az policy assignment create \
  --name "ASB-Custom-Deny-Assignment" \
  --scope "/subscriptions/6568e31a-1543-434f-9e1d-190387fecd0a" \
  --policy-set-definition "/providers/Microsoft.Authorization/policySetDefinitions/1f3afdf9-d0c9-4c3d-847f-89da613e70a8" \
  --params @asb-custom-params.json

2. PowerShell

使用相同的参数JSON文件,执行以下命令:

$policyParams = Get-Content -Path "asb-custom-params.json" | ConvertFrom-Json

New-AzPolicyAssignment -Name "ASB-Custom-Deny-Assignment" `
  -Scope "/subscriptions/6568e31a-1543-434f-9e1d-190387fecd0a" `
  -PolicySetDefinitionId "/providers/Microsoft.Authorization/policySetDefinitions/1f3afdf9-d0c9-4c3d-847f-89da613e70a8" `
  -PolicyParameterObject $policyParams

3. ARM模板

创建ARM模板文件(例如asb-assignment.json):

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Authorization/policyAssignments",
      "apiVersion": "2022-06-01",
      "name": "ASB-Custom-Deny-Assignment",
      "properties": {
        "policyDefinitionId": "/providers/Microsoft.Authorization/policySetDefinitions/1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
        "scope": "[subscription().id]",
        "policyDefinitionReferenceIds": [
          "423dd1ba-798e-40e4-9c4d-b6902674b423"
        ],
        "overrides": [
          {
            "value": "Deny",
            "selectors": [
              {
                "match": "policyDefinitionId",
                "values": ["/providers/Microsoft.Authorization/policyDefinitions/423dd1ba-798e-40e4-9c4d-b6902674b423"]
              }
            ]
          }
        ],
        "parameters": {
          "423dd1ba-798e-40e4-9c4d-b6902674b423_labelSelector": {
            "value": "env=production"
          },
          "423dd1ba-798e-40e4-9c4d-b6902674b423_namespace": {
            "value": "default"
          }
        }
      }
    }
  ]
}

通过Azure CLI部署模板:

az deployment sub create \
  --name "ASB-Assignment-Deployment" \
  --location "eastus" \
  --template-file "asb-assignment.json"

注意事项

  • 确保参数名称与目标策略定义中的参数完全匹配(可通过策略定义页面查看参数列表)。
  • 所有修改需符合Azure Policy的语法规范,避免JSON格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:50:27