Политика 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
Свойство details
modify
эффекта имеет все вложенные свойства, определяющие разрешения, необходимые для исправления, и operations
используемые для добавления, обновления или удаления значений тегов.
roleDefinitionIds
(обязательно)- Это свойство должно содержать массив строк, которые соответствуют идентификатору роли управления доступом на основе ролей, доступному для определенной подписки. Дополнительные сведения см. в разделе Настройка определения политики.
- Определенная роль должна включать все операции, предоставленные участнику роли Contributor.
conflictEffect
(необязательно)- Определяет, какое определение политики "выигрывает", если несколько определений политики изменяют одно и то же свойство или когда
modify
операция не работает над указанным псевдонимом.- Для новых или обновленных ресурсов приоритет имеет определение политики с действием deny. Определения политик с аудитом пропускают все
operations
. Если несколько определений политики имеют эффект запрета, запрос отклоняется как конфликт. Если все определения политик имеют аудит, то никакиеoperations
из конфликтующих определений политики обрабатываются. - Для существующих ресурсов, если несколько определений политики имеют эффект запрета, состояние соответствия конфликтуется. Если одно или меньше определений политики имеет эффект запрета, каждое назначение возвращает состояние соответствия несоответствующим требованиям.
- Для новых или обновленных ресурсов приоритет имеет определение политики с действием deny. Определения политик с аудитом пропускают все
- Возможные значения: 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
}
]
}
}
Следующие шаги
- Изучите примеры на странице примеров Политики Azure.
- Изучите статью о структуре определения Политики Azure.
- Узнайте о программном создании политик.
- Узнайте, как получать данные о соответствии.
- Узнайте, как исправлять несоответствующие ресурсы.
- Просмотрите группы управления Azure.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по