Partilhar via


Efeito auditIfNotExists de definições de Política do Azure

O auditIfNotExists efeito permite a auditoria de recursos relacionados ao recurso que corresponde à if condição, mas não têm as propriedades especificadas no details da then condição.

Avaliação AuditIfNotExists

auditIfNotExists é executado depois que um Provedor de Recursos processou uma solicitação de recurso de criação ou atualização e retornou um código de status de sucesso. A auditoria ocorre se não houver recursos relacionados ou se os recursos definidos por ExistenceCondition não forem avaliados como verdadeiros. Para recursos novos e atualizados, a Política do Azure adiciona uma Microsoft.Authorization/policies/audit/action operação ao log de atividades e marca o recurso como não compatível. Quando acionado, o recurso que satisfez a if condição é o recurso marcado como não compatível.

Propriedades AuditIfNotExists

A details propriedade 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 if recurso de condição, a política consultará recursos deste type dentro do escopo do recurso avaliado. Caso contrário, as consultas de política dentro do mesmo grupo de recursos ou assinatura que o recurso avaliado, dependendo do existenceScope.
  • name (facultativo)
    • 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 os valores de condição para if.field.type e then.details.type correspondem, então name torna-se necessário e deve ser [field('name')], ou [field('fullName')] para um recurso filho. No entanto, deve ser considerado um efeito de auditoria .

Nota

type e name segmentos 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 (facultativo)
    • 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 abaixo do if recurso de condição.
    • O padrão é o if grupo de recursos do recurso de condição.
  • existenceScope (facultativo)
    • Os valores permitidos são Subscription e ResourceGroup.
    • Define o escopo de onde buscar o recurso relacionado a ser correspondido.
    • Não se aplica se type for um recurso que estaria abaixo do if recurso de condição.
    • Para ResourceGroup, limitaria ao grupo de recursos em resourceGroupName se especificado. Se resourceGroupName não for especificado, limitará ao if grupo de recursos do recurso de condição, que é o comportamento padrão.
    • Para Assinatura, consulta toda a assinatura para o recurso relacionado. O escopo da atribuição deve ser definido como assinatura ou superior para uma avaliação adequada.
    • O padrão é ResourceGroup.
  • evaluationDelay (facultativo)
    • Especifica quando a existência dos recursos relacionados deve ser avaliada. O atraso é usado apenas para avaliações que são resultado de uma solicitação de recurso de criação ou atualização.
    • 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 do provisionamento do recurso que foi avaliado na condição da regra de if política. AfterProvisioning é executado após a conclusão do provisionamento, independentemente do resultado. O provisionamento que leva mais de seis horas é tratado como uma falha ao determinar atrasos na avaliação do AfterProvisioning .
    • O padrão é PT10M (10 minutos).
    • Especificar um longo atraso de avaliação pode fazer com que o estado de conformidade registrado do recurso não seja atualizado até o próximo gatilho de avaliação.
  • existenceCondition (facultativo)
    • Se não for especificado, qualquer recurso relacionado de type satisfaz o efeito e não aciona a auditoria.
    • Usa a mesma linguagem que a regra de política para a if condição, mas é avaliado em relação a cada recurso relacionado individualmente.
    • Se qualquer recurso relacionado correspondente for avaliado como verdadeiro, o efeito será satisfeito e não acionará a auditoria.
    • Pode usar [field()] para verificar a if equivalência com valores na condição.
    • Por exemplo, pode ser usado para validar que o recurso pai (na if condição) 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, em seguida, audita quando falta.

{
  "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óximos passos