Поделиться через


Эффект auditIfNotExists в определениях политики Azure

Эффект auditIfNotExists позволяет проверять ресурсы , связанные с ресурсом, соответствующим if условию, но не имеют свойств, указанных в details условии then .

Оценка функции AuditIfNotExists

auditIfNotExists выполняется после обработки запроса на создание или обновление ресурса поставщика ресурсов и возвращает код состояния успешного выполнения. Аудит проводится, если нет связанных ресурсов или если ресурсы, определённые ExistenceCondition, не оцениваются как истинные. Для новых и обновленных ресурсов политика Azure добавляет Microsoft.Authorization/policies/audit/action операцию в журнал действий и помечает ресурс как несоответствующий. При активации ресурс if , удовлетворяющий условию, является ресурсом, помеченным как несоответствующий.

Свойства AuditIfNotExists

Свойство details эффектов AuditIfNotExists имеет все подсвойства, которые определяют соответствующие ресурсы для сопоставления.

  • type (обязательно)
    • Указывает тип связанного ресурса для соответствия.
    • Если type является подтипом ресурса if условия, политика запрашивает ресурсы этого type в рамках области оцениваемого ресурса. В противном случае запросы политики в той же группе ресурсов или подписке, что и оцененного ресурса, зависят от existenceScope.
  • name (необязательно)
    • Указывает точное имя ресурса для сопоставления и приводит к тому, что политика получает один конкретный ресурс вместо всех ресурсов указанного типа.
    • Если значения условий для if.field.type и then.details.type совпадают, то name становится обязательным и должен быть [field('name')], или [field('fullName')] для дочернего ресурса. Однако вместо этого следует учитывать эффект аудита .

Примечание.

type и name сегменты можно объединить для извлечения вложенных ресурсов в общем виде.

Чтобы получить определенный ресурс, можно использовать "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" и "name": "parentResourceName/nestedResourceName".

Чтобы получить коллекцию вложенных ресурсов, вместо последнего сегмента имени можно указать подстановочный знак ?. Например, "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" и "name": "parentResourceName/?". Это можно объединить с функциями полей для доступа к ресурсам, связанным с вычисленным ресурсом, например "name": "[concat(field('name'), '/?')]".

  • resourceGroupName (необязательно)
    • Позволяет сопоставить связанный ресурс из другой группы ресурсов.
    • Не применяется, если type это ресурс, который будет находиться под ресурсом if условия.
    • По умолчанию используется группа ресурсов ресурса условия if.
  • existenceScope (необязательно)
    • Допустимые значения : Subscription и ResourceGroup.
    • Задает область, из которой следует получить связанный ресурс для соответствия.
    • Не применяется, если type является ресурсом, который будет находиться под ресурсом if условия.
    • Для ResourceGroup ограничение будет применено к группе ресурсов, если resourceGroupName задано. Если resourceGroupName не указан, будет ограничено группой ресурсов условия if, что соответствует поведению по умолчанию.
    • Для подписки запрашивает всю подписку для связанного ресурса. Охват задачи должен быть установлен на уровне подписки или выше для правильной оценки.
    • По умолчанию используется ResourceGroup.
  • evaluationDelay (необязательно)
    • Указывает, когда необходимо оценить существование связанных ресурсов. Задержка используется только для вычислений, которые являются результатом запроса на создание или обновление ресурса.
    • Допустимые значения: AfterProvisioning, AfterProvisioningFailureAfterProvisioningSuccessили длительность ISO 8601 в диапазоне от 0 до 360 минут.
    • Значения AfterProvisioning проверяют результат подготовки ресурса, который был оценен в условии правила политики if. AfterProvisioning выполняется после завершения подготовки, независимо от результата. При определении задержек оценки AfterProvisioning, подготовка, которая занимает более шести часов, рассматривается как сбой.
    • Значение по умолчанию — PT10M 10 минут.
    • Указание длительной задержки оценки может привести к тому, что зарегистрированное состояние соответствия ресурса не обновляется до следующего триггера оценки.
  • existenceCondition (необязательно)
    • Если это не указано, то любой связанный ресурс type соответствует действию и не активирует аудит.
    • Использует тот же язык, что и правило политики для if условия, но оценивается по отдельности для каждого связанного ресурса.
    • Если любой соответствующий связанный ресурс оценивается как истинный, эффект удовлетворен и не активирует аудит.
    • Можно использовать [field()] для проверки эквивалентности со значениями в условии if .
    • Например, можно использовать для проверки того, что родительский ресурс (в if условии) находится в том же расположении ресурса, что и соответствующий связанный ресурс.

Пример AuditIfNotExists

Пример: Вычисляет виртуальные машины, чтобы определить, существует ли расширение защиты от вредоносных программ, а затем проводит аудит при отсутствии.

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

Дальнейшие действия