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 演算子のコア コンポーネントは field、where、および条件です。 以下のスニペットでは、それらが強調表示されています。
- field は、メンバーを評価する別名を count に指示します。 ここでは、ネットワーク セキュリティ グループの securityRules[*] 別名 "配列" を確認します。
- where は、ポリシー言語を使用して、条件を満たす "配列" メンバーを定義します。 この例では、allOf 論理演算子によって、別名の "配列" プロパティに対する 3 つの異なる条件での評価 (direction、access、destinationPortRange) がグループ化されています。
- この例の 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
}
次のステップ
- その他のパターンと組み込みの定義を確認します。
- 「Azure Policy の定義の構造」を確認します。
- 「Policy の効果について」を確認します。