Share via


Azure Policy 정의 denialAction 효과

denyAction 효과는 대규모 리소스에 대한 의도된 작업을 기반으로 요청을 차단하는 데 사용됩니다. 현재 유일하게 지원되는 작업은 DELETE입니다. 이 효과 및 작업 이름은 중요한 리소스를 실수로 삭제하는 것을 방지하는 데 도움이 됩니다.

DenyAction 평가

적용 가능한 작업 이름과 대상 범위가 있는 요청 호출이 제출되면 denyAction에서 요청을 성공할 수 없습니다. 요청은 403 (Forbidden)으로 반환됩니다. 포털에서 Forbidden은 정책 할당으로 인해 차단된 배포 상태로 볼 수 있습니다.

Microsoft.Authorization/policyAssignments, Microsoft.Authorization/denyAssignments, Microsoft.Blueprint/blueprintAssignments, Microsoft.Resources/deploymentStacks, Microsoft.Resources/subscriptionsMicrosoft.Authorization/locks는 잠금 시나리오를 방지하기 위해 모두 denyAction 적용에서 제외됩니다.

구독 삭제

정책은 구독 삭제 중에 발생하는 리소스 제거를 차단하지 않습니다.

리소스 그룹 삭제

정책은 리소스 그룹을 삭제하는 동안 denyAction 정책에 대해 위치 및 태그를 지원하는 리소스를 평가합니다. 정책 규칙에서 cascadeBehaviorsdeny로 설정된 정책만 리소스 그룹 삭제를 차단합니다. 정책은 위치 및 태그를 지원하지 않는 리소스의 제거나 mode:all가 있는 정책 제거를 차단하지 않습니다.

계단식 삭제

부모 리소스를 삭제하면 해당 자식 리소스와 확장 리소스가 모두 암시적으로 삭제될 때 계단식 삭제가 발생합니다. 삭제 작업이 부모 리소스를 대상으로 하는 경우 정책은 자식 및 확장 리소스 제거를 차단하지 않습니다. 예를 들어, Microsoft.Insights/diagnosticSettingsMicrosoft.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"
      }
    }
  }
}

다음 단계