Comprendre les effets d’Azure PolicyUnderstand Azure Policy effects

Chaque définition de stratégie dans Azure Policy a un effet unique.Each policy definition in Azure Policy has a single effect. Cet effet détermine ce qu’il se passe lorsque la règle de stratégie est évaluée pour une mise en correspondance.That effect determines what happens when the policy rule is evaluated to match. Les effets se comportent différemment selon qu’ils concernent une nouvelle ressource, une ressource mise à jour ou une ressource existante.The effects behave differently if they are for a new resource, an updated resource, or an existing resource.

Une définition de stratégie prend en charge ces effets :These effects are currently supported in a policy definition:

Ordre d’évaluationOrder of evaluation

Les requêtes pour créer ou mettre à jour une ressource via Azure Resource Manager sont évaluées en premier par Azure Policy.Requests to create or update a resource through Azure Resource Manager are evaluated by Azure Policy first. Azure Policy répertorie toutes les affectations qui s’appliquent à la ressource, puis évalue la ressource en fonction de chaque définition.Azure Policy creates a list of all assignments that apply to the resource and then evaluates the resource against each definition. Azure Policy traite plusieurs effets avant de transmettre la requête au fournisseur de ressources approprié.Azure Policy processes several of the effects before handing the request to the appropriate Resource Provider. Cela empêche un fournisseur de ressources d’effectuer un traitement inutile de la ressource lorsque celle-ci ne satisfait pas aux contrôles de gouvernance d’Azure Policy.Doing so prevents unnecessary processing by a Resource Provider when a resource doesn't meet the designed governance controls of Azure Policy.

  • Désactivé est vérifié en premier pour déterminer si la règle de stratégie doit être évaluée.Disabled is checked first to determine if the policy rule should be evaluated.
  • Append et Modify sont ensuite évalués.Append and Modify are then evaluated. Puisque l’un comme l’autre peuvent modifier la requête, une modification peut empêcher le déclenchement d’un effet Audit ou Deny.Since either could alter the request, a change made may prevent an audit or deny effect from triggering.
  • Deny est ensuite évalué.Deny is then evaluated. L’évaluation de Deny avant Audit empêche la double journalisation d’une ressource indésirable.By evaluating deny before audit, double logging of an undesired resource is prevented.
  • Audit est alors évalué avant que la requête ne soit envoyée au fournisseur de ressources.Audit is then evaluated before the request going to the Resource Provider.

Une fois que le fournisseur de ressources a retourné un code de réussite, AuditIfNotExists et DeployIfNotExists déterminent si une journalisation de conformité ou une action supplémentaire est requise.After the Resource Provider returns a success code, AuditIfNotExists and DeployIfNotExists evaluate to determine if additional compliance logging or action is required.

Il n’existe pas actuellement d’ordre d’évaluation pour les effets EnforceOPAConstraint ou EnforceRegoPolicy.There currently isn't any order of evaluation for the EnforceOPAConstraint or EnforceRegoPolicy effects.

DésactivéDisabled

Cet effet peut s’avérer utile pour tester certaines situations ou lorsque la définition de stratégie a paramétré l’effet.This effect is useful for testing situations or for when the policy definition has parameterized the effect. Cette flexibilité permet de désactiver une seule affectation plutôt que de désactiver toutes les affectations de cette stratégie.This flexibility makes it possible to disable a single assignment instead of disabling all of that policy's assignments.

Une alternative à l’effet Désactivé est enforcementMode , qui est défini sur l’attribution de stratégie.An alternative to the Disabled effect is enforcementMode which is set on the policy assignment. Lorsque enforcementMode est Désactivé, les ressources sont toujours évaluées.When enforcementMode is Disabled, resources are still evaluated. La journalisation, notamment les journaux d’activité, et l’effet de stratégie ne se produisent pas.Logging, such as Activity logs, and the policy effect don't occur. Pour plus d’informations, consultez Attribution de stratégie - Mode de mise en conformité.For more information, see policy assignment - enforcement mode.

AjouterAppend

Append permet d’ajouter des champs supplémentaires à la ressource demandée lors de la création ou de la mise à jour.Append is used to add additional fields to the requested resource during creation or update. Un exemple courant consiste à spécifier des adresses IP autorisées pour une ressource de stockage.A common example is specifying allowed IPs for a storage resource.

Important

Append est destiné à être utilisé avec des propriétés autres que des étiquettes.Append is intended for use with non-tag properties. Même si Append peut ajouter des étiquettes à une ressource dans le cadre d’une requête de création ou de mise à jour, il est recommandé d’utiliser l’effet Modify pour les étiquettes.While Append can add tags to a resource during a create or update request, it's recommended to use the Modify effect for tags instead.

Évaluation AppendAppend evaluation

L’évaluation Append se produit avant que la requête ne soit traitée par un fournisseur de ressources lors de la création ou de la mise à jour d’une ressource.Append evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. Append ajoute des champs à la ressource lorsque la condition if de la règle de stratégie est remplie.Append adds fields to the resource when the if condition of the policy rule is met. Si l’effet Append remplace une valeur dans la requête d’origine avec une valeur différente, il agit comme un effet Deny et rejette la demande.If the append effect would override a value in the original request with a different value, then it acts as a deny effect and rejects the request. Pour ajouter une nouvelle valeur à un tableau existant, utilisez la version [*] de l’alias.To append a new value to an existing array, use the [*] version of the alias.

Lorsqu’une définition de stratégie utilisant l’effet Append est exécutée dans le cadre d’un cycle d’évaluation, elle n’apporte pas de modifications aux ressources qui existent déjà.When a policy definition using the append effect is run as part of an evaluation cycle, it doesn't make changes to resources that already exist. Au lieu de cela, elle marque comme non conforme toute ressource qui répond à la condition if.Instead, it marks any resource that meets the if condition as non-compliant.

Propriétés d’AppendAppend properties

Un effet Append prend en charge la propriété obligatoire details uniquement, laquelle est un tableau de données.An append effect only has a details array, which is required. En tant que tableau, details peut contenir une ou plusieurs paires champ/valeur.As details is an array, it can take either a single field/value pair or multiples. Reportez-vous à la structure de définition pour afficher la liste des champs autorisés.Refer to definition structure for the list of acceptable fields.

Exemples AppendAppend examples

Exemple 1 : paire champ/valeur unique utilisant un alias non- [*] avec un tableau value afin de définir des règles IP sur un compte de stockage.Example 1: Single field/value pair using a non-[*] alias with an array value to set IP rules on a storage account. Lorsque l’alias non- [*] est un tableau, l’effet ajoute la value comme tableau entier.When the non-[*] alias is an array, the effect appends the value as the entire array. Si le tableau existe déjà, un événement de refus se produit à partir du conflit.If the array already exists, a deny event occurs from the conflict.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
        "value": [{
            "action": "Allow",
            "value": "134.5.0.0/21"
        }]
    }]
}

Exemple 2 : paire champ/valeur unique utilisant un alias [*] avec un tableau value afin de définir des règles IP sur un compte de stockage.Example 2: Single field/value pair using an [*] alias with an array value to set IP rules on a storage account. En utilisant l’alias [*] , l’effet ajoute la value à un tableau potentiellement préexistant.By using the [*] alias, the effect appends the value to a potentially pre-existing array. Si le tableau n’existe pas déjà, il sera créé.If the array doesn't exist yet, it will be created.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]",
        "value": {
            "value": "40.40.40.40",
            "action": "Allow"
        }
    }]
}

ModifierModify

Modify est utilisé pour ajouter, mettre à jour ou supprimer les étiquettes d’une ressource lors d’une création ou d’une mise à jour.Modify is used to add, update, or remove tags on a resource during creation or update. Un exemple courant consiste à mettre à jour les étiquettes des ressources telles que costCenter.A common example is updating tags on resources such as costCenter. Une stratégie Modify doit toujours avoir mode défini sur Indexé, sauf si la ressource cible est un groupe de ressources.A Modify policy should always have mode set to Indexed unless the target resource is a resource group. Les ressources non conformes existantes peuvent être corrigées à l’aide d’une tâche de correction.Existing non-compliant resources can be remediated with a remediation task. Une même règle Modify peut avoir autant d’opérations que vous le souhaitez.A single Modify rule can have any number of operations.

Important

Modify s’utilise uniquement pour les étiquettes.Modify is currently only for use with tags. Si vous gérez des étiquettes, il est recommandé d’utiliser Modify plutôt que Append, car Modify fournit des types d’opérations supplémentaires, ainsi que la possibilité de corriger les ressources existantes.If you are managing tags, it's recommended to use Modify instead of Append as Modify provides additional operation types and the ability to remediate existing resources. Toutefois, Append est recommandé si vous n’êtes pas en mesure de créer une identité managée.However, Append is recommended if you aren't able to create a managed identity.

Évaluation ModifyModify evaluation

L’évaluation Modify a lieu avant que la requête ne soit traitée par un fournisseur de ressources lors de la création ou de la mise à jour d’une ressource.Modify evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. Modify ajoute ou met à jour les étiquettes d’une ressource lorsque la condition if de la règle de stratégie est remplie.Modify adds or updates tags on a resource when the if condition of the policy rule is met.

Lorsqu’une définition de stratégie utilisant l’effet Modify est exécutée dans le cadre d’un cycle d’évaluation, elle n’apporte pas de modifications aux ressources qui existent déjà.When a policy definition using the Modify effect is run as part of an evaluation cycle, it doesn't make changes to resources that already exist. Au lieu de cela, elle marque comme non conforme toute ressource qui répond à la condition if.Instead, it marks any resource that meets the if condition as non-compliant.

Propriétés de ModifyModify properties

La propriété details de l’effet Modify comporte toutes les sous-propriétés qui définissent les autorisations nécessaires à la correction, ainsi que les opérations utilisées pour ajouter, mettre à jour ou supprimer les valeurs des étiquettes.The details property of the Modify effect has all the subproperties that define the permissions needed for remediation and the operations used to add, update, or remove tag values.

  • roleDefinitionIds [obligatoire]roleDefinitionIds [required]
    • Cette propriété doit inclure un tableau de chaînes qui correspondent aux ID de rôle de contrôle de l’accès en fonction du rôle accessibles par l’abonnement.This property must include an array of strings that match role-based access control role ID accessible by the subscription. Pour plus d’informations, consultez Correction - Configurer une définition de stratégie.For more information, see remediation - configure policy definition.
    • Le rôle défini doit inclure toutes les opérations accordées au rôle Contributeur.The role defined must include all operations granted to the Contributor role.
  • operations [obligatoire]operations [required]
    • Tableau de toutes les opérations d’étiquette à effectuer sur les ressources correspondantes.An array of all tag operations to be completed on matching resources.
    • Propriétés :Properties:
      • operation [obligatoire]operation [required]
        • Définit l’action à effectuer sur une ressource correspondante.Defines what action to take on a matching resource. Les options sont les suivantes : addOrReplace, Add, Remove.Options are: addOrReplace, Add, Remove. Add a le même comportement que l’effet Append.Add behaves similar to the Append effect.
      • field [obligatoire]field [required]
        • Étiquette à ajouter, remplacer ou supprimer.The tag to add, replace, or remove. Les noms d’étiquette doivent respecter la même convention de nommage que les autres champs.Tag names must adhere to the same naming convention for other fields.
      • value (facultatif)value (optional)
        • Valeur à affecter à l’étiquette.The value to set the tag to.
        • Cette propriété est obligatoire si l’opération est addOrReplace ou Add.This property is required if operation is addOrReplace or Add.

Opérations ModifyModify operations

Le tableau de propriétés operations permet de modifier plusieurs étiquettes de différentes façons à partir d’une même définition de stratégie.The operations property array makes it possible to alter several tags in different ways from a single policy definition. Chaque opération est constituée des propriétés operation, field et value.Each operation is made up of operation, field, and value properties. La propriété operation détermine ce que fait la tâche de correction aux étiquettes, la propriété field détermine l’étiquette qui est modifiée et la propriété value définit le nouveau paramètre de l’étiquette.Operation determines what the remediation task does to the tags, field determines which tag is altered, and value defines the new setting for that tag. Voici des exemples de modifications d’étiquette :The example below makes the following tag changes:

  • Définit l’étiquette environment sur « Test », même si elle a déjà une valeur.Sets the environment tag to "Test", even if it already exists with a different value.
  • Supprime l’étiquette TempResource.Removes the tag TempResource.
  • Définit l’étiquette Dept sur le paramètre de stratégie DeptName configuré pour l’attribution de stratégie.Sets the Dept tag to the policy parameter DeptName configured on the policy assignment.
"details": {
    ...
    "operations": [
        {
            "operation": "addOrReplace",
            "field": "tags['environment']",
            "value": "Test"
        },
        {
            "operation": "Remove",
            "field": "tags['TempResource']",
        },
        {
            "operation": "addOrReplace",
            "field": "tags['Dept']",
            "value": "[parameters('DeptName')]"
        }
    ]
}

La propriété operation comprend les options suivantes :The operation property has the following options:

OpérationOperation DescriptionDescription
addOrReplaceaddOrReplace Ajoute l’étiquette et la valeur définies à la ressource, même si l’étiquette a déjà une autre valeur.Adds the defined tag and value to the resource, even if the tag already exists with a different value.
AjouterAdd Ajoute l’étiquette et la valeur définies à la ressource.Adds the defined tag and value to the resource.
SupprimerRemove Supprime l’étiquette définie de la ressource.Removes the defined tag from the resource.

Exemples ModifyModify examples

Exemple 1 : Ajoutez l’étiquette environment et remplacez les étiquettes environment existantes par « Test » :Example 1: Add the environment tag and replace existing environment tags with "Test":

"then": {
    "effect": "modify",
    "details": {
        "roleDefinitionIds": [
            "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "operations": [
            {
                "operation": "addOrReplace",
                "field": "tags['environment']",
                "value": "Test"
            }
        ]
    }
}

Exemple 2 : Supprimez l’étiquette env et ajoutez l’étiquette environment, ou remplacez les étiquettes environment existantes par une valeur paramétrable :Example 2: Remove the env tag and add the environment tag or replace existing environment tags with a parameterized value:

"then": {
    "effect": "modify",
    "details": {
        "roleDefinitionIds": [
            "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "operations": [
            {
                "operation": "Remove",
                "field": "tags['env']"
            },
            {
                "operation": "addOrReplace",
                "field": "tags['environment']",
                "value": "[parameters('tagValue')]"
            }
        ]
    }
}

DenyDeny

Deny empêche l’exécution d’une requête de ressource qui ne correspond pas aux normes définies via une définition de stratégie et qui fait échouer la requête.Deny is used to prevent a resource request that doesn't match defined standards through a policy definition and fails the request.

Évaluation DenyDeny evaluation

Lors de la création ou de la mise à jour d’une ressource correspondante, Deny empêche l’envoi de la requête au fournisseur de ressources.When creating or updating a matched resource, deny prevents the request before being sent to the Resource Provider. La requête renvoie une erreur 403 (Forbidden).The request is returned as a 403 (Forbidden). Dans le portail, l’erreur 403 (Interdit) peut être considérée comme l’état du déploiement qui a été empêché par l’affectation de stratégie.In the portal, the Forbidden can be viewed as a status on the deployment that was prevented by the policy assignment.

Lors de l’évaluation des ressources existantes, les ressources qui correspondent à une définition de stratégie Deny sont marquées comme non conformes.During evaluation of existing resources, resources that match a deny policy definition are marked as non-compliant.

Propriétés de DenyDeny properties

L’effet Deny n’a pas d’autres propriétés utilisables dans la condition then de la définition de stratégie.The deny effect doesn't have any additional properties for use in the then condition of the policy definition.

Exemple DenyDeny example

Exemple : utilisation de l’effet Deny.Example: Using the deny effect.

"then": {
    "effect": "deny"
}

AuditAudit

Audit permet de créer un événement d’avertissement dans le journal d’activité lors de l’évaluation d’une ressource non conforme, mais il n’arrête pas la requête.Audit is used to create a warning event in the activity log when evaluating a non-compliant resource, but it doesn't stop the request.

Évaluation AuditAudit evaluation

Audit est le dernier effet vérifié par Azure Policy pendant la création ou la mise à jour d’une ressource.Audit is the last effect checked by Azure Policy during the creation or update of a resource. Azure Policy envoie ensuite la ressource au fournisseur de ressources.Azure Policy then sends the resource to the Resource Provider. Audit fonctionne de la même façon pour une requête de ressource et un cycle d’évaluation.Audit works the same for a resource request and an evaluation cycle. Azure Policy ajoute une opération Microsoft.Authorization/policies/audit/action dans le journal d’activité et marque la ressource comme non conforme.Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log and marks the resource as non-compliant.

Propriétés d’AuditAudit properties

L’effet Audit n’a pas d’autres propriétés utilisables dans la condition then de la définition de stratégie.The audit effect doesn't have any additional properties for use in the then condition of the policy definition.

Exemple AuditAudit example

Exemple : utilisation de l’effet Audit.Example: Using the audit effect.

"then": {
    "effect": "audit"
}

AuditIfNotExistsAuditIfNotExists

AuditIfNotExists active l’audit sur des ressources qui satisfont à la condition if, mais dont les composants ne sont pas spécifiés dans la propriété details de la condition then.AuditIfNotExists enables auditing on resources that match the if condition, but doesn't have the components specified in the details of the then condition.

Évaluation AuditIfNotExistsAuditIfNotExists evaluation

AuditIfNotExists s’exécute après qu’un fournisseur de ressources a traité une requête de création ou de mise à jour de ressource et a renvoyé un code d’état de réussite.AuditIfNotExists runs after a Resource Provider has handled a create or update resource request and has returned a success status code. L’effet Audit est déclenché s’il n’existe pas de ressources connexes ou si les ressources définies par ExistenceCondition ne retournent pas de valeur true.The audit occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true. Azure Policy ajoute une opération Microsoft.Authorization/policies/audit/action au journal d’activité de la même façon que l’effet Audit.Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log the same way as the audit effect. Dans ce cas, la ressource qui a rempli la condition if est en fait la ressource qui est marquée comme non conforme.When triggered, the resource that satisfied the if condition is the resource that is marked as non-compliant.

Propriétés d’AuditIfNotExistsAuditIfNotExists properties

La propriété details des effets AuditIfNotExists possède toutes les sous-propriétés qui définissent les ressources connexes testées.The details property of the AuditIfNotExists effects has all the subproperties that define the related resources to match.

  • Type [obligatoire]Type [required]
    • Spécifie le type de la ressource connexe à évaluer.Specifies the type of the related resource to match.
    • Si details.type est un type de ressource sous la ressource de condition if, la stratégie envoie des requêtes pour les ressources de ce type dans l’étendue de la ressource évaluée.If details.type is a resource type underneath the if condition resource, the policy queries for resources of this type within the scope of the evaluated resource. Sinon, la stratégie envoie des requêtes dans le même groupe de ressources que la ressource évaluée.Otherwise, policy queries within the same resource group as the evaluated resource.
  • Name (facultatif)Name (optional)
    • Spécifie le nom exact de la ressource à tester et amène la stratégie à extraire une ressource spécifique au lieu de toutes les ressources du type spécifié.Specifies the exact name of the resource to match and causes the policy to fetch one specific resource instead of all resources of the specified type.
    • Lorsque les valeurs de condition pour if.field.type et then.details.type correspondent, Name devient required et doit être [field('name')].When the condition values for if.field.type and then.details.type match, then Name becomes required and must be [field('name')]. Toutefois, un effet audit doit être considéré à la place.However, an audit effect should be considered instead.
  • ResourceGroupName (facultatif)ResourceGroupName (optional)
    • Permet l’évaluation de la ressource connexe provenant d’un groupe de ressources différent.Allows the matching of the related resource to come from a different resource group.
    • Ne s’applique pas si type est une ressource qui serait située sous la ressource de condition if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • La valeur par défaut est le groupe de ressources de la ressource de condition if.Default is the if condition resource's resource group.
  • ExistenceScope (facultatif)ExistenceScope (optional)
    • Les valeurs autorisées sont Subscription et ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Définit la portée d’où la ressource connexe évaluée est extraite.Sets the scope of where to fetch the related resource to match from.
    • Ne s’applique pas si type est une ressource qui serait située sous la ressource de condition if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Pour ResourceGroup, le traitement se limiterait au groupe de ressources de la ressource de condition if ou au groupe de ressources spécifié dans ResourceGroupName.For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Pour Subscription, le traitement interroge l’abonnement entier pour la ressource associée.For Subscription, queries the entire subscription for the related resource.
    • La valeur par défaut est ResourceGroup.Default is ResourceGroup.
  • ExistenceCondition (facultatif)ExistenceCondition (optional)
    • Si elle n’est pas spécifiée, toute ressource connexe du type remplit les conditions de l’effet et ne déclenche pas l’audit.If not specified, any related resource of type satisfies the effect and doesn't trigger the audit.
    • Utilise la même langue que la règle de stratégie pour la condition if mais est évaluée individuellement sur chaque ressource associée.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Si une ressource connexe correspondante renvoie true, l’effet est satisfait et ne déclenche pas l’audit.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the audit.
    • Peut utiliser [field()] pour vérifier l’équivalence des valeurs dans la condition if.Can use [field()] to check equivalence with values in the if condition.
    • Par exemple, permet de vérifier que la ressource parent (dans la condition if) réside dans le même emplacement de la ressource en tant que ressource connexe correspondante.For example, could be used to validate that the parent resource (in the if condition) is in the same resource location as the matching related resource.

Exemple AuditIfNotExistsAuditIfNotExists example

Exemple : évalue les Machines virtuelles Microsoft Azure pour déterminer si l’extension Antimalware existe, puis effectue un audit si l’extension est absente.Example: Evaluates Virtual Machines to determine if the Antimalware extension exists then audits when missing.

{
    "if": {
        "field": "type",
        "equals": "Microsoft.Compute/virtualMachines"
    },
    "then": {
        "effect": "auditIfNotExists",
        "details": {
            "type": "Microsoft.Compute/virtualMachines/extensions",
            "existenceCondition": {
                "allOf": [{
                        "field": "Microsoft.Compute/virtualMachines/extensions/publisher",
                        "equals": "Microsoft.Azure.Security"
                    },
                    {
                        "field": "Microsoft.Compute/virtualMachines/extensions/type",
                        "equals": "IaaSAntimalware"
                    }
                ]
            }
        }
    }
}

DeployIfNotExistsDeployIfNotExists

Comme pour AuditIfNotExists, une définition de stratégie DeployIfNotExists exécute un déploiement de modèle lorsque la condition est remplie.Similar to AuditIfNotExists, a DeployIfNotExists policy definition executes a template deployment when the condition is met.

Notes

Les modèles imbriqués sont pris en charge avec deployIfNotExists, mais les modèles liés ne sont actuellement pas pris en charge.Nested templates are supported with deployIfNotExists, but linked templates are currently not supported.

Évaluation DeployIfNotExistsDeployIfNotExists evaluation

AuditIfNotExists s’exécute après qu’un fournisseur de ressources a traité une requête de création ou de mise à jour de ressource et a renvoyé un code d’état de réussite.DeployIfNotExists runs after a Resource Provider has handled a create or update resource request and has returned a success status code. Un déploiement de modèle est déclenché s’il n’existe pas de ressources connexes ou si les ressources définies par ExistenceCondition ne retournent pas de valeur true.A template deployment occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true.

Au cours d’un cycle d’évaluation, les définitions de stratégie ayant un effet DeployIfNotExists sur les ressources sont marquées comme non conformes, mais aucune action n’est effectuée sur ces ressources.During an evaluation cycle, policy definitions with a DeployIfNotExists effect that match resources are marked as non-compliant, but no action is taken on that resource.

Propriétés de DeployIfNotExistsDeployIfNotExists properties

La propriété details de l’effet DeployIfNotExists comprend toutes les sous-propriétés qui définissent les ressources connexes testées, ainsi que le déploiement de modèle à exécuter.The details property of the DeployIfNotExists effect has all the subproperties that define the related resources to match and the template deployment to execute.

  • Type [obligatoire]Type [required]

    • Spécifie le type de la ressource connexe à évaluer.Specifies the type of the related resource to match.
    • Commence par tenter d’extraire une ressource sous la ressource de condition if, puis effectue une requête dans le même groupe de ressources que la ressource de condition if.Starts by trying to fetch a resource underneath the if condition resource, then queries within the same resource group as the if condition resource.
  • Name (facultatif)Name (optional)

    • Spécifie le nom exact de la ressource à tester et amène la stratégie à extraire une ressource spécifique au lieu de toutes les ressources du type spécifié.Specifies the exact name of the resource to match and causes the policy to fetch one specific resource instead of all resources of the specified type.
    • Lorsque les valeurs de condition pour if.field.type et then.details.type correspondent, Name devient required et doit être [field('name')].When the condition values for if.field.type and then.details.type match, then Name becomes required and must be [field('name')].
  • ResourceGroupName (facultatif)ResourceGroupName (optional)

    • Permet l’évaluation de la ressource connexe provenant d’un groupe de ressources différent.Allows the matching of the related resource to come from a different resource group.
    • Ne s’applique pas si type est une ressource qui serait située sous la ressource de condition if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • La valeur par défaut est le groupe de ressources de la ressource de condition if.Default is the if condition resource's resource group.
    • L’exécution d’un déploiement de modèle s’effectue dans le groupe de ressources de cette valeur.If a template deployment is executed, it's deployed in the resource group of this value.
  • ExistenceScope (facultatif)ExistenceScope (optional)

    • Les valeurs autorisées sont Subscription et ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Définit la portée d’où la ressource connexe évaluée est extraite.Sets the scope of where to fetch the related resource to match from.
    • Ne s’applique pas si type est une ressource qui serait située sous la ressource de condition if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Pour ResourceGroup, le traitement se limiterait au groupe de ressources de la ressource de condition if ou au groupe de ressources spécifié dans ResourceGroupName.For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Pour Subscription, le traitement interroge l’abonnement entier pour la ressource associée.For Subscription, queries the entire subscription for the related resource.
    • La valeur par défaut est ResourceGroup.Default is ResourceGroup.
  • ExistenceCondition (facultatif)ExistenceCondition (optional)

    • Si elle n’est pas spécifiée, toute ressource connexe de type satisfait à l’effet en question et ne déclenche pas le déploiement.If not specified, any related resource of type satisfies the effect and doesn't trigger the deployment.
    • Utilise la même langue que la règle de stratégie pour la condition if mais est évaluée individuellement sur chaque ressource associée.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Si une ressource connexe correspondante renvoie true, l’effet est satisfait et ne déclenche pas le déploiement.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the deployment.
    • Peut utiliser [field()] pour vérifier l’équivalence des valeurs dans la condition if.Can use [field()] to check equivalence with values in the if condition.
    • Par exemple, permet de vérifier que la ressource parent (dans la condition if) réside dans le même emplacement de la ressource en tant que ressource connexe correspondante.For example, could be used to validate that the parent resource (in the if condition) is in the same resource location as the matching related resource.
  • roleDefinitionIds [obligatoire]roleDefinitionIds [required]

  • DeploymentScope (facultatif)DeploymentScope (optional)

    • Les valeurs autorisées sont Subscription et ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Définit le type de déploiement à déclencher.Sets the type of deployment to be triggered. Subscription indique un déploiement au niveau de l’abonnement, ResourceGroup indique un déploiement dans un groupe de ressources.Subscription indicates a deployment at subscription level, ResourceGroup indicates a deployment to a resource group.
    • Une propriété location doit être spécifiée dans Deployment pour les déploiements au niveau de l’abonnement.A location property must be specified in the Deployment when using subscription level deployments.
    • La valeur par défaut est ResourceGroup.Default is ResourceGroup.
  • Deployment [obligatoire]Deployment [required]

    • Cette propriété doit inclure le déploiement de modèle complet, car elle est transmise à l’API PUT Microsoft.Resources/deployments.This property should include the full template deployment as it would be passed to the Microsoft.Resources/deployments PUT API. Pour plus d’informations, consultez l’API REST Deployments.For more information, see the Deployments REST API.

    Notes

    Toutes les fonctions à l’intérieur de la propriété Deployment sont évaluées en tant que composants du modèle, et non pas de la stratégie.All functions inside the Deployment property are evaluated as components of the template, not the policy. La propriété parameters y fait exception car elle transmet les valeurs de la stratégie au modèle.The exception is the parameters property that passes values from the policy to the template. Dans cette section, la propriété value sous le nom de paramètre du modèle permet d’effectuer la transmission de valeurs (voir fullDbName dans l’exemple DeployIfNotExists).The value in this section under a template parameter name is used to perform this value passing (see fullDbName in the DeployIfNotExists example).

Exemple DeployIfNotExistsDeployIfNotExists example

Exemple : évalue les bases de données SQL Server pour déterminer si transparentDataEncryption est activée.Example: Evaluates SQL Server databases to determine if transparentDataEncryption is enabled. Sinon, un déploiement destiné à l’activer est exécuté.If not, then a deployment to enable is executed.

"if": {
    "field": "type",
    "equals": "Microsoft.Sql/servers/databases"
},
"then": {
    "effect": "DeployIfNotExists",
    "details": {
        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
        "name": "current",
        "roleDefinitionIds": [
            "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
            "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
        ],
        "existenceCondition": {
            "field": "Microsoft.Sql/transparentDataEncryption.status",
            "equals": "Enabled"
        },
        "deployment": {
            "properties": {
                "mode": "incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {
                        "fullDbName": {
                            "type": "string"
                        }
                    },
                    "resources": [{
                        "name": "[concat(parameters('fullDbName'), '/current')]",
                        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
                        "apiVersion": "2014-04-01",
                        "properties": {
                            "status": "Enabled"
                        }
                    }]
                },
                "parameters": {
                    "fullDbName": {
                        "value": "[field('fullName')]"
                    }
                }
            }
        }
    }
}

EnforceOPAConstraintEnforceOPAConstraint

Cet effet est utilisé avec une définition de stratégie mode de Microsoft.Kubernetes.Data.This effect is used with a policy definition mode of Microsoft.Kubernetes.Data. Il est utilisé pour transmettre les règles de contrôle d’admission de Gatekeeper v3 définies avec le Framework de contraintes d’OPA à Open Policy Agent (OPA) aux clusters Kubernetes auto-gérés sur Azure.It's used to pass Gatekeeper v3 admission control rules defined with OPA Constraint Framework to Open Policy Agent (OPA) to self-managed Kubernetes clusters on Azure.

Notes

Le moteur Azure Policy pour Azure Kubernetes Service (AKS) est en préversion publique. Il ne prend charge que les définitions de stratégie intégrées.Azure Policy for AKS Engine is in Public Preview and only supports built-in policy definitions.

Évaluation d’EnforceOPAConstraintEnforceOPAConstraint evaluation

Le contrôleur d’admission Open Policy Agent évalue les nouvelles requêtes du cluster en temps réel.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. Toutes les 5 minutes, une analyse complète du cluster est réalisée, et les résultats sont renvoyés sur Azure Policy.Every 5 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Propriétés d’EnforceOPAConstraintEnforceOPAConstraint properties

La propriété details de l’effet EnforceOPAConstraint contient les sous-propriétés qui décrivent la règle de contrôle d’admission de Gatekeeper v3.The details property of the EnforceOPAConstraint effect has the subproperties that describe the Gatekeeper v3 admission control rule.

  • constraintTemplate [obligatoire]constraintTemplate [required]
    • Modèle de contrainte CustomResourceDefinition (CRD) qui définit de nouvelles contraintes.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. Le modèle définit la logique Rego, le schéma de contrainte et les paramètres de contrainte transmis via des valeurs d’Azure Policy.The template defines the Rego logic, the Constraint schema, and the Constraint parameters which are passed via values from Azure Policy.
  • constraint [obligatoire]constraint [required]
    • Implémentation CRD du modèle de contrainte.The CRD implementation of the Constraint template. Utilise des paramètres transmis via des valeurs telles que {{ .Values.<valuename> }}.Uses parameters passed via values as {{ .Values.<valuename> }}. Dans l’exemple ci-dessous, il s’agirait de {{ .Values.cpuLimit }} et {{ .Values.memoryLimit }}.In the example below, this would be {{ .Values.cpuLimit }} and {{ .Values.memoryLimit }}.
  • valeurs [facultatif]values [optional]
    • Définit des paramètres et valeurs à transmettre à la contrainte.Defines any parameters and values to pass to the Constraint. Chaque valeur doit exister dans le modèle de contrainte CRD.Each value must exist in the Constraint template CRD.

Exemple EnforceRegoPolicyEnforceRegoPolicy example

Exemple : Règle de contrôle d’admission de Gatekeeper v3 pour définir les limites de ressources de mémoire et d’UC du conteneur dans le moteur AKS.Example: Gatekeeper v3 admission control rule to set container CPU and memory resource limits in AKS Engine.

"if": {
    "allOf": [
        {
            "field": "type",
            "in": [
                "Microsoft.ContainerService/managedClusters",
                "AKS Engine"
            ]
        },
        {
            "field": "location",
            "equals": "westus2"
        }
    ]
},
"then": {
    "effect": "enforceOPAConstraint",
    "details": {
        "constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/template.yaml",
        "constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/constraint.yaml",
        "values": {
            "cpuLimit": "[parameters('cpuLimit')]",
            "memoryLimit": "[parameters('memoryLimit')]"
        }
    }
}

EnforceRegoPolicyEnforceRegoPolicy

Cet effet est utilisé avec une définition de stratégie mode de Microsoft.ContainerService.Data.This effect is used with a policy definition mode of Microsoft.ContainerService.Data. Il sert à transmettre des règles de contrôle d’admission de Gatekeeper v2 définies avec Rego à Open Policy Agent (OPA) sur Azure Kubernetes Service.It's used to pass Gatekeeper v2 admission control rules defined with Rego to Open Policy Agent (OPA) on Azure Kubernetes Service.

Notes

Azure Policy pour AKS est en préversion limitée et prend uniquement en charge les définitions de stratégie intégrées.Azure Policy for AKS is in Limited Preview and only supports built-in policy definitions

Évaluation d’EnforceRegoPolicyEnforceRegoPolicy evaluation

Le contrôleur d’admission Open Policy Agent évalue les nouvelles requêtes du cluster en temps réel.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. Toutes les 5 minutes, une analyse complète du cluster est réalisée, et les résultats sont renvoyés sur Azure Policy.Every 5 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Propriétés d’EnforceRegoPolicyEnforceRegoPolicy properties

La propriété details de l’effet EnforceRegoPolicy contient les sous-propriétés qui décrivent la règle de contrôle d’admission Gatekeeper v2.The details property of the EnforceRegoPolicy effect has the subproperties that describe the Gatekeeper v2 admission control rule.

  • policyId [required]policyId [required]
    • Nom unique transmis en tant que paramètre à la règle de contrôle d’admission Rego.A unique name passed as a parameter to the Rego admission control rule.
  • policy [required]policy [required]
    • Spécifie l’URI de la règle de contrôle d’admission Rego.Specifies the URI of the Rego admission control rule.
  • policyParameters [optional]policyParameters [optional]
    • Définit des paramètres et des valeurs à transmettre à la stratégie Rego.Defines any parameters and values to pass to the rego policy.

Exemple EnforceRegoPolicyEnforceRegoPolicy example

Exemple : Règle de contrôle d’admission Gatekeeper v2 pour autoriser uniquement les images de conteneur spécifiées dans AKS.Example: Gatekeeper v2 admission control rule to allow only the specified container images in AKS.

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.ContainerService/managedClusters"
        },
        {
            "field": "location",
            "equals": "westus2"
        }
    ]
},
"then": {
    "effect": "EnforceRegoPolicy",
    "details": {
        "policyId": "ContainerAllowedImages",
        "policy": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/KubernetesService/container-allowed-images/limited-preview/gatekeeperpolicy.rego",
        "policyParameters": {
            "allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]"
        }
    }
}

Superposition de stratégiesLayering policies

Une ressource peut subir les effets de plusieurs affectations.A resource may be impacted by several assignments. Ces affectations peuvent se situer dans la même portée ou dans des portées différentes.These assignments may be at the same scope or at different scopes. Chaque affectation est également susceptible d’avoir un effet différent.Each of these assignments is also likely to have a different effect defined. La condition et l’effet de chaque stratégie sont évalués indépendamment.The condition and effect for each policy is independently evaluated. Par exemple :For example:

  • Stratégie 1Policy 1
    • Restreint l’emplacement de la ressource à 'westus'Restricts resource location to 'westus'
    • Affectée à l’abonnement AAssigned to subscription A
    • Effet DenyDeny effect
  • Stratégie 2Policy 2
    • Restreint l’emplacement de la ressource à 'eastus'Restricts resource location to 'eastus'
    • Affectée au groupe de ressources B de l’abonnement AAssigned to resource group B in subscription A
    • Effet AuditAudit effect

Cette configuration génère le résultat suivant :This setup would result in the following outcome:

  • Toute ressource figurant déjà dans le groupe de ressources B dans 'eastus' est marquée comme conforme à la stratégie 2 et comme non conforme à la stratégie 1Any resource already in resource group B in 'eastus' is compliant to policy 2 and non-compliant to policy 1
  • Toute ressource figurant déjà dans le groupe de ressources B mais pas dans 'eastus' est marquée comme non conforme à la stratégie 2 et comme non conforme à la stratégie 1 si elle ne figure pas dans 'westus'Any resource already in resource group B not in 'eastus' is non-compliant to policy 2 and non-compliant to policy 1 if not in 'westus'
  • Toute nouvelle ressource figurant dans l’abonnement A mais pas dans 'westus' est refusée par la stratégie 1Any new resource in subscription A not in 'westus' is denied by policy 1
  • Toute nouvelle ressource de l’abonnement A et du groupe de ressources B dans 'westus' est créée et non conforme à la stratégie 2Any new resource in subscription A and resource group B in 'westus' is created and non-compliant on policy 2

Si la stratégie 1 et la stratégie 2 avaient pour effet Deny, le scénario serait le suivant :If both policy 1 and policy 2 had effect of deny, the situation changes to:

  • Toute ressource figurant déjà dans le groupe de ressources B mais pas dans 'eastus' est non conforme à la stratégie 2Any resource already in resource group B not in 'eastus' is non-compliant to policy 2
  • Toute ressource figurant déjà dans le groupe de ressources B mais pas dans 'westus' est non conforme à la stratégie 1Any resource already in resource group B not in 'westus' is non-compliant to policy 1
  • Toute nouvelle ressource figurant dans l’abonnement A mais pas dans 'westus' est refusée par la stratégie 1Any new resource in subscription A not in 'westus' is denied by policy 1
  • Toute nouvelle ressource du groupe de ressources B de l’abonnement A est refuséeAny new resource in resource group B of subscription A is denied

Chaque affectation est évaluée individuellement.Each assignment is individually evaluated. Par conséquent, une ressource ne peut pas passer en cas d’écart en raison de différences dans la portée.As such, there isn't an opportunity for a resource to slip through a gap from differences in scope. La superposition de stratégies ou le chevauchement de stratégies est considéré comme cumulatif et le plus restrictif.The net result of layering policies or policy overlap is considered to be cumulative most restrictive. Par exemple, si les stratégies 1 et 2 ont un effet Deny, une ressource est bloquée par les stratégies qui se chevauchent et qui sont en conflit.As an example, if both policy 1 and 2 had a deny effect, a resource would be blocked by the overlapping and conflicting policies. Si vous avez toujours besoin que la ressource soit créée dans la portée cible, révisez les exclusions de chaque affectation pour vérifier que les bonnes stratégies affectent les bonnes portées.If you still need the resource to be created in the target scope, review the exclusions on each assignment to validate the right policies are affecting the right scopes.

Étapes suivantesNext steps