Azure Policy 예외 구조

Azure Policy 예외 기능을 사용하여 이니셔티브나 정의 평가에서 개별 리소스나 리소스 계층 구조를 제외합니다. 제외된 리소스는 전체 규정 준수에 포함되지만, 평가하거나 임시 면제를 가질 수 없습니다. 자세한 내용은 Azure Policy의 적용 가능성 이해를 참조하세요. Azure Policy 예외는 Microsoft.Kubernetes.Data, Microsoft.KeyVault.Data 및 Microsoft.Network.Data와 같은 Resource Manager 모드에서도 작동합니다.

JSON(JavaScript Object Notation)을 사용하여 정책 예외를 만듭니다. 정책 정의에는 다음 요소가 포함됩니다.

정책 예외는 리소스 계층에서 자식 개체로 만들어지거나 개별 리소스에 예외가 부여됩니다. 리소스 공급자 모드 구성 요소 수준에서 예외를 만들 수 없습니다. 예외가 적용되는 부모 리소스가 제거되면 예외도 제거됩니다.

예를 들어 다음 JSON은 resourceShouldBeCompliantInit라는 이니셔티브 할당에 대한 리소스의 면제 범주의 정책 예외를 보여 줍니다. 리소스는 이니셔티브의 두 정책 정의, customOrgPolicy 사용자 지정 정책 정의(policyDefinitionReferenceId: requiredTags), 허용된 위치 기본 제공 정책 정의(policyDefinitionReferenceId: allowedLocations)에서만 제외됩니다.

{
    "id": "/subscriptions/{subId}/resourceGroups/ExemptRG/providers/Microsoft.Authorization/policyExemptions/resourceIsNotApplicable",
    "apiVersion": "2020-07-01-preview",
    "name": "resourceIsNotApplicable",
    "type": "Microsoft.Authorization/policyExemptions",
    "properties": {
        "displayName": "This resource is scheduled for deletion",
        "description": "This resources is planned to be deleted by end of quarter and has been granted a waiver to the policy.",
        "metadata": {
            "requestedBy": "Storage team",
            "approvedBy": "IA",
            "approvedOn": "2020-07-26T08:02:32.0000000Z",
            "ticketRef": "4baf214c-8d54-4646-be3f-eb6ec7b9bc4f"
        },
        "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
        "policyDefinitionReferenceIds": [
            "requiredTags",
            "allowedLocations"
        ],
        "exemptionCategory": "waiver",
        "expiresOn": "2020-12-31T23:59:00.0000000Z",
        "assignmentScopeValidation": "Default"
    }
}

표시 이름 및 설명

displayNamedescription을 사용하여 정책 예외를 식별하고 특정 리소스와 함께 사용하기 위한 컨텍스트를 제공합니다. displayName은 최대 길이가 128자이고 description은 최대 길이가 512자입니다.

메타데이터

메타데이터 속성을 사용하면 관련 정보를 저장하는 데 필요한 자식 속성을 만들 수 있습니다. 예제에서 requestedBy, approvedBy, approvedOn, ticketRef 속성은 예외 요청자, 승인자, 승인 시기, 요청에 대한 내부 추적 티켓 관련 정보를 제공하는 고객 값을 포함합니다. 해당 메타데이터 속성은 예제이지만 필요하지 않으며 메타데이터는 자식 속성으로 제한되지 않습니다.

정책 할당 ID

이 필드는 정책 할당 또는 이니셔티브 할당의 전체 경로 이름이어야 합니다. policyAssignmentId는 문자열이며 배열이 아닙니다. 이 속성은 부모 리소스 계층 구조 또는 개별 리소스가 제외되는 할당을 정의합니다.

정책 정의 ID

policyAssignmentId가 이니셔티브 할당용일 경우 policyDefinitionReferenceIds 속성을 사용하여 주체 리소스에 예외가 있는 이니셔티브의 정책 정의를 지정할 수 있습니다. 하나 이상 포함된 정책 정의에서 리소스가 제외될 수 있으므로 이 속성은 배열입니다. 값은 policyDefinitions.policyDefinitionReferenceId 필드에 있는 이니셔티브 정의의 값과 일치해야 합니다.

예외 범주

예외를 그룹화하는 데 사용되는 두 개의 예외 범주가 있습니다.

  • 완화됨: 정책 의도가 다른 메서드를 통해 충족되었으므로 예외가 부여됩니다.
  • 면제: 리소스의 비준수 상태가 일시적으로 수락되었으므로 예외가 부여됩니다. 이 범주를 사용하는 또 다른 이유는 이니셔티브에서 하나 이상의 정의에서 제외되어야 하지만 전체 이니셔티브에서 제외해서는 안 되는 리소스 또는 리소스 계층 구조를 위함입니다.

만료

리소스 계층 구조 또는 개별 리소스가 더 이상 할당에서 제외되지 않는 시기를 설정하려면 expiresOn 속성을 설정합니다. 이 선택적 속성은 유니버설 ISO 8601 날짜/시간 형식(yyyy-MM-ddTHH:mm:ss.fffffffZ)이어야 합니다.

참고 항목

expiresOn 날짜가 되면 정책 예외가 삭제되지 않습니다. 개체는 레코드 유지를 위해 유지되지만, 예외는 더 적용되지 않습니다.

리소스 선택기

예외는 선택적 속성 resourceSelectors를000 지원합니다. 이 속성은 할당에서와 마찬가지로 예외에서 동일한 방식으로 작동하므로 리소스 종류, 리소스 위치 또는 리소스에 위치가 있는지 여부에 따라 제어되는 방식으로 리소스의 특정 하위 집합에 대한 예외를 점진적으로 롤아웃하거나 롤백할 수 있습니다. 리소스 선택기를 사용하는 방법에 대한 자세한 내용은 할당 구조에서 찾을 수 있습니다. 다음은 리소스 선택기를 사용하는 예외 JSON의 예제입니다. 이 예제에서는 정책 할당에서 westcentralus의 리소스만 예외가 됩니다.

{
    "properties": {
        "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "resourceSelectors": [
            {
                "name": "TemporaryMitigation",
                "selectors": [
                    {
                        "kind": "resourceLocation",
                        "in": [ "westcentralus" ]
                    }
                ]
            }
        ]
    },
    "systemData": { ... },
    "id": "/subscriptions/{subId}/resourceGroups/demoCluster/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
    "type": "Microsoft.Authorization/policyExemptions",
    "name": "DemoExpensiveVM"
}

예제의 resourceLocation 목록에서 지역을 추가하거나 제거할 수 있습니다. 리소스 선택기를 사용하면 예외를 만들고 관리할 수 있는 위치와 방법을 훨씬 더 유연하게 활용할 수 있습니다.

할당 범위 유효성 검사(미리 보기)

대부분의 시나리오에서 예외 범위의 유효성을 검사하여 정책 할당 범위 이하에 있는지 확인합니다. 선택적 assignmentScopeValidation 속성을 사용하면 예외가 이 유효성 검사를 바이패스하고 할당 범위를 벗어나서 만들 수 있습니다. 이는 구독을 MG(관리 그룹)에서 다른 관리 그룹으로 이동해야 하지만 구독 내 리소스의 속성으로 인해 정책에 의해 이동이 차단되는 상황을 위한 것입니다. 이 시나리오에서는 대상 MG의 정책 할당에서 리소스를 제외하기 위해 현재 MG의 구독에 대한 예외를 만들 수 있습니다. 그러면 구독이 대상 MG로 이동되는 경우 리소스가 이미 해당 정책 할당에서 제외되어 있기 때문에 작업이 차단되지 않습니다. 이 속성은 아래 그림과 같이 사용합니다.

{
    "properties": {
        "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgB}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
        "policyDefinitionReferenceIds": [
            "limitSku", "limitType"
        ],
        "exemptionCategory": "Waiver",
        "assignmentScopeValidation": "DoNotValidate",
    },
    "systemData": { ... },
    "id": "/subscriptions/{subIdA}/providers/Microsoft.Authorization/policyExemptions/DemoExpensiveVM",
    "type": "Microsoft.Authorization/policyExemptions",
    "name": "DemoExpensiveVM"
}

assignmentScopeValidation에 허용되는 값은 DefaultDoNotValidate입니다. 지정하지 않으면 기본 유효성 검사 프로세스가 실행됩니다.

필요한 사용 권한

정책 예외 개체를 관리하는 데 필요한 Azure RBAC 권한은 Microsoft.Authorization/policyExemptions 작업 그룹에 있습니다. 기본 제공 역할 리소스 정책 기여자보안 관리자는 모두 readwrite 사용 권한을 가지며 Policy Insights 데이터 쓰기 권한자(미리 보기)에는 read 권한이 있습니다.

예외에는 예외를 부여할 때의 영향 때문에 추가 보안 조치가 있습니다. 리소스 계층 또는 개별 리소스에 대한 Microsoft.Authorization/policyExemptions/write 작업을 요구하는 것 이외에도 예외 작성자에게는 대상 할당 관련한 exempt/Action 동사가 있어야 합니다.

예외 만들기 및 관리

시간 제한이 있거나 구체적인 시나리오에는 예외가 권장됩니다(해당 시나리오에 리소스 또는 리소스 계층 구조를 계속 추적하고 평가해야 하지만 준수 여부를 평가해서는 안 되는 구체적인 이유가 있는 경우). 예를 들어, 환경에 기본 제공 정의 Storage accounts should disable public network access(ID: b2982f36-99f2-4db5-8eff-283140c09693)이(가) 감사로 설정된 효과로 할당된 경우. 규정 준수 평가 시 리소스 "StorageAcc1"은 비준수이지만, StorageAcc1은 비즈니스 목적으로 공용 네트워크 액세스를 사용하도록 설정해야 합니다. 이때 StorageAcc1을 대상으로 하는 예외 리소스를 생성하라는 요청을 제출해야 합니다. 예외가 만들어지면 StorageAcc1은 규정 준수 검토에서 예외 표시됩니다.

정기적으로 예외 항목을 재검토하여 모든 적격 항목이 적절하게 예외되었는지 확인하고 더 이상 예외 자격이 없는 경우 즉시 제거합니다. 이때 만료된 예외 리소스도 삭제할 수 있습니다.

다음 단계