Azure Policy 정의 denialAction 효과
denyAction
효과는 대규모 리소스에 대한 의도된 작업을 기반으로 요청을 차단하는 데 사용됩니다. 현재 유일하게 지원되는 작업은 DELETE
입니다. 이 효과 및 작업 이름은 중요한 리소스를 실수로 삭제하는 것을 방지하는 데 도움이 됩니다.
DenyAction 평가
적용 가능한 작업 이름과 대상 범위가 있는 요청 호출이 제출되면 denyAction
에서 요청을 성공할 수 없습니다. 요청은 403 (Forbidden)
으로 반환됩니다. 포털에서 Forbidden
은 정책 할당으로 인해 차단된 배포 상태로 볼 수 있습니다.
Microsoft.Authorization/policyAssignments
, Microsoft.Authorization/denyAssignments
, Microsoft.Blueprint/blueprintAssignments
, Microsoft.Resources/deploymentStacks
, Microsoft.Resources/subscriptions
및 Microsoft.Authorization/locks
는 잠금 시나리오를 방지하기 위해 모두 denyAction
적용에서 제외됩니다.
구독 삭제
정책은 구독 삭제 중에 발생하는 리소스 제거를 차단하지 않습니다.
리소스 그룹 삭제
정책은 리소스 그룹을 삭제하는 동안 denyAction
정책에 대해 위치 및 태그를 지원하는 리소스를 평가합니다. 정책 규칙에서 cascadeBehaviors
가 deny
로 설정된 정책만 리소스 그룹 삭제를 차단합니다. 정책은 위치 및 태그를 지원하지 않는 리소스의 제거나 mode:all
가 있는 정책 제거를 차단하지 않습니다.
계단식 삭제
부모 리소스를 삭제하면 해당 자식 리소스와 확장 리소스가 모두 암시적으로 삭제될 때 계단식 삭제가 발생합니다. 삭제 작업이 부모 리소스를 대상으로 하는 경우 정책은 자식 및 확장 리소스 제거를 차단하지 않습니다. 예를 들어, Microsoft.Insights/diagnosticSettings
는 Microsoft.Storage/storageaccounts
의 확장 리소스입니다. denyAction
정책이 Microsoft.Insights/diagnosticSettings
를 대상으로 하는 경우 진단 설정(자식)에 대한 삭제 호출은 실패하지만 스토리지 계정(부모)에 대한 삭제는 진단 설정(확장)을 암시적으로 삭제합니다.
이 표에서는 할당된 denyAction
정책에 적용 가능한 리소스와 DELETE
호출의 대상 범위를 고려하여 리소스가 삭제되지 않도록 보호되는지 여부를 설명합니다. 이 표의 컨텍스트에서 인덱싱된 리소스는 태그 및 위치를 지원하는 리소스이고 인덱싱되지 않은 리소스는 태그 또는 위치를 지원하지 않는 리소스입니다. 인덱스가 생성된 리소스와 인덱스가 생성되지 않은 리소스에 대한 자세한 내용을 보려면 정의 모드로 이동합니다. 자식 리소스는 다른 리소스의 컨텍스트 내에만 존재하는 리소스입니다. 예를 들어 가상 머신 확장 리소스는 부모 리소스인 가상 머신의 자식입니다.
삭제되는 엔터티 | 정책 조건에 적용 가능한 엔터티 | 수행한 작업 |
---|---|---|
리소스 | 리소스 | Protected |
구독 | 리소스 | 삭제됨 |
Resource group | 인덱싱된 리소스 | cascadeBehaviors 사용 |
Resource group | 인덱싱되지 않은 리소스 | 삭제됨 |
자식 리소스 | 부모 리소스 | 부모는 보호되고 자식은 삭제됨 |
부모 리소스 | 자식 리소스 | 삭제됨 |
DenyAction 속성
denyAction
효과의 details
속성에는 작업과 동작을 정의하는 모든 하위 속성이 있습니다.
actionNames
(필수)- 실행할 수 없는 작업을 지정하는 배열입니다.
- 지원되는 작업 이름은
delete
입니다.
cascadeBehaviors
(선택 사항)- 리소스 그룹이 제거될 때 리소스가 암시적으로 삭제될 때 따라야 할 동작을 정의하는 개체입니다.
- 모드가
indexed
로 설정된 정책 정의에서만 지원됩니다. - 허용되는 값은
allow
또는deny
입니다. - 기본값은
deny
여야 합니다.
DenyAction 예제
예: prod와 동일한 태그 환경이 있는 데이터베이스 계정을 대상으로 하는 모든 삭제 호출을 거부합니다. 연계 동작은 deny로 설정되었으므로 해당 데이터베이스 계정이 있는 리소스 그룹을 대상으로 하는 모든 DELETE
호출을 차단합니다.
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.DocumentDb/accounts"
},
{
"field": "tags.environment",
"equals": "prod"
}
]
},
"then": {
"effect": "denyAction",
"details": {
"actionNames": [
"delete"
],
"cascadeBehaviors": {
"resourceGroup": "deny"
}
}
}
}
다음 단계
- Azure Policy 샘플에서 예제를 검토합니다.
- Azure Policy 정의 구조를 검토합니다.
- 프로그래밍 방식으로 정책을 만드는 방법을 이해합니다.
- 규정 준수 데이터를 가져오는 방법을 알아봅니다.
- 규정 비준수 리소스를 수정하는 방법을 알아봅니다.
- Azure 관리 그룹을 검토합니다.