Azure Policy mönster: grupprincipdefinitioner

Ett initiativ är en grupp med principdefinitioner. Genom att gruppera relaterade principdefinitioner i ett enda objekt kan du skapa en enda tilldelning som skulle ha varit flera tilldelningar.

Exempel på initiativdefinition

Det här initiativet distribuerar två principdefinitioner, som var och en tar tagName - och tagValue-parametrarna . Själva initiativet har två parametrar: costCenterValue och productNameValue. Dessa initiativparametrar tillhandahålls var och en av de grupperade principdefinitionerna. Den här designen maximerar återanvändningen av befintliga principdefinitioner och begränsar antalet tilldelningar som skapas för att implementera dem efter behov.

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

Förklaring

Initiativparametrar

Ett initiativ kan definiera sina egna parametrar som sedan skickas till de grupperade principdefinitionerna. I det här exemplet definieras både costCenterValue och productNameValue som initiativparametrar. Värdena anges när initiativet tilldelas.

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

Innehåller principdefinitioner

Varje inkluderad principdefinition måste ange policyDefinitionId och en parametermatris om principdefinitionen accepterar parametrar. I följande kodfragment tar den inkluderade principdefinitionen två parametrar: tagName och tagValue. tagName definieras med en literal, men tagValue använder parametern costCenterValue som definieras av initiativet. Genomströmningen av värden förbättrar återanvändning.

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

Nästa steg