Azure 原則模式:Count 運算子
Count 運算子會評估 [*] 別名的成員。
原則定義範例
此原則定義會針對已設定為允許輸入遠端桌面通訊協定 (RDP) 流量的網路安全性群組進行稽核。
{
"properties": {
"mode": "all",
"displayName": "Audit Network Security Groups for RDP",
"description": "This policy audits NSGs with RDP ports enabled",
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.Network/networkSecurityGroups"
},
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"allOf": [{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].direction",
"equals": "Inbound"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].access",
"equals": "Allow"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].destinationPortRange",
"equals": "3389"
}
]
}
},
"greater": 0
}
]
},
"then": {
"effect": "audit"
}
}
}
}
說明
運算子的核心元件是 field、where 和條件。 下列程式碼片段中已醒目提示每個元件。
- field 會告訴 Count 應評估哪一個別名的成員。 在這裡,我們將查看網路安全性群組的 securityRules[*] 別名「陣列」。
- where 會使用原則語言定義哪些「陣列」成員符合準則。 在此範例中,allOf 邏輯運算子會將別名「陣列」屬性的三個不同條件評估分組:direction、access 和 destinationPortRange。
- 此範例中的 Count 條件為大於。 當別名「陣列」的一個或多個成員符合 where 子句時,Count 會評估為 true。
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"allOf": [{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].direction",
"equals": "Inbound"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].access",
"equals": "Allow"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].destinationPortRange",
"equals": "3389"
}
]
}
},
"greater": 0
}
下一步
- 檢閱其他模式和內建定義。
- 檢閱 Azure 原則定義結構。
- 檢閱了解原則效果。