Azure Policy 패턴: 그룹 정책 정의
이니셔티브는 정책 정의의 그룹입니다. 관련 정책 정의를 단일 개체로 그룹화하면 예전처럼 할당을 여러 개 생성하지 않아도 됩니다.
샘플 이니셔티브 정의
이 이니셔티브는 각각 tagName 및 tagValue 매개 변수를 사용하는 두 개의 정책 정의를 배포합니다. 이니셔티브 자체에는 costCenterValue 및 productNameValue의 두 매개 변수가 있습니다. 이러한 이니셔티브 매개 변수는 각각 그룹화된 정책 정의에 제공됩니다. 이 디자인은 기존 정책 정의의 재사용을 최대화하는 동시에 필요에 따라 이를 구현하기 위해 생성된 할당 수를 제한합니다.
{
"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')]"
}
}
}
]
}
}
설명
이니셔티브 매개 변수
이니셔티브는 고유한 매개 변수를 정의한 다음, 그룹화된 정책 정의로 전달할 수 있습니다. 이 예제에서 costCenterValue 및 productNameValue는 모두 이니셔티브 매개 변수로 정의됩니다. 이니셔티브가 할당될 때 값이 제공됩니다.
"parameters": {
"costCenterValue": {
"type": "String",
"metadata": {
"displayName": "required value for Cost Center tag"
}
},
"productNameValue": {
"type": "String",
"metadata": {
"displayName": "required value for product Name tag"
}
}
},
정책 정의 포함
정책 정의에서 매개 변수를 허용하는 경우 포함된 각 정책 정의는 policyDefinitionId 및 매개 변수 배열을 제공해야 합니다. 다음 코드 조각에서 포함된 정책 정의는 tagName 및 tagValue의 두 매개 변수를 사용합니다. tagName은 리터럴로 정의되지만 tagValue는 이니셔티브에서 정의한 매개 변수 costCenterValue를 사용합니다. 이 값의 통과는 재사용을 향상시킵니다.
{
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"parameters": {
"tagName": {
"value": "costCenter"
},
"tagValue": {
"value": "[parameters('costCenterValue')]"
}
}
},
다음 단계
- 다른 패턴 및 기본 제공 정의를 검토합니다.
- Azure Policy 정의 구조를 검토합니다.
- 정책 효과 이해를 검토합니다.