Compartilhar via


Efeito auditIfNotExists das definições do Azure Policy

O efeito auditIfNotExists habilita a auditoria de recursos relacionados ao recurso que corresponde à condição if, mas não tem as propriedades especificadas em details da condição then.

Avaliação de AuditIfNotExists

auditIfNotExists é executado depois de um provedor de recursos ter tratado uma solicitação de criação ou atualização de recurso e ter retornado um código de status de êxito. A auditoria ocorre quando não há recursos relacionados ou se os recursos definidos por ExistenceCondition não são avaliados como true. Em recursos novos e atualizados, o Azure Policy adiciona uma operação Microsoft.Authorization/policies/audit/action ao log de atividades e marca o recurso como fora de conformidade. Quando disparado, o recurso que atendeu à condição if é o recurso marcado como não compatível.

Propriedades de AuditIfNotExists

A propriedade details dos efeitos AuditIfNotExists tem todas as subpropriedades que definem os recursos relacionados a serem correspondidos.

  • type (obrigatório)
    • Especifica o tipo do recurso relacionado a ser correspondido.
    • Se type for um tipo de recurso abaixo do recurso da condição if, a política consultará os recursos desse type no escopo do recurso avaliado. Caso contrário, a política consultará dentro do mesmo grupo de recursos ou assinatura como recurso avaliado, dependendo do existenceScope.
  • name (opcional)
    • Especifica o nome exato do recurso a ser correspondido e faz com que a política busque um recurso específico em vez de todos os recursos do tipo especificado.
    • Quando há correspondência entre os valores de condição if.field.type e then.details.type, name se torna obrigatório e deve ser [field('name')] ou [field('fullName')] para um recurso filho. No entanto, um efeito Audit deve ser considerado em seu lugar.

Observação

Os segmentos type e name podem ser combinados para recuperar genericamente recursos aninhados.

Para recuperar um recurso específico, você pode usar "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" e "name": "parentResourceName/nestedResourceName".

Para recuperar uma coleção de recursos aninhados, um caractere curinga ? pode ser fornecido no lugar do segmento de sobrenome. Por exemplo, "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" e "name": "parentResourceName/?". Isso pode ser combinado com funções de campo para acessar recursos relacionados ao recurso avaliado, como "name": "[concat(field('name'), '/?')]"."

  • resourceGroupName (opcional)
    • Permite que a correspondência do recurso relacionado venha de um grupo de recursos diferente.
    • Não se aplica se type for um recurso que estaria sob o recurso de condição if.
    • O padrão é o grupo de recursos do recurso de condição if.
  • existenceScope (opcional)
    • Os valores permitidos são Assinatura e ResourceGroup.
    • Define o escopo de onde buscar o recurso relacionado com o qual corresponder.
    • Não se aplica se type for um recurso que estaria sob o recurso de condição if.
    • Para ResourceGroup, limitaria ao grupo de recursos em resourceGroupName, se especificado. Se resourceGroupName não for especificado, limitará ao grupo de recursos do recurso de condição if, que é o comportamento padrão.
    • Para Assinatura, consulta a assinatura inteira para o recurso relacionado. O escopo de atribuição deve ser definido na assinatura ou superior para uma avaliação adequada.
    • O padrão é ResourceGroup.
  • evaluationDelay (opcional)
    • Especifica quando a existência dos recursos relacionados deve ser avaliada. O atraso é usado somente para avaliações que são resultado de uma solicitação de criação ou atualização de recurso.
    • Os valores permitidos são AfterProvisioning, AfterProvisioningSuccess, AfterProvisioningFailure ou uma duração ISO 8601 entre 0 e 360 minutos.
    • Os valores AfterProvisioning inspecionam o resultado de provisionamento do recurso que foi avaliado na condição if da regra de política. AfterProvisioning é executado após a conclusão do provisionamento, independentemente do resultado. O provisionamento que leva mais de 6 horas é tratado como uma falha ao determinar atrasos de avaliação de AfterProvisioning.
    • O padrão é PT10M (10 minutos).
    • A especificação de um atraso de avaliação longo pode fazer com que o estado de conformidade registrado do recurso não seja atualizado até o próximo gatilho de avaliação.
  • existenceCondition (opcional)
    • Se não for especificado, todos os recursos relacionados de type cumprem o efeito e não acionam a auditoria.
    • Usa a mesma linguagem que a regra de política para a condição if, mas é avaliado em relação a cada recurso relacionado individualmente.
    • Se algum recurso relacionado correspondente for avaliado como verdadeiro, o efeito será atendido e não acionará a auditoria.
    • Pode usar [field()] para verificar a equivalência com valores na condição if.
    • Por exemplo, pode ser usado para validar que o recurso pai (na condição if) está no mesmo local do recurso que o recurso relacionado correspondente.

Exemplo de AuditIfNotExists

Exemplo: avalia máquinas virtuais para determinar se a extensão antimalware existe e faz auditorias quando ausente.

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

Próximas etapas