Azure Policy パターン: 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"
            }
        }
    }
}

説明

count 演算子のコア コンポーネントは fieldwhere、および条件です。 以下のスニペットでは、それらが強調表示されています。

  • field は、メンバーを評価する別名を count に指示します。 ここでは、ネットワーク セキュリティ グループの securityRules[*] 別名 "配列" を確認します。
  • where は、ポリシー言語を使用して、条件を満たす "配列" メンバーを定義します。 この例では、allOf 論理演算子によって、別名の "配列" プロパティに対する 3 つの異なる条件での評価 (directionaccessdestinationPortRange) がグループ化されています。
  • この例の count の条件は、greater です。 別名 "配列" の 1 つまたは複数のメンバーが 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
}

次のステップ