共用方式為


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 邏輯運算子會將別名「陣列」屬性的三個不同條件評估分組:directionaccessdestinationPortRange
  • 此範例中的 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
}

下一步