wzorzec Azure Policy: definicje zasad grupy

Inicjatywa jest grupą definicji zasad. Grupując powiązane definicje zasad w pojedynczy obiekt, można utworzyć pojedyncze przypisanie, które byłoby wieloma przypisaniami.

Przykładowa definicja inicjatywy

Ta inicjatywa wdraża dwie definicje zasad, z których każda przyjmuje parametry tagName i tagValue . Sama inicjatywa ma dwa parametry: costCenterValue i productNameValue. Te parametry inicjatywy są udostępniane każdemu z pogrupowanych definicji zasad. Ten projekt maksymalizuje ponowne użycie istniejących definicji zasad przy jednoczesnym ograniczeniu liczby utworzonych przypisań w celu zaimplementowania ich w razie potrzeby.

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

Wyjaśnienie

Parametry inicjatywy

Inicjatywa może definiować własne parametry, które są następnie przekazywane do definicji zasad pogrupowanych. W tym przykładzie zarówno costCenterValue , jak i productNameValue są definiowane jako parametry inicjatywy. Wartości są udostępniane po przypisaniu inicjatywy.

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

Obejmuje definicje zasad

Każda dołączona definicja zasad musi podać policyDefinitionId i tablicę parametrów , jeśli definicja zasad akceptuje parametry. W poniższym fragmencie kodu dołączona definicja zasad przyjmuje dwa parametry: tagName i tagValue. tagName jest definiowany za pomocą literału, ale tagValue używa parametru costCenterValue zdefiniowanego przez inicjatywę. To przekazywanie wartości poprawia ponowne użycie.

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

Następne kroki