Share via


Azure Policy-patroon: beleidsdefinities groeperen

Een initiatief is een groep beleidsdefinities. Door verwante beleidsdefinities in één object te groeperen, kunt u één toewijzing maken in de plaats van meerdere.

Voorbeeld van initiatiefdefinitie

Dit initiatief implementeert twee beleidsdefinities die allebeide de parameters tagName en tagValue overnemen. Het initiatief zelf heeft twee parameters: costCenterValue en productNameValue. Deze initiatiefparameters worden beide gegeven aan elk van de beleidsdefinities in de groep. Dit ontwerp hergebruikt zoveel mogelijk bestaande beleidsdefinities en beperkt het aantal toewijzingen dat wordt gemaakt voor de implementatie.

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

Uitleg

Initiatiefparameters

Een initiatief kan zijn eigen parameters definiëren, die vervolgens worden doorgegeven aan de beleidsdefinities in de groep. In dit voorbeeld worden zowel costCenterValue als productNameValue gedefinieerd als parameters van het initiatief. De waarden worden opgegeven bij toewijzing van het initiatief.

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

Inclusief beleidsdefinities

Elke opgenomen beleidsdefinitie moet de policyDefinitionId en een matrix met parameters opgeven als de beleidsdefinitie parameters accepteert. In het volgende fragment heeft de opgenomen beleidsdefinitie twee parameters: tagName en tagValue. tagName wordt gedefinieerd met een letterlijke waarde, maar tagValue gebruikt de parameter costCenterValue die gedefinieerd wordt door het initiatief. Deze passthrough van waarden zorgt voor beter hergebruik.

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

Volgende stappen