Effet auditIfNotExists des définitions Azure Policy

L’effet auditIfNotExists active l’audit des ressources liées à la ressource qui correspond à la condition if, mais dont les propriétés ne sont pas spécifiées dans les details de la condition then.

Évaluation AuditIfNotExists

auditIfNotExists s’exécute après qu’un fournisseur de ressources a traité une demande de création ou de mise à jour d’une ressource et a retourné un code d’état de réussite. L’audit se produit s’il n’existe pas de ressources associées ou si les ressources définies par ExistenceCondition ne s’évaluent pas en true. Pour les nouvelles ressources et celles mises à jour, Azure Policy ajoute une opération Microsoft.Authorization/policies/audit/action dans le journal d’activité et marque la ressource comme non conforme. Quand il est déclenché, la ressource qui a rempli la condition if est la ressource qui est marquée comme étant non conforme.

Propriétés d’AuditIfNotExists

La propriété details des effets AuditIfNotExists a toutes les sous-propriétés qui définissent les ressources associées à mettre en correspondance.

  • type (requis)
    • Spécifie le type de la ressource connexe à évaluer.
    • Si type est un type de ressource sous la ressource de la condition if, la stratégie interroge les ressources de ce type dans l’étendue de la ressource évaluée. Sinon, la stratégie interroge au sein du même groupe de ressources ou du même abonnement que la ressource évaluée en fonction de la existenceScope.
  • name (facultatif)
    • 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é.
    • Quand les valeurs de la condition pour if.field.type et then.details.type correspondent, name devient obligatoire et doit être [field('name')], ou [field('fullName')] pour une ressource enfant. Toutefois, un effet audit doit être considéré à la place.

Remarque

Les segments type et name peuvent être combinés pour récupérer des ressources imbriquées de manière générique.

Pour récupérer une ressource spécifique, vous pouvez utiliser "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" et "name": "parentResourceName/nestedResourceName".

Pour récupérer une collection de ressources imbriquées, un caractère ? générique peut être fourni à la place du segment de nom. Par exemple : "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" et "name": "parentResourceName/?". Cela peut être combiné avec des fonctions de champ pour accéder aux ressources liées à la ressource évaluée, telles que "name": "[concat(field('name'), '/?')]". »

  • resourceGroupName (facultatif)
    • Permet l’évaluation de la ressource connexe provenant d’un groupe de ressources différent.
    • Ne s’applique pas si type est une ressource qui se trouve sous la ressource de la condition if.
    • La valeur par défaut est le groupe de ressources de la ressource de la condition if.
  • existenceScope (facultatif)
    • Les valeurs autorisées sont Subscription et ResourceGroup.
    • Définit la portée d’où la ressource connexe évaluée est extraite.
    • Ne s’applique pas si type est une ressource qui se trouve sous la ressource de la condition if.
    • Pour ResourceGroup, limite le groupe de ressources dans resourceGroupName s’il est spécifié. Si resourceGroupName n’est pas spécifié, limite le groupe de ressources de la condition if, ce qui est le comportement par défaut.
    • Pour Subscription, le traitement interroge l’abonnement entier pour la ressource associée. L’étendue d’affectation doit être définie au niveau de l’abonnement ou supérieur pour une évaluation appropriée.
    • La valeur par défaut est ResourceGroup.
  • evaluationDelay (facultatif)
    • Spécifie à quel moment l’existence des ressources associées doit être évaluée. Le délai est utilisé uniquement pour les évaluations qui résultent d’une requête de création ou de mise à jour de ressource.
    • Les valeurs autorisées sont AfterProvisioning, AfterProvisioningSuccess, AfterProvisioningFailure ou une durée ISO 8601 comprise entre 0 et 360 minutes.
    • Les valeurs de AfterProvisioning inspectent le résultat du provisionnement de la ressource qui a été évaluée dans la condition if de la règle de stratégie. AfterProvisioning s’exécute une fois le provisionnement terminé, quel que soit le résultat. Un provisionnement qui prend plus de 6 heures est considéré comme un échec lors de la détermination des délais d’évaluation de AfterProvisioning.
    • La valeur par défaut est PT10M (10 minutes).
    • La spécification d’un délai d’évaluation long peut empêcher la mise à jour de l’état de conformité enregistré de la ressource jusqu’au prochain déclencheur d’évaluation.
  • existenceCondition (facultatif)
    • Si elle n’est pas spécifiée, les ressources associées de type satisfont à l’effet et ne déclenchent pas l’audit.
    • Utilise le même langage que la règle de stratégie pour la condition if, mais est évaluée individuellement pour chaque ressource associée.
    • Si une ressource connexe correspondante renvoie true, l’effet est satisfait et ne déclenche pas l’audit.
    • Peut utiliser [field()] pour vérifier l’équivalence avec les valeurs dans la condition if.
    • Par exemple, vous pouvez l’utiliser pour vérifier que la ressource parente (dans la condition if) se trouve dans le même emplacement de ressource que la ressource associée correspondante.

Exemple AuditIfNotExists

Exemple : évalue les machines virtuelles pour déterminer si l’extension Antimalware existe, puis effectue un audit si l’extension est absente.

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

Étapes suivantes