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 연산자의 핵심 구성 요소는 필드, where 및 조건입니다. 각각은 다음 코드 조각에서 강조 표시됩니다.
- 필드는 멤버를 평가하는 별칭 수를 알려줍니다. 여기서는 네트워크 보안 그룹의 securityRules[*] 별칭 배열을 살펴봅니다.
- 여기서 정책 언어를 사용하여 해당 조건을 충족하는 배열 멤버를 정의합니다. 이 예제에서 allOf 논리 연산자는 별칭 배열 속성의 세 가지 조건 평가(direction, access 및 destinationPortRange)를 그룹화합니다.
- 이 예제의 개수 조건은 greater입니다. 개수는 별칭 배열의 하나 이상의 멤버가 where 절과 일치하면 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 정의 구조를 검토합니다.
- 정책 효과 이해를 검토합니다.