이 auditIfNotExists
효과는 if
조건과 일치하지만, details
then
조건에 지정된 속성을 가지지 않은 리소스와 관련된 리소스를 감사할 수 있도록 해줍니다.
AuditIfNotExists 평가
auditIfNotExists
는 리소스 공급자가 리소스 만들기 또는 업데이트 요청을 처리하고 성공 상태 코드를 반환한 후 실행됩니다. 관련 리소스가 없거나 정의된 ExistenceCondition
리소스가 true로 평가되지 않는 경우 감사가 발생합니다. 새 리소스 및 업데이트된 리소스의 경우 Azure Policy는 작업 로그에 작업을 추가하고 Microsoft.Authorization/policies/audit/action
리소스를 비준수로 표시합니다. 트리거되면 조건을 충족 if
하는 리소스는 비준수로 표시된 리소스입니다.
AuditIfNotExists 속성
details
AuditIfNotExists 효과의 속성에는 일치시킬 관련 리소스를 정의하는 모든 하위 속성이 있습니다.
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
(선택 사항)- 허용되는 값은 구독 및 ResourceGroup입니다.
- 일치시킬 관련 리소스를 가져올 위치의 범위를 설정합니다.
- 조건 리소스 아래에
type
있는 리소스인 경우if
적용되지 않습니다. - ResourceGroup의 경우 지정된 경우 리소스 그룹으로
resourceGroupName
제한됩니다.resourceGroupName
이(가) 지정되지 않으면, 기본 동작으로 조건 자원의 리소스 그룹if
으로 제한됩니다. - 구독의 경우 관련 리소스에 대한 전체 구독을 쿼리합니다. 할당 범위는 적절한 평가를 위해 구독 이상에서 설정해야 합니다.
- 기본값은 ResourceGroup입니다.
evaluationDelay
(선택 사항)- 관련 리소스의 존재가 평가되어야 하는 시기를 지정합니다. 지연은 리소스 만들기 또는 업데이트 요청의 결과인 평가에만 사용됩니다.
- 허용되는 값은
AfterProvisioning
AfterProvisioningSuccess
AfterProvisioningFailure
0~360분 사이의 ISO 8601 기간입니다. - AfterProvisioning 값은 정책 규칙
if
의 조건에서 평가된 리소스의 프로비전 결과를 검사합니다.AfterProvisioning
는 결과에 관계없이 프로비전이 완료된 후 실행됩니다. 6시간 이상 걸리는 프로비전은 AfterProvisioning 평가 지연을 결정할 때 실패로 처리됩니다. - 기본값은 10분입니다
PT10M
. - 긴 평가 지연을 지정하면 다음 평가 트리거까지 리소스의 기록된 준수 상태가 업데이트되지 않을 수 있습니다.
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 관리 그룹을 검토합니다.