分配ASB计划时配置AKS策略Deny效果及多参数的问题
如何在分配Azure Security Benchmark计划时为特定策略设置Deny效果并配置全部参数
一、通过Azure门户实现
Azure门户的ASB计划分配UI默认仅暴露计划级别的公共参数,无法直接为单个策略配置全部参数或修改效果,但可以通过JSON视图手动编辑分配配置:
- 进入ASB计划的分配页面,完成基本信息(分配范围、名称、描述等)配置。
- 切换到「参数」步骤,先填写门户显示的默认参数,然后点击页面顶部的「JSON视图」按钮。
- 在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"] } } }
- 将
- 验证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
相关产品推荐
相关产品推荐

