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


Политика Azure определения изменяют эффект

Эффект modify используется для добавления, обновления или удаления свойств или тегов в подписке или ресурсе во время создания или обновления. Распространенный пример — обновление тегов для таких ресурсов, как costCenter. Существующие несоответствующие ресурсы можно исправить, активировав задачу исправления. Одно правило Modify может иметь любое количество операций. Для назначения политик с заданным эффектом Modify требуется управляемое удостоверение для исправления.

Эффект modify поддерживает следующие операции:

  • Добавление, замена или удаление тегов ресурсов. Для тегов политика "Изменить" должна иметь indexed режим, если целевой ресурс не является группой ресурсов.
  • Добавьте или замените значение типа управляемого удостоверения (identity.type) виртуальных машин и Масштабируемые наборы виртуальных машин. Можно изменить только виртуальные identity.type машины или Масштабируемые наборы виртуальных машин.
  • Добавление или замена значений определенных псевдонимов.
    • Используйте Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' } Azure PowerShell 4.6.0 или более поздней версии, чтобы получить список псевдонимов, с которыми можно использовать modify.

Внимание

Если вы управляете тегами, рекомендуется использовать "Изменить" вместо "Добавить как изменение" предоставляет больше типов операций и возможность исправления существующих ресурсов. Однако, если вы не можете создать управляемое удостоверение или если Modify еще не поддерживает псевдоним для свойства ресурса, рекомендуется использовать Append.

Оценка Modify

Modify выполняет оценку до обработки запроса поставщиком ресурсов во время создания или обновления ресурса. Операции modify применяются к содержимому запроса при if выполнении условия правила политики. Каждая modify операция может указать условие, определяющее, когда оно применяется. Операции с вычислениями ложных условий пропускаются.

При указании псевдонима выполняется больше проверка, чтобы убедиться, что modify операция не изменяет содержимое запроса таким образом, чтобы поставщик ресурсов отклонить его:

  • Свойство, которое сопоставляется псевдонимом, помечается как модификатор в версии API запроса.
  • Тип маркера в modify операции соответствует ожидаемому типу маркера для свойства в версии API запроса.

Если одно из этих проверка завершается ошибкой, оценка политики возвращается к указанному conflictEffectпараметру.

Внимание

Рекомендуется, чтобы определения Modify, включающие псевдонимы, использовали эффект конфликтааудита, чтобы избежать сбоев запросов с использованием версий API, в которых сопоставленное свойство не является изменяемым. Если одинаковый псевдоним ведет себя по-разному между версиями API, операции условного изменения можно использовать для определения операции, используемой modify для каждой версии API.

Если определение политики, использующее modify эффект, выполняется как часть цикла оценки, он не вносит изменения в ресурсы, которые уже существуют. Вместо этого он помечает любой ресурс, соответствующий условию if , как несоответствующий.

Свойства Modify

Свойство detailsmodify эффекта имеет все вложенные свойства, определяющие разрешения, необходимые для исправления, и operations используемые для добавления, обновления или удаления значений тегов.

  • roleDefinitionIds (обязательно)
    • Это свойство должно содержать массив строк, которые соответствуют идентификатору роли управления доступом на основе ролей, доступному для определенной подписки. Дополнительные сведения см. в разделе Настройка определения политики.
    • Определенная роль должна включать все операции, предоставленные участнику роли Contributor.
  • conflictEffect (необязательно)
    • Определяет, какое определение политики "выигрывает", если несколько определений политики изменяют одно и то же свойство или когда modify операция не работает над указанным псевдонимом.
      • Для новых или обновленных ресурсов приоритет имеет определение политики с действием deny. Определения политик с аудитом пропускают все operations. Если несколько определений политики имеют эффект запрета, запрос отклоняется как конфликт. Если все определения политик имеют аудит, то никакие operations из конфликтующих определений политики обрабатываются.
      • Для существующих ресурсов, если несколько определений политики имеют эффект запрета, состояние соответствия конфликтуется. Если одно или меньше определений политики имеет эффект запрета, каждое назначение возвращает состояние соответствия несоответствующим требованиям.
    • Возможные значения: audit, deny, disabled.
    • Значение по умолчанию: deny.
  • operations (обязательно)
    • Массив всех операций тегов, которые должны быть выполнены при сопоставлении ресурсов.
    • Вариантов размещения:
      • operation (обязательно)
        • Определяет, какое действие следует предпринять с совпавшим ресурсом. Возможные варианты: addOrReplace, Add, Remove. Добавление ведет себя аналогично эффекту добавления .
      • field (обязательно)
        • Добавляемый, заменяемый или удаляемый тег Имена тегов должны соответствовать тому же соглашению об именовании, что и другие поля.
      • value (необязательно)
        • Задаваемое значение тега.
        • Это свойство является обязательным, если operation это addOrReplace или Add.
      • condition (необязательно)
        • Строка, содержащая выражение языка Политики Azure с функциями политики, результатом оценки которого может быть значение true или false.
        • Не поддерживаются следующие функции политики: field(), resourceGroup(), subscription().

Операции Modify

Массив operations свойств позволяет изменять несколько тегов по-разному от одного определения политики. Каждая операция состоит из operationсвойств fieldи value свойств. Определяет operation , что выполняет задача исправления с тегами, field определяет, какой тег изменен, и value определяет новый параметр для этого тега. В следующем примере вносятся следующие изменения тегов.

  • Задает для тега environment значение Test, даже если оно уже существует с другим значением.
  • Удаляет тег TempResource.
  • Задает тег Dept для параметра политики DeptName, настроенного для назначения политики.
"details": {
  ...
  "operations": [
    {
      "operation": "addOrReplace",
      "field": "tags['environment']",
      "value": "Test"
    },
    {
      "operation": "Remove",
      "field": "tags['TempResource']",
    },
    {
      "operation": "addOrReplace",
      "field": "tags['Dept']",
      "value": "[parameters('DeptName')]"
    }
  ]
}

Свойство operation имеет следующие параметры:

Операция Description
addOrReplace Добавляет в ресурс заданное свойство или тег и значение, даже если это свойство или тег уже существует с другим значением.
add Добавляет в ресурс заданное свойство или тег и значение.
remove Удаляет из ресурса заданное свойство или тег.

Примеры Modify

Пример 1. Добавление тега environment и замена существующих environment тегов на "Test":

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
    ],
    "operations": [
      {
        "operation": "addOrReplace",
        "field": "tags['environment']",
        "value": "Test"
      }
    ]
  }
}

Пример 2. Удаление тега env и добавление тега environment или замена существующих environment тегов параметризованным значением:

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
    ],
    "conflictEffect": "deny",
    "operations": [
      {
        "operation": "Remove",
        "field": "tags['env']"
      },
      {
        "operation": "addOrReplace",
        "field": "tags['environment']",
        "value": "[parameters('tagValue')]"
      }
    ]
  }
}

Пример 3. Убедитесь, что учетная запись хранения не разрешает общедоступный доступ к BLOB-объектам, modify операция применяется только при оценке запросов с версией API больше или равно 2019-04-01:

"then": {
  "effect": "modify",
  "details": {
    "roleDefinitionIds": [
      "/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
    ],
    "conflictEffect": "audit",
    "operations": [
      {
        "condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
        "operation": "addOrReplace",
        "field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
        "value": false
      }
    ]
  }
}

Следующие шаги