Partager via


Modèle Azure Policy : paramètres

Une définition de stratégie peut être rendue dynamique afin de réduire le nombre de définitions de stratégie nécessaires à l’aide des paramètres. Un paramètre est défini lors de l’attribution de la stratégie. Les paramètres ont un ensemble de propriétés prédéfinies qui les décrivent, ainsi que la façon dont ils sont utilisés.

Exemple 1 : Paramètre de chaîne

Cette définition de stratégie utilise deux paramètres (tagName et tagValue), pour définir ce que l’attribution de stratégie doit rechercher dans les ressources. Ce format permet à la définition de stratégie d’être utilisée avec autant de combinaisons nom-valeur d’étiquette que souhaité. Toutefois, il ne conserve qu’une seule définition de stratégie.

Remarque

Pour obtenir un exemple de balise qui utilise mode Tous et fonctionne avec un groupe de ressources, consultez Modèle : Balises - Exemple #1.

{
    "properties": {
        "displayName": "Require tag and its value",
        "policyType": "BuiltIn",
        "mode": "Indexed",
        "description": "Enforces a required tag and its value. Does not apply to resource groups.",
        "parameters": {
            "tagName": {
                "type": "String",
                "metadata": {
                    "description": "Name of the tag, such as costCenter"
                }
            },
            "tagValue": {
                "type": "String",
                "metadata": {
                    "description": "Value of the tag, such as headquarter"
                }
            }
        },
        "policyRule": {
            "if": {
                "not": {
                    "field": "[concat('tags[', parameters('tagName'), ']')]",
                    "equals": "[parameters('tagValue')]"
                }
            },
            "then": {
                "effect": "deny"
            }
        }
    }
}

Exemple 1 : Explication

"tagName": {
    "type": "String",
    "metadata": {
        "description": "Name of the tag, such as costCenter"
    }
},

Dans cette partie de la définition de stratégie, le paramètre tagName est défini en tant que chaîne et une description est fournie pour son utilisation.

Le paramètre est ensuite utilisé dans le bloc policyRule.if pour rendre la stratégie dynamique. Ici, il est utilisé pour définir le champ évalué, qui correspond à une étiquette ayant la valeur tagName.

"if": {
    "not": {
        "field": "[concat('tags[', parameters('tagName'), ']')]",
        "equals": "[parameters('tagValue')]"
    }
},

Exemple 2 : Paramètres de tableau

Cette définition de stratégie utilise un seul paramètre (listOfBandwidthinMbps) pour vérifier si la ressource de circuit ExpressRoute a configuré le paramètre de bande passante sur l’une des valeurs approuvées. Si ce n’est pas le cas, la création ou la mise à jour de la ressource est refusée.

{
    "properties": {
        "displayName": "Allowed Express Route bandwidth",
        "description": "This policy enables you to specify a set of express route bandwidths that your organization can deploy.",
        "parameters": {
            "listOfBandwidthinMbps": {
                "type": "Array",
                "metadata": {
                    "description": "The list of SKUs that can be specified for express route.",
                    "displayName": "Allowed Bandwidth"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.Network/expressRouteCircuits"
                    },
                    {
                        "not": {
                            "field": "Microsoft.Network/expressRouteCircuits/serviceProvider.bandwidthInMbps",
                            "in": "[parameters('listOfBandwidthinMbps')]"
                        }
                    }
                ]
            },
            "then": {
                "effect": "Deny"
            }
        }
    }
}

Exemple 2 : Explication

"listOfBandwidthinMbps": {
    "type": "Array",
    "metadata": {
        "description": "The list of SKUs that can be specified for express route.",
        "displayName": "Allowed Bandwidth"
    }
}

Dans cette partie de la définition de stratégie, le paramètre listOfBandwidthinMbps est défini en tant que tableau et une description est fournie pour son utilisation. En tant que tableau, il comprend plusieurs valeurs à rechercher.

Le paramètre est ensuite utilisé dans le bloc policyRule.if. En tant que paramètre de tableau, le in ou le notIn de la condition d’un tableau doivent être utilisés. Ici, il est utilisé sur l’alias serviceProvider.bandwidthInMbps comme l’une des valeurs définies.

"not": {
    "field": "Microsoft.Network/expressRouteCircuits/serviceProvider.bandwidthInMbps",
    "in": "[parameters('listOfBandwidthinMbps')]"
}

Exemple 3 : Effet paramétrable

Une façon courante de rendre les définitions de stratégie réutilisables consiste à paramétrer l’effet lui-même. Cet exemple utilise un seul paramètre, effect. Le paramétrage de l’effet permet d’assigner la même définition à différentes étendues avec des effets différents.

{
    "properties": {
        "displayName": "All authorization rules except RootManageSharedAccessKey should be removed from Service Bus namespace",
        "policyType": "BuiltIn",
        "mode": "All",
        "description": "Service Bus clients should not use a namespace level access policy that provides access to all queues and topics in a namespace. To align with the least privilege security model, you should create access policies at the entity level for queues and topics to provide access to only the specific entity",
        "metadata": {
            "version": "1.0.1",
            "category": "Service Bus"
        },
        "parameters": {
            "effect": {
                "type": "string",
                "defaultValue": "Audit",
                "allowedValues": [
                    "Audit",
                    "Deny",
                    "Disabled"
                ],
                "metadata": {
                    "displayName": "Effect",
                    "description": "The effect determines what happens when the policy rule is evaluated to match"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.ServiceBus/namespaces/authorizationRules"
                    },
                    {
                        "field": "name",
                        "notEquals": "RootManageSharedAccessKey"
                    }
                ]
            },
            "then": {
                "effect": "[parameters('effect')]"
            }
        }
    }
}

Exemple 3 : Explication

"parameters": {
    "effect": {
        "type": "string",
        "defaultValue": "Audit",
        "allowedValues": [
            "Audit",
            "Deny",
            "Disabled"
        ],
        "metadata": {
            "displayName": "Effect",
            "description": "The effect determines what happens when the policy rule is evaluated to match"
        }
    }
},

Dans cette partie de la définition de stratégie, le paramètre effect est défini en tant que chaîne. La définition de stratégie définit la valeur par défaut d’une affectation sur audit, et limite les autres options à disabled et deny.

Le paramètre est ensuite utilisé dans le bloc policyRule.then pour obtenir effect.

"then": {
    "effect": "[parameters('effect')]"
}

Étapes suivantes