Azure Policy 패턴: 그룹 정책 정의

이니셔티브는 정책 정의의 그룹입니다. 관련 정책 정의를 단일 개체로 그룹화하면 예전처럼 할당을 여러 개 생성하지 않아도 됩니다.

샘플 이니셔티브 정의

이 이니셔티브는 각각 tagNametagValue 매개 변수를 사용하는 두 개의 정책 정의를 배포합니다. 이니셔티브 자체에는 costCenterValueproductNameValue의 두 매개 변수가 있습니다. 이러한 이니셔티브 매개 변수는 각각 그룹화된 정책 정의에 제공됩니다. 이 디자인은 기존 정책 정의의 재사용을 최대화하는 동시에 필요에 따라 이를 구현하기 위해 생성된 할당 수를 제한합니다.

{
    "properties": {
        "displayName": "Billing Tags Policy Initiative",
        "description": "Specify cost Center tag and product name tag",
        "parameters": {
            "costCenterValue": {
                "type": "String",
                "metadata": {
                    "displayName": "required value for Cost Center tag"
                }
            },
            "productNameValue": {
                "type": "String",
                "metadata": {
                    "displayName": "required value for product Name tag"
                }
            }
        },
        "policyDefinitions": [{
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "parameters": {
                    "tagName": {
                        "value": "costCenter"
                    },
                    "tagValue": {
                        "value": "[parameters('costCenterValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
                "parameters": {
                    "tagName": {
                        "value": "costCenter"
                    },
                    "tagValue": {
                        "value": "[parameters('costCenterValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
                "parameters": {
                    "tagName": {
                        "value": "productName"
                    },
                    "tagValue": {
                        "value": "[parameters('productNameValue')]"
                    }
                }
            },
            {
                "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
                "parameters": {
                    "tagName": {
                        "value": "productName"
                    },
                    "tagValue": {
                        "value": "[parameters('productNameValue')]"
                    }
                }
            }
        ]
    }
}

설명

이니셔티브 매개 변수

이니셔티브는 고유한 매개 변수를 정의한 다음, 그룹화된 정책 정의로 전달할 수 있습니다. 이 예제에서 costCenterValueproductNameValue는 모두 이니셔티브 매개 변수로 정의됩니다. 이니셔티브가 할당될 때 값이 제공됩니다.

"parameters": {
    "costCenterValue": {
        "type": "String",
        "metadata": {
            "displayName": "required value for Cost Center tag"
        }
    },
    "productNameValue": {
        "type": "String",
        "metadata": {
            "displayName": "required value for product Name tag"
        }
    }
},

정책 정의 포함

정책 정의에서 매개 변수를 허용하는 경우 포함된 각 정책 정의는 policyDefinitionId매개 변수 배열을 제공해야 합니다. 다음 코드 조각에서 포함된 정책 정의는 tagNametagValue의 두 매개 변수를 사용합니다. tagName은 리터럴로 정의되지만 tagValue는 이니셔티브에서 정의한 매개 변수 costCenterValue를 사용합니다. 이 값의 통과는 재사용을 향상시킵니다.

{
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
    "parameters": {
        "tagName": {
            "value": "costCenter"
        },
        "tagValue": {
            "value": "[parameters('costCenterValue')]"
        }
    }
},

다음 단계