Sdílet prostřednictvím


Azure Policy vzor: definice zásad skupiny

Iniciativa je skupina definic zásad. Seskupením definic souvisejících zásad do jednoho objektu můžete vytvořit jedno přiřazení, které by bylo více přiřazení.

Ukázková definice iniciativy

Tato iniciativa nasadí dvě definice zásad, z nichž každá přebírá parametry tagName a tagValue . Samotná iniciativa má dva parametry: costCenterValue a productNameValue. Tyto parametry iniciativy jsou k dispozici pro každou definici seskupených zásad. Tento návrh maximalizuje opakované použití existujících definic zásad a současně omezuje počet přiřazení vytvořených k jejich implementaci podle potřeby.

{
    "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')]"
                    }
                }
            }
        ]
    }
}

Vysvětlení

Parametry iniciativ

Iniciativa může definovat vlastní parametry, které se pak předávají definicím seskupených zásad. V tomto příkladu jsou parametry iniciativy definovány jak costCenterValue , tak i productNameValue . Hodnoty se zadají při přiřazení iniciativy.

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

Zahrnuje definice zásad.

Každá zahrnutá definice zásady musí obsahovat policyDefinitionId a pole parametrů , pokud definice zásady přijímá parametry. V následujícím fragmentu kódu má definice zahrnuté zásady dva parametry: tagName a tagValue. tagName je definován pomocí literálu, ale tagValue používá parametr costCenterValue definovaný iniciativou. Toto předávání hodnot zlepšuje opakované použití.

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

Další kroky