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çãoif
, a política consultará os recursos dessetype
no escopo do recurso avaliado. Caso contrário, a política consultará dentro do mesmo grupo de recursos ou assinatura como recurso avaliado, dependendo doexistenceScope
.
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
ethen.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çãoif
. - 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çãoif
. - Para ResourceGroup, limitaria ao grupo de recursos em
resourceGroupName
, se especificado. SeresourceGroupName
não for especificado, limitará ao grupo de recursos do recurso de condiçãoif
, 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.
- Se não for especificado, todos os recursos relacionados de
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
- Examine os exemplos em amostras do Azure Policy.
- Revise a estrutura de definição do Azure Policy.
- Entenda como criar políticas de forma programática.
- Saiba como obter dados de conformidade.
- Saiba como corrigir recursos fora de conformidade.
- Examine os grupos de gerenciamento do Azure.