Azure Policy 정의 auditIfNotExists 효과
auditIfNotExists
효과를 사용하면 if
조건과 일치하지만 then
조건의 details
에 지정된 속성이 없는 리소스와 관련된 리소스를 감사할 수 있습니다.
AuditIfNotExists 평가
auditIfNotExists
는 리소스 공급자가 리소스 만들기 또는 업데이트 요청을 처리하고 성공 상태 코드를 반환한 후에 실행됩니다. 관련 리소스가 없거나 ExistenceCondition
에서 정의한 리소스가 true로 평가되지 않는 경우 감사가 발생합니다. Azure Policy는 새 리소스와 업데이트된 리소스에 대해 Microsoft.Authorization/policies/audit/action
작업을 활동 로그에 추가하고 리소스를 비준수로 표시합니다. 트리거되는 경우 if
조건을 충족하는 리소스는 비호환으로 표시되는 리소스입니다.
AuditIfNotExists 속성
AuditIfNotExists 효과의 details
속성에는 일치하는 관련된 리소스를 정의하는 모든 하위 속성이 있습니다.
type
(필수)- 일치하는 관련된 리소스의 형식을 지정합니다.
type
이if
조건 리소스 아래의 리소스 종류인 경우 정책은 평가된 리소스 범위 내에서 이type
의 리소스를 쿼리합니다. 그렇지 않으면existenceScope
에 따라 평가된 리소스와 동일한 리소스 그룹 또는 구독 내의 정책 쿼리입니다.
name
(선택 사항)- 일치하는 리소스의 정확한 이름을 지정하고 정책에서 지정된 형식의 모든 리소스 대신 하나의 특정 리소스를 인출하도록 합니다.
if.field.type
및then.details.type
의 조건 값이 일치하면name
은 필수가 되며 자식 리소스의 경우[field('name')]
또는[field('fullName')]
이어야 합니다. 하지만 audit 효과를 대신 고려해야 합니다.
참고 항목
type
및 name
세그먼트를 결합하여 일반적으로 중첩된 리소스를 검색할 수 있습니다.
특정 리소스를 검색하려면 "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
및 "name": "parentResourceName/nestedResourceName"
을 사용할 수 있습니다.
중첩된 리소스의 컬렉션을 검색하기 위해 성 세그먼트 대신 ?
와일드카드 문자를 제공할 수 있습니다. 예를 들어 "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
및 "name": "parentResourceName/?"
를 지정합니다. 이는 평가된 리소스와 관련된 리소스(예: "name": "[concat(field('name'), '/?')]"
)에 액세스하도록 필드 함수와 결합해서 사용할 수 있습니다.
resourceGroupName
(선택 사항)- 다른 리소스 그룹에서 오는 관련된 리소스의 일치를 허용합니다.
type
이if
조건 리소스 아래에 있는 리소스인 경우에는 적용되지 않습니다.- 기본값은
if
조건 리소스의 리소스 그룹입니다.
existenceScope
(선택 사항)- 허용되는 값은 Subscription 및 ResourceGroup입니다.
- 일치하는 관련된 리소스를 인출할 범위를 설정합니다.
type
이if
조건 리소스 아래에 있는 리소스인 경우에는 적용되지 않습니다.- ResourceGroup이 지정된 경우
resourceGroupName
의 리소스 그룹으로 제한됩니다.resourceGroupName
이 지정되지 않은 경우 기본 동작인if
조건 리소스의 리소스 그룹으로 제한됩니다. - Subscription의 경우 관련된 리소스에 대한 전체 구독을 쿼리합니다. 할당 범위는 적절한 평가를 위해 구독 이상에서 할당 범위를 설정해야 합니다.
- 기본값은 ResourceGroup입니다.
evaluationDelay
(선택 사항)- 관련 리소스의 존재를 평가해야 하는 시기를 지정합니다. 지연은 리소스 만들기 또는 업데이트 요청의 결과인 평가에만 사용됩니다.
- 허용되는 값은
AfterProvisioning
,AfterProvisioningSuccess
,AfterProvisioningFailure
또는 0분에서 360분 사이의 ISO 8601 기간입니다. - AfterProvisioning 값은 정책 규칙의
if
조건에서 평가된 리소스의 프로비저닝 결과를 검사합니다.AfterProvisioning
은 결과에 관계없이 프로비저닝이 완료된 후 실행됩니다. 6시간 이상 걸리는 프로비전은 AfterProvisioning 평가 지연을 결정할 때 실패로 처리됩니다. - 기본값은
PT10M
(10분)입니다. - 긴 평가 지연을 지정하면 기록된 리소스의 규정 준수 상태가 다음 평가 트리거까지 업데이트되지 않을 수 있습니다.
existenceCondition
(선택 사항)- 지정되지 않은 경우
type
의 모든 관련 리소스는 효과를 충족하고 감사를 트리거하지 않습니다. if
조건에 대해 정책 규칙과 동일한 언어를 사용하지만 관련된 각 리소스에 대해 개별적으로 평가됩니다.- 일치하는 관련 리소스가 true로 평가되는 경우 효과가 충족되고 감사를 트리거하지 않습니다.
- [field()]를 사용하여
if
조건의 값과 동일한지 확인할 수 있습니다. - 예를 들어 부모 리소스(
if
조건에서)가 일치하는 관련된 리소스와 동일한 리소스 위치에 있는지 확인하는 데 사용될 수 있습니다.
- 지정되지 않은 경우
AuditIfNotExists 예제
예: 가상 머신을 평가하여 맬웨어 방지 확장이 있는지 여부를 확인한 후, 누락된 경우 감사를 수행합니다.
{
"if": {
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
"then": {
"effect": "auditIfNotExists",
"details": {
"type": "Microsoft.Compute/virtualMachines/extensions",
"existenceCondition": {
"allOf": [
{
"field": "Microsoft.Compute/virtualMachines/extensions/publisher",
"equals": "Microsoft.Azure.Security"
},
{
"field": "Microsoft.Compute/virtualMachines/extensions/type",
"equals": "IaaSAntimalware"
}
]
}
}
}
}
다음 단계
- Azure Policy 샘플에서 예제를 검토합니다.
- Azure Policy 정의 구조를 검토합니다.
- 프로그래밍 방식으로 정책을 만드는 방법을 이해합니다.
- 규정 준수 데이터를 가져오는 방법을 알아봅니다.
- 규정 비준수 리소스를 수정하는 방법을 알아봅니다.
- Azure 관리 그룹을 검토합니다.