Сведения о действии политик AzureUnderstand Azure Policy effects

Каждое определение политики в Azure имеет один эффект.Each policy definition in Azure Policy has a single effect. Этот эффект определяет, что происходит при вычислении правила политики при сопоставлении.That effect determines what happens when the policy rule is evaluated to match. Действия по-разному влияют на новые, обновленные и имеющиеся ресурсы.The effects behave differently if they are for a new resource, an updated resource, or an existing resource.

В настоящее время в определении политики поддерживается следующие действия.These effects are currently supported in a policy definition:

Следующие эффекты являются устаревшими:The following effects are deprecated:

Важно!

Вместо енфорцеопаконстраинт или енфорцерегополици используйте режим " Аудит " и " запретить " в режиме поставщика ресурсов Microsoft.Kubernetes.Data .In place of the EnforceOPAConstraint or EnforceRegoPolicy effects, use audit and deny with Resource Provider mode Microsoft.Kubernetes.Data. Определения встроенных политик обновлены.The built-in policy definitions have been updated. При изменении существующих назначений политик для этих встроенных определений политик параметр Effect необходимо изменить на значение в обновленном списке allowedValues .When existing policy assignments of these built-in policy definitions are modified, the effect parameter must be changed to a value in the updated allowedValues list.

Порядок вычисленийOrder of evaluation

Запросы на создание или обновление ресурса сначала оцениваются политикой Azure.Requests to create or update a resource are evaluated by Azure Policy first. Политика Azure создает список всех назначений, которые применяются к ресурсу, а затем оценивает ресурс по каждому определению.Azure Policy creates a list of all assignments that apply to the resource and then evaluates the resource against each definition. В Диспетчер ресурсов режимеполитика Azure обрабатывает несколько эффектов перед передачей запроса соответствующему поставщику ресурсов.For a Resource Manager mode, Azure Policy processes several of the effects before handing the request to the appropriate Resource Provider. Этот порядок предотвращает ненужную обработку поставщиком ресурсов, если ресурс не соответствует специально разработанным элементам управления политики Azure.This order prevents unnecessary processing by a Resource Provider when a resource doesn't meet the designed governance controls of Azure Policy. В режиме поставщика ресурсовпоставщик ресурсов управляет вычислением и выходом и передает результаты в политику Azure.With a Resource Provider mode, the Resource Provider manages the evaluation and outcome and reports the results back to Azure Policy.

  • Действие Disabled проверяется первым. Таким образом определяется, нужно ли оценить правило политики.Disabled is checked first to determine if the policy rule should be evaluated.
  • Затем оцениваются Append и Modify.Append and Modify are then evaluated. Поскольку оба могут изменить запрос, а внесенное изменение может отменить вызов действия аудита или запрета.Since either could alter the request, a change made may prevent an audit or deny effect from triggering. Эти эффекты доступны только в режиме диспетчер ресурсов.These effects are only available with a Resource Manager mode.
  • Затем оценивается действие Deny (запрет).Deny is then evaluated. Запрет оценивается перед аудитом, чтобы нежелательный ресурс не заносился в журнал дважды.By evaluating deny before audit, double logging of an undesired resource is prevented.
  • Аудит вычисляется последним.Audit is evaluated last.

После того как поставщик ресурсов возвращает код успешного выполнения в запросе в режиме диспетчер ресурсов, помощью параметров auditifnotexists и DeployIfNotExists оценивают, требуется ли дополнительное ведение журнала соответствия или действие.After the Resource Provider returns a success code on a Resource Manager mode request, AuditIfNotExists and DeployIfNotExists evaluate to determine if additional compliance logging or action is required.

AppendAppend

Это действие используется для добавления полей к запрашиваемому ресурсу во время создания или обновления.Append is used to add additional fields to the requested resource during creation or update. Типичный пример — указание разрешенных IP-адресов для ресурса хранилища.A common example is specifying allowed IPs for a storage resource.

Важно!

Append предназначено для использования со свойствами, не являющимися тегами.Append is intended for use with non-tag properties. Несмотря на то что Append может добавлять теги к ресурсу во время запроса на создание или обновление, рекомендуется использовать Modify для тегов.While Append can add tags to a resource during a create or update request, it's recommended to use the Modify effect for tags instead.

Оценка добавленияAppend evaluation

Добавление оценивается до обработки запроса поставщиком ресурсов во время создания или обновления ресурса.Append evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. Это действие добавляет поля к ресурсу, если выполняется условие if правила политики.Append adds fields to the resource when the if condition of the policy rule is met. Если добавление приведет к замене значения в исходном запросе на другое значение, то оно работает как действие запрета и отклоняет запрос.If the append effect would override a value in the original request with a different value, then it acts as a deny effect and rejects the request. Чтобы добавить новое значение к имеющемуся массиву, используйте версию псевдонима [*] .To append a new value to an existing array, use the [*] version of the alias.

При запуске определения политики с использованием действия добавления в рамках цикла оценивания оно не меняет уже существующие ресурсы.When a policy definition using the append effect is run as part of an evaluation cycle, it doesn't make changes to resources that already exist. Вместо этого ресурсы, отвечающие условию if, отмечаются как несоответствующие.Instead, it marks any resource that meets the if condition as non-compliant.

Свойства добавленияAppend properties

Действие добавления содержит только обязательный массив details.An append effect only has a details array, which is required. Так как свойство details представляет собой массив, оно может принимать как одну, так и несколько пар поле/значение.As details is an array, it can take either a single field/value pair or multiples. Список допустимых полей представлен в статье, посвященной структуре определения.Refer to definition structure for the list of acceptable fields.

Примеры добавленияAppend examples

Пример 1: Одна пара поле/значение, использующая псевдоним не являющийся [*]псевдонимом со значением массива для установки правил IP-адресов учетной записи хранения.Example 1: Single field/value pair using a non-[*] alias with an array value to set IP rules on a storage account. Когда псевдоним без [*] находится в массиве, действие добавляет значение ко всему массиву.When the non-[*] alias is an array, the effect appends the value as the entire array. Если массив уже существует, из конфликта возникает событие отказа.If the array already exists, a deny event occurs from the conflict.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules",
        "value": [{
            "action": "Allow",
            "value": "134.5.0.0/21"
        }]
    }]
}

Пример 2. Одна пара поле/значение, использующая [*]псевдоним со значением массива для установки правил IP-адресов учетной записи хранения.Example 2: Single field/value pair using an [*] alias with an array value to set IP rules on a storage account. Путем использования [*] — псевдонима действие добавляет значение к потенциально имеющемуся массиву.By using the [*] alias, the effect appends the value to a potentially pre-existing array. Если массив еще не существует, он создается.If the array doesn't exist yet, it's created.

"then": {
    "effect": "append",
    "details": [{
        "field": "Microsoft.Storage/storageAccounts/networkAcls.ipRules[*]",
        "value": {
            "value": "40.40.40.40",
            "action": "Allow"
        }
    }]
}

АудитAudit

Аудит используется, чтобы создать предупреждение в журнале действий при оценке несоответствующего ресурса, но такое действие не останавливает запрос.Audit is used to create a warning event in the activity log when evaluating a non-compliant resource, but it doesn't stop the request.

Оценка аудитаAudit evaluation

Аудит — это последнее действие проверки политики при создании или обновлении ресурса.Audit is the last effect checked by Azure Policy during the creation or update of a resource. В диспетчер ресурсов режиме политика Azure отправляет ресурс поставщику ресурсов.For a Resource Manager mode, Azure Policy then sends the resource to the Resource Provider. Аудит работает одинаково для запроса ресурса и для цикла оценки.Audit works the same for a resource request and an evaluation cycle. Политика Azure добавляет операцию Microsoft.Authorization/policies/audit/action в журнал действий и помечает ресурс как несовместимый.Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log and marks the resource as non-compliant.

Свойства аудитаAudit properties

В режиме диспетчер ресурсов в результате аудита не предусмотрены дополнительные свойства, которые можно использовать в условии then определения политики.For a Resource Manager mode, the audit effect doesn't have any additional properties for use in the then condition of the policy definition.

Для режима поставщика ресурсов Microsoft.Kubernetes.Data в этот результат аудита имеет следующие дополнительные подсвойства. detailsFor a Resource Provider mode of Microsoft.Kubernetes.Data, the audit effect has the following additional subproperties of details.

  • констраинттемплате (обязательно)constraintTemplate (required)
    • Шаблон ограничения CustomResourceDefinition (CRD), который определяет новые ограничения.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. Этот шаблон определяет логику Rego, схему ограничения и параметры ограничения, которые передаются через значения из политики Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • ограничение (обязательно)constraint (required)
    • Реализация CRD шаблона ограничения.The CRD implementation of the Constraint template. Использует параметры, передаваемые через значения как {{ .Values.<valuename> }}.Uses parameters passed via values as {{ .Values.<valuename> }}. В примере 2 ниже приведены значения {{ .Values.excludedNamespaces }} и {{ .Values.allowedContainerImagesRegex }} .In example 2 below, these values are {{ .Values.excludedNamespaces }} and {{ .Values.allowedContainerImagesRegex }}.
  • значения (необязательно)values (optional)
    • Определяет все параметры и значения, передаваемые ограничению.Defines any parameters and values to pass to the Constraint. Каждое значение должно существовать в шаблоне ограничения CRD.Each value must exist in the Constraint template CRD.

Пример аудитаAudit example

Пример 1. Использование действия аудита для режимов диспетчер ресурсов.Example 1: Using the audit effect for Resource Manager modes.

"then": {
    "effect": "audit"
}

Пример 2. Использование действия аудита для режима поставщика ресурсов Microsoft.Kubernetes.Data .Example 2: Using the audit effect for a Resource Provider mode of Microsoft.Kubernetes.Data. Дополнительные сведения в подробностях определяют шаблон ограничения и CRD для использования в Kubernetes для ограничения разрешенных образов контейнеров.The additional information in details defines the Constraint template and CRD to use in Kubernetes to limit the allowed container images.

"then": {
    "effect": "audit",
    "details": {
        "constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml",
        "constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/constraint.yaml",
        "values": {
            "allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]",
            "excludedNamespaces": "[parameters('excludedNamespaces')]"
        }
    }
}

AuditIfNotExistsAuditIfNotExists

Помощью параметров auditifnotexists включает аудит ресурсов, связанных с ресурсом, который соответствует условию If , но не имеет свойств, указанных в сведениях о условии then .AuditIfNotExists enables auditing of resources related to the resource that matches the if condition, but don't have the properties specified in the details of the then condition.

Оценка AuditIfNotExistsAuditIfNotExists evaluation

Действие AuditIfNotExists выполняется после того, как поставщик ресурсов обрабатывает запрос на создание или обновление запрос ресурса и возвращает код состояния, указывающий на успешное выполнение.AuditIfNotExists runs after a Resource Provider has handled a create or update resource request and has returned a success status code. Этот аудит происходит только при отсутствии связанных ресурсов или в том случае, если для ресурсов, определенных в условии ExistenceCondition, не возвращается значение true.The audit occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true. Политика Azure добавляет операцию Microsoft.Authorization/policies/audit/action в журнал действий точно так же, как действие аудита.Azure Policy adds a Microsoft.Authorization/policies/audit/action operation to the activity log the same way as the audit effect. При вызове этого действия ресурс, соответствующий условию if, отмечается как несоответствующий.When triggered, the resource that satisfied the if condition is the resource that is marked as non-compliant.

Свойства AuditIfNotExistsAuditIfNotExists properties

Свойство details действия AuditIfNotExists содержит все дочерние свойства, определяющие связанные ресурсы для сопоставления.The details property of the AuditIfNotExists effects has all the subproperties that define the related resources to match.

  • Тип (обязательно)Type (required)
    • Указывает тип связанного ресурса для сопоставления.Specifies the type of the related resource to match.
    • Если details.type является типом ресурса в основе ресурса условия if, политика запрашивает ресурсы этого type в области вычисляемого ресурса.If details.type is a resource type underneath the if condition resource, the policy queries for resources of this type within the scope of the evaluated resource. В противном случае политики выполняет запрос в той же группе ресурсов, что и оцененный ресурс.Otherwise, policy queries within the same resource group as the evaluated resource.
  • Name (необязательный)Name (optional)
    • Указывает точное имя сопоставляемого ресурса. При этом политика получает определенный ресурс, а не все ресурсы указанного типа.Specifies the exact name of the resource to match and causes the policy to fetch one specific resource instead of all resources of the specified type.
    • Если значения условия для . Field. Type и then. Details. Type совпадают, то имя является обязательным и должно быть [field('name')] или [field('fullName')] для дочернего ресурса.When the condition values for if.field.type and then.details.type match, then Name becomes required and must be [field('name')], or [field('fullName')] for a child resource. Однако вместо этого следует учитывать действие audit.However, an audit effect should be considered instead.
  • ResourceGroupName (необязательный)ResourceGroupName (optional)
    • Позволяет сопоставить связанный ресурс из другой группы ресурсов.Allows the matching of the related resource to come from a different resource group.
    • Не применяется, если в свойстве type указан тип, относящийся к дочернему ресурсу для ресурса из условия if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • По умолчанию указывается группа ресурсов, в которую входит ресурс из условия if.Default is the if condition resource's resource group.
  • ExistenceScope (необязательный)ExistenceScope (optional)
    • Допустимые значения: Subscription и ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Задает область, из которой требуется получить связанный ресурс для сопоставления.Sets the scope of where to fetch the related resource to match from.
    • Не применяется, если в свойстве type указан тип, относящийся к дочернему ресурсу для ресурса из условия if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Если задано значение ResourceGroup, область ограничивается группой ресурсов, в которую входит ресурс из условия if, или группой ресурсов, указанной в свойстве ResourceGroupName.For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Если задано значение Subscription, запрос применяется ко всей подписке для связанного ресурса.For Subscription, queries the entire subscription for the related resource.
    • По умолчанию задано значение ResourceGroup.Default is ResourceGroup.
  • ExistenceCondition (необязательный)ExistenceCondition (optional)
    • Если это свойство не задано, действие применяется ко всем связанным ресурсам, тип которых соответствует свойству type, а аудит не выполняется.If not specified, any related resource of type satisfies the effect and doesn't trigger the audit.
    • Используется тот же язык, что и в правиле политики для условия if, но оно оценивается отдельно для каждого связанного ресурса.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Если при оценке какого-либо связанного ресурса возвращается значение true, то действие не вызывает аудит.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the audit.
    • С помощью функции [field()] можно проверять эквивалентность значениям из условия if.Can use [field()] to check equivalence with values in the if condition.
    • Например, можно убедиться, что родительский ресурс (из условия if) находится там же, где и соответствующий связанный ресурс.For example, could be used to validate that the parent resource (in the if condition) is in the same resource location as the matching related resource.

Пример AuditIfNotExistsAuditIfNotExists example

Пример Оценка виртуальных машин для поиска антивредоносного расширения с последующим аудитом при его отсутствии.Example: Evaluates Virtual Machines to determine if the Antimalware extension exists then audits when missing.

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

ЗапретDeny

Запрет используется, чтобы не пропускать запросы ресурсов, не соответствующие определенным стандартам, через определение политики. При этом запрос завершается с ошибкой.Deny is used to prevent a resource request that doesn't match defined standards through a policy definition and fails the request.

Оценка запретаDeny evaluation

При создании или обновлении сопоставленного ресурса в режиме диспетчер ресурсов deny запрещает запрос перед отправкой поставщику ресурсов.When creating or updating a matched resource in a Resource Manager mode, deny prevents the request before being sent to the Resource Provider. Запрос возвращает 403 (Forbidden).The request is returned as a 403 (Forbidden). На портале для развертывания, запрещенного в связи с назначением политики, отображается состояние "Запрещено".In the portal, the Forbidden can be viewed as a status on the deployment that was prevented by the policy assignment. Для режима поставщика ресурсов поставщик ресурсов управляет оценкой ресурса.For a Resource Provider mode, the resource provider manages the evaluation of the resource.

Во время оценки существующие ресурсы, которые соответствуют определению политики запрета, помечаются как несовместимые.During evaluation of existing resources, resources that match a deny policy definition are marked as non-compliant.

Свойства запретаDeny properties

В случае диспетчер ресурсовного режима, результат Deny не имеет дополнительных свойств для использования в условии then определения политики.For a Resource Manager mode, the deny effect doesn't have any additional properties for use in the then condition of the policy definition.

Для режима поставщика ресурсов Microsoft.Kubernetes.Data , результат DENY имеет следующие дополнительные вложенные свойства сведений.For a Resource Provider mode of Microsoft.Kubernetes.Data, the deny effect has the following additional subproperties of details.

  • констраинттемплате (обязательно)constraintTemplate (required)
    • Шаблон ограничения CustomResourceDefinition (CRD), который определяет новые ограничения.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. Этот шаблон определяет логику Rego, схему ограничения и параметры ограничения, которые передаются через значения из политики Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • ограничение (обязательно)constraint (required)
    • Реализация CRD шаблона ограничения.The CRD implementation of the Constraint template. Использует параметры, передаваемые через значения как {{ .Values.<valuename> }}.Uses parameters passed via values as {{ .Values.<valuename> }}. В примере 2 ниже приведены значения {{ .Values.excludedNamespaces }} и {{ .Values.allowedContainerImagesRegex }} .In example 2 below, these values are {{ .Values.excludedNamespaces }} and {{ .Values.allowedContainerImagesRegex }}.
  • значения (необязательно)values (optional)
    • Определяет все параметры и значения, передаваемые ограничению.Defines any parameters and values to pass to the Constraint. Каждое значение должно существовать в шаблоне ограничения CRD.Each value must exist in the Constraint template CRD.

Пример запретаDeny example

Пример 1. применение действия Deny к режимам диспетчер ресурсов.Example 1: Using the deny effect for Resource Manager modes.

"then": {
    "effect": "deny"
}

Пример 2. Использование действия Deny в режиме поставщика ресурсов Microsoft.Kubernetes.Data .Example 2: Using the deny effect for a Resource Provider mode of Microsoft.Kubernetes.Data. Дополнительные сведения в подробностях определяют шаблон ограничения и CRD для использования в Kubernetes для ограничения разрешенных образов контейнеров.The additional information in details defines the Constraint template and CRD to use in Kubernetes to limit the allowed container images.

"then": {
    "effect": "deny",
    "details": {
        "constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/template.yaml",
        "constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-allowed-images/constraint.yaml",
        "values": {
            "allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]",
            "excludedNamespaces": "[parameters('excludedNamespaces')]"
        }
    }
}

DeployIfNotExistsDeployIfNotExists

Как и AuditIfNotExists, определение политики DeployIfNotExists выполняет шаблон развертывания при соблюдении условия.Similar to AuditIfNotExists, a DeployIfNotExists policy definition executes a template deployment when the condition is met.

Примечание

Вложенные шаблоны поддерживаются с deployIfNotExists, но связанные шаблоны сейчас не поддерживаются.Nested templates are supported with deployIfNotExists, but linked templates are currently not supported.

Оценка DeployIfNotExistsDeployIfNotExists evaluation

Действие DeployIfNotExists выполняется в течении примерно 15 минут после того, как поставщик ресурсов обрабатывает запрос на создание или обновление запрос ресурса и возвращает код состояния, указывающий на успешное выполнение.DeployIfNotExists runs about 15 minutes after a Resource Provider has handled a create or update resource request and has returned a success status code. Шаблон развертывания появляется только при отсутствии связанных ресурсов или в том случае, если для ресурсов, определенных в условии ExistenceCondition, не возвращается значение true.A template deployment occurs if there are no related resources or if the resources defined by ExistenceCondition don't evaluate to true. Длительность развертывания зависит от сложности ресурсов, включенных в шаблон.The duration of the deployment depends on the complexity of resources included in the template.

В рамках цикла оценки ресурсы, соответствующие определениям политики с действием DeployIfNotExists, отмечаются как несоответствующие, но с ними не выполняется никаких действий.During an evaluation cycle, policy definitions with a DeployIfNotExists effect that match resources are marked as non-compliant, but no action is taken on that resource. Существующие несоответствующие ресурсы можно исправить, активировав задачу исправления.Existing non-compliant resources can be remediated with a remediation task.

Свойства DeployIfNotExistsDeployIfNotExists properties

Свойство details действия DeployIfNotExists содержит все дочерние свойства, определяющие связанные ресурсы для сопоставления и шаблон развертывания.The details property of the DeployIfNotExists effect has all the subproperties that define the related resources to match and the template deployment to execute.

  • Тип (обязательно)Type (required)

    • Указывает тип связанного ресурса для сопоставления.Specifies the type of the related resource to match.
    • Для начала совершается попытка получить дочерний ресурс для ресурса из условия if, а затем отправляются запросы в рамках той группы ресурсов, в которую входит ресурс из условия if.Starts by trying to fetch a resource underneath the if condition resource, then queries within the same resource group as the if condition resource.
  • Name (необязательный)Name (optional)

    • Указывает точное имя сопоставляемого ресурса. При этом политика получает определенный ресурс, а не все ресурсы указанного типа.Specifies the exact name of the resource to match and causes the policy to fetch one specific resource instead of all resources of the specified type.
    • Если значения условия для . Field. Type и then. Details. Type совпадают, то имя является обязательным и должно быть [field('name')] или [field('fullName')] для дочернего ресурса.When the condition values for if.field.type and then.details.type match, then Name becomes required and must be [field('name')], or [field('fullName')] for a child resource.
  • ResourceGroupName (необязательный)ResourceGroupName (optional)

    • Позволяет сопоставить связанный ресурс из другой группы ресурсов.Allows the matching of the related resource to come from a different resource group.
    • Не применяется, если в свойстве type указан тип, относящийся к дочернему ресурсу для ресурса из условия if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • По умолчанию указывается группа ресурсов, в которую входит ресурс из условия if.Default is the if condition resource's resource group.
    • Шаблон развертывания выполняется в группе ресурсов, соответствующей этому значению.If a template deployment is executed, it's deployed in the resource group of this value.
  • ExistenceScope (необязательный)ExistenceScope (optional)

    • Допустимые значения: Subscription и ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Задает область, из которой требуется получить связанный ресурс для сопоставления.Sets the scope of where to fetch the related resource to match from.
    • Не применяется, если в свойстве type указан тип, относящийся к дочернему ресурсу для ресурса из условия if.Doesn't apply if type is a resource that would be underneath the if condition resource.
    • Если задано значение ResourceGroup, область ограничивается группой ресурсов, в которую входит ресурс из условия if, или группой ресурсов, указанной в свойстве ResourceGroupName.For ResourceGroup, would limit to the if condition resource's resource group or the resource group specified in ResourceGroupName.
    • Если задано значение Subscription, запрос применяется ко всей подписке для связанного ресурса.For Subscription, queries the entire subscription for the related resource.
    • По умолчанию задано значение ResourceGroup.Default is ResourceGroup.
  • ExistenceCondition (необязательный)ExistenceCondition (optional)

    • Если это свойство не задано, действие применяется ко всем связанным ресурсам, тип которых соответствует свойству type, а развертывание не активируется.If not specified, any related resource of type satisfies the effect and doesn't trigger the deployment.
    • Используется тот же язык, что и в правиле политики для условия if, но оно оценивается отдельно для каждого связанного ресурса.Uses the same language as the policy rule for the if condition, but is evaluated against each related resource individually.
    • Если при оценке какого-либо связанного ресурса возвращается значение true, то действие не активирует развертывание.If any matching related resource evaluates to true, the effect is satisfied and doesn't trigger the deployment.
    • С помощью функции [field()] можно проверять эквивалентность значениям из условия if.Can use [field()] to check equivalence with values in the if condition.
    • Например, можно убедиться, что родительский ресурс (из условия if) находится там же, где и соответствующий связанный ресурс.For example, could be used to validate that the parent resource (in the if condition) is in the same resource location as the matching related resource.
  • роледефинитионидс (обязательно)roleDefinitionIds (required)

  • DeploymentScope (необязательно)DeploymentScope (optional)

    • Допустимые значения: Subscription и ResourceGroup.Allowed values are Subscription and ResourceGroup.
    • Задает тип инициируемого развертывания.Sets the type of deployment to be triggered. Subscription указывает на развертывание на уровне подписки, а ResourceGroup — на развертывание в группе ресурсов.Subscription indicates a deployment at subscription level, ResourceGroup indicates a deployment to a resource group.
    • Свойство location должно быть указано для объекта Deployment при использовании развертываний на уровне подписки.A location property must be specified in the Deployment when using subscription level deployments.
    • По умолчанию задано значение ResourceGroup.Default is ResourceGroup.
  • Развертывание (обязательно)Deployment (required)

    • Это свойство должно содержать полный шаблон развертывания, так как оно будет передано в API PUT Microsoft.Resources/deployments.This property should include the full template deployment as it would be passed to the Microsoft.Resources/deployments PUT API. Дополнительные сведения см. в документации по REST API развертываний.For more information, see the Deployments REST API.

    Примечание

    Все функции в свойстве Deployment оцениваются как компоненты шаблона, а не политики.All functions inside the Deployment property are evaluated as components of the template, not the policy. Исключение составляет свойство parameters, передающее значения из политики в шаблон.The exception is the parameters property that passes values from the policy to the template. Свойство value из этого раздела под именем параметра шаблона используется для передачи значения (см. fullDbName в примере DeployIfNotExists).The value in this section under a template parameter name is used to perform this value passing (see fullDbName in the DeployIfNotExists example).

Пример DeployIfNotExistsDeployIfNotExists example

Пример Оценка баз данных SQL Server, позволяющая определить, включен ли параметр transparentDataEncryption.Example: Evaluates SQL Server databases to determine if transparentDataEncryption is enabled. Если это не так, выполняется развертывание для включения.If not, then a deployment to enable is executed.

"if": {
    "field": "type",
    "equals": "Microsoft.Sql/servers/databases"
},
"then": {
    "effect": "DeployIfNotExists",
    "details": {
        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
        "name": "current",
        "roleDefinitionIds": [
            "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
            "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
        ],
        "existenceCondition": {
            "field": "Microsoft.Sql/transparentDataEncryption.status",
            "equals": "Enabled"
        },
        "deployment": {
            "properties": {
                "mode": "incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {
                        "fullDbName": {
                            "type": "string"
                        }
                    },
                    "resources": [{
                        "name": "[concat(parameters('fullDbName'), '/current')]",
                        "type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
                        "apiVersion": "2014-04-01",
                        "properties": {
                            "status": "Enabled"
                        }
                    }]
                },
                "parameters": {
                    "fullDbName": {
                        "value": "[field('fullName')]"
                    }
                }
            }
        }
    }
}

ВыключеноDisabled

Это действие применяется при тестировании или для определения, имеет ли политика параметризованное действие.This effect is useful for testing situations or for when the policy definition has parameterized the effect. Такая гибкость позволяет отключить одно назначение этой политики вместо всех назначений.This flexibility makes it possible to disable a single assignment instead of disabling all of that policy's assignments.

Альтернативой отключенному результату является енфорцементмоде, который задается в назначении политики.An alternative to the Disabled effect is enforcementMode, which is set on the policy assignment. Когда enforcementMode является Disabled, ресурсы все равно оцениваются.When enforcementMode is Disabled, resources are still evaluated. Ведение журнала, например журналов действий, и последствий применения политик не выполняются.Logging, such as Activity logs, and the policy effect don't occur. Дополнительные сведения см. в назначение политик — режим применения.For more information, see policy assignment - enforcement mode.

EnforceOPAConstraintEnforceOPAConstraint

Это действие используется с определением политики mode из Microsoft.Kubernetes.Data.This effect is used with a policy definition mode of Microsoft.Kubernetes.Data. Оно используется для передачи правил управления допуском Gatekeeper v3, определенных с помощью OPA Constraint Framework, Open Policy Agent (OPA) в кластерах Kubernetes в Azure.It's used to pass Gatekeeper v3 admission control rules defined with OPA Constraint Framework to Open Policy Agent (OPA) to Kubernetes clusters on Azure.

Важно!

Определения политик ограниченного просмотра с енфорцеопаконстраинт и связанными категориями служб Kubernetes являются устаревшими.The limited preview policy definitions with EnforceOPAConstraint effect and the related Kubernetes Service category are deprecated. Вместо этого используйте режим "эффекты аудита " и " запретить " с помощью поставщика ресурсов Microsoft.Kubernetes.Data .Instead, use the effects audit and deny with Resource Provider mode Microsoft.Kubernetes.Data.

Оценка EnforceOPAConstraintEnforceOPAConstraint evaluation

Контроллер допуска Open Policy Agent оценивает все новые запросы в кластере в режиме реального времени.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. Каждые 15 минут завершается полное сканирование кластера и результаты отправляются политике Azure.Every 15 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Свойства EnforceOPAConstraintEnforceOPAConstraint properties

Свойство details для действия EnforceOPAConstraint имеет вложенные свойства, описывающие правило управления допуском Gatekeeper v3.The details property of the EnforceOPAConstraint effect has the subproperties that describe the Gatekeeper v3 admission control rule.

  • констраинттемплате (обязательно)constraintTemplate (required)
    • Шаблон ограничения CustomResourceDefinition (CRD), который определяет новые ограничения.The Constraint template CustomResourceDefinition (CRD) that defines new Constraints. Этот шаблон определяет логику Rego, схему ограничения и параметры ограничения, которые передаются через значения из политики Azure.The template defines the Rego logic, the Constraint schema, and the Constraint parameters that are passed via values from Azure Policy.
  • ограничение (обязательно)constraint (required)
    • Реализация CRD шаблона ограничения.The CRD implementation of the Constraint template. Использует параметры, передаваемые через значения как {{ .Values.<valuename> }}.Uses parameters passed via values as {{ .Values.<valuename> }}. В приведенном ниже примере это значения {{ .Values.cpuLimit }} и {{ .Values.memoryLimit }}.In the example below, these values are {{ .Values.cpuLimit }} and {{ .Values.memoryLimit }}.
  • значения (необязательно)values (optional)
    • Определяет все параметры и значения, передаваемые ограничению.Defines any parameters and values to pass to the Constraint. Каждое значение должно существовать в шаблоне ограничения CRD.Each value must exist in the Constraint template CRD.

Пример EnforceOPAConstraintEnforceOPAConstraint example

Пример Правило управления допуском Gatekeeper v3 для задания ограничений контейнера ЦП и ресурсов памяти в Kubernetes.Example: Gatekeeper v3 admission control rule to set container CPU and memory resource limits in Kubernetes.

"if": {
    "allOf": [
        {
            "field": "type",
            "in": [
                "Microsoft.ContainerService/managedClusters",
                "AKS Engine"
            ]
        },
        {
            "field": "location",
            "equals": "westus2"
        }
    ]
},
"then": {
    "effect": "enforceOPAConstraint",
    "details": {
        "constraintTemplate": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/template.yaml",
        "constraint": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/container-resource-limits/constraint.yaml",
        "values": {
            "cpuLimit": "[parameters('cpuLimit')]",
            "memoryLimit": "[parameters('memoryLimit')]"
        }
    }
}

EnforceRegoPolicyEnforceRegoPolicy

Это действие используется с определением политики mode из Microsoft.ContainerService.Data.This effect is used with a policy definition mode of Microsoft.ContainerService.Data. Оно используется для передачи правил управления допуском Gatekeeper v2, определенных с помощью Rego, Open Policy Agent (OPA) в службе AzureKubernetes.It's used to pass Gatekeeper v2 admission control rules defined with Rego to Open Policy Agent (OPA) on Azure Kubernetes Service.

Важно!

Определения политик ограниченного просмотра с помощью действия EnforceRegoPolicy, а также связанная категория Kubernetes Service являются устаревшими.The limited preview policy definitions with EnforceRegoPolicy effect and the related Kubernetes Service category are deprecated. Вместо этого используйте режим "эффекты аудита " и " запретить " с помощью поставщика ресурсов Microsoft.Kubernetes.Data .Instead, use the effects audit and deny with Resource Provider mode Microsoft.Kubernetes.Data.

Оценка EnforceRegoPolicyEnforceRegoPolicy evaluation

Контроллер допуска Open Policy Agent оценивает все новые запросы в кластере в режиме реального времени.The Open Policy Agent admission controller evaluates any new request on the cluster in real time. Каждые 15 минут завершается полное сканирование кластера и результаты отправляются политике Azure.Every 15 minutes, a full scan of the cluster is completed and the results reported to Azure Policy.

Свойства EnforceRegoPolicyEnforceRegoPolicy properties

Свойство details для действия EnforceRegoPolicy имеет вложенные свойства, описывающие правило управления допуском Gatekeeper v2.The details property of the EnforceRegoPolicy effect has the subproperties that describe the Gatekeeper v2 admission control rule.

  • policyId (обязательно)policyId (required)
    • Уникальное имя, передаваемое в качестве параметра в правило управления допуском Rego.A unique name passed as a parameter to the Rego admission control rule.
  • Политика (обязательная)policy (required)
    • Указывает универсальный код ресурса (URI) правила управления допуском Rego.Specifies the URI of the Rego admission control rule.
  • полиципараметерс (необязательно)policyParameters (optional)
    • Определяет все параметры и значения, передаваемые политике Rego.Defines any parameters and values to pass to the rego policy.

Пример EnforceRegoPolicyEnforceRegoPolicy example

Пример Правило управления допуском Gatekeeper v2, разрешающее только указанные образы контейнеров в AKS.Example: Gatekeeper v2 admission control rule to allow only the specified container images in AKS.

"if": {
    "allOf": [
        {
            "field": "type",
            "equals": "Microsoft.ContainerService/managedClusters"
        },
        {
            "field": "location",
            "equals": "westus2"
        }
    ]
},
"then": {
    "effect": "EnforceRegoPolicy",
    "details": {
        "policyId": "ContainerAllowedImages",
        "policy": "https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/KubernetesService/container-allowed-images/limited-preview/gatekeeperpolicy.rego",
        "policyParameters": {
            "allowedContainerImagesRegex": "[parameters('allowedContainerImagesRegex')]"
        }
    }
}

ИзменитьModify

Параметр modify используется для добавления, обновления или удаления свойств или тегов для ресурса во время создания или обновления.Modify is used to add, update, or remove properties or tags on a resource during creation or update. Распространенный пример — обновление тегов для таких ресурсов, как costCenter.A common example is updating tags on resources such as costCenter. Существующие несоответствующие ресурсы можно исправить, активировав задачу исправления.Existing non-compliant resources can be remediated with a remediation task. Одно правило Modify может иметь любое количество операций.A single Modify rule can have any number of operations.

Следующие операции поддерживаются в параметре Modify:The following operations are supported by Modify:

  • Добавление, замена или удаление тегов ресурсов.Add, replace or remove resource tags. Для тегов изменение политики должно быть mode настроено для индексирования , если целевой ресурс не является группой ресурсов.For tags, a Modify policy should have mode set to Indexed unless the target resource is a resource group.
  • Добавьте или замените значение типа управляемого удостоверения ( identity.type ) для виртуальных машин и масштабируемых наборов виртуальных машин.Add or replace the value of managed identity type (identity.type) of virtual machines and virtual machine scale sets.
  • Добавьте или замените значения определенных псевдонимов (Предварительная версия).Add or replace the values of certain aliases (preview).
    • Используйте Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }.Use Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' } в Azure PowerShell 4.6.0 или более поздней версии, чтобы получить список псевдонимов, которые можно использовать с параметром MODIFY.in Azure PowerShell 4.6.0 or higher to get a list of aliases that can be used with Modify.

Важно!

Если вы управляете тегами, рекомендуется использовать параметр изменить вместо Append в качестве изменения предоставляет дополнительные типы операций и возможность исправлять существующие ресурсы.If you're managing tags, it's recommended to use Modify instead of Append as Modify provides additional operation types and the ability to remediate existing resources. Однако рекомендуется использовать Append, если вы не можете создать управляемое удостоверение или изменить, пока не поддерживает псевдоним для свойства ресурса.However, Append is recommended if you aren't able to create a managed identity or Modify doesn't yet support the alias for the resource property.

Оценка ModifyModify evaluation

Modify выполняет оценку до обработки запроса поставщиком ресурсов во время создания или обновления ресурса.Modify evaluates before the request gets processed by a Resource Provider during the creation or updating of a resource. Операции изменения применяются к содержимому запроса при соблюдении условия If правила политики.The Modify operations are applied to the request content when the if condition of the policy rule is met. Каждая операция изменения может указывать условие, определяющее, когда оно применяется.Each Modify operation can specify a condition that determines when it's applied. Операции с условиями, которые вычисляются как false , пропускаются.Operations with conditions that are evaluated to false are skipped.

Если указан псевдоним, выполняются следующие дополнительные проверки, чтобы гарантировать, что операция изменения не изменит содержимое запроса таким образом, чтобы поставщик ресурсов отклонил его:When an alias is specified, the following additional checks are performed to ensure that the Modify operation doesn't change the request content in a way that causes the resource provider to reject it:

  • Свойство, которому сопоставлен псевдоним, помечено как изменяемое в версии API запроса.The property the alias maps to is marked as 'Modifiable' in the request's API version.
  • Тип токена в операции изменения соответствует ожидаемому типу токена для свойства в версии API запроса.The token type in the Modify operation matches the expected token type for the property in the request's API version.

Если какая – либо из этих проверок не пройдена, вычисление политики будет возвращаться к указанному конфликтеффект.If either of these checks fail, the policy evaluation falls back to the specified conflictEffect.

Важно!

Рекомменедед, что изменения определений, включающих псевдонимы, используют конфликт аудита , чтобы избежать неудачных запросов с помощью версий API, в которых сопоставленное свойство не является изменяемым.It's recommeneded that Modify definitions that include aliases use the audit conflict effect to avoid failing requests using API versions where the mapped property isn't 'Modifiable'. Если один и тот же псевдоним ведет себя по-разному между версиями API, для определения операции изменения, используемой для каждой версии API, можно использовать условные операции изменения.If the same alias behaves differently between API versions, conditional modify operations can be used to determine the modify operation used for each API version.

При запуске определения политики с использованием действия Modify в рамках цикла оценки оно не меняет уже существующие ресурсы.When a policy definition using the Modify effect is run as part of an evaluation cycle, it doesn't make changes to resources that already exist. Вместо этого ресурсы, отвечающие условию if, отмечаются как несоответствующие.Instead, it marks any resource that meets the if condition as non-compliant.

Свойства ModifyModify properties

Свойство details действия Modify имеет все вложенные свойства, определяющие разрешения, необходимые для исправления, а также operations, используемые для добавления, обновления или удаления значений тегов.The details property of the Modify effect has all the subproperties that define the permissions needed for remediation and the operations used to add, update, or remove tag values.

  • роледефинитионидс (обязательно)roleDefinitionIds (required)
  • конфликтеффект (необязательно)conflictEffect (optional)
    • Определяет, какое определение политики "WINS" в случае, если несколько определений политики изменяет одно и то же свойство или если операция изменения не работает с указанным псевдонимом.Determines which policy definition "wins" in the event that more than one policy definition modifies the same property or when the Modify operation doesn't work on the specified alias.
      • Для новых или обновленных ресурсов определение политики с параметром Deny имеет приоритет.For new or updated resources, the policy definition with deny takes precedence. Определения политик с аудитом пропустить все операции.Policy definitions with audit skip all operations. Если _запрещено_более одного определения политики, запрос отклоняется как конфликт.If more than one policy definition has deny, the request is denied as a conflict. Если все определения политик имеют Аудит, то ни одна из операций определений конфликтующих политик не обрабатывается.If all policy definitions have audit, then none of the operations of the conflicting policy definitions are processed.
      • Для существующих ресурсов, если более чем одно определение политики имеет значение Deny, состояние соответствия является конфликтом.For existing resources, if more than one policy definition has deny, the compliance status is Conflict. Если одно или меньшее количество определений политики отклоняется, каждое назначение возвращает состояние соответствия не соответствует.If one or fewer policy definitions have deny, each assignment returns a compliance status of Non-compliant.
    • Доступные значения: Audit, Deny, disabled.Available values: audit, deny, disabled.
    • Значение по умолчанию — Deny.Default value is deny.
  • операции (обязательные)operations (required)
    • Массив всех операций тегов, которые должны быть выполнены при сопоставлении ресурсов.An array of all tag operations to be completed on matching resources.
    • Свойства:Properties:
      • Операция (обязательная)operation (required)
        • Определяет, какое действие следует предпринять с совпавшим ресурсом.Defines what action to take on a matching resource. Возможные варианты: addOrReplace, Add, Remove.Options are: addOrReplace, Add, Remove. Add ведет себя так же, как и Append.Add behaves similar to the Append effect.
      • поле (обязательно)field (required)
        • Добавляемый, заменяемый или удаляемый тегThe tag to add, replace, or remove. Имена тегов должны соответствовать тому же соглашению об именовании, что и другие поля.Tag names must adhere to the same naming convention for other fields.
      • value [необязательное]value (optional)
        • Задаваемое значение тега.The value to set the tag to.
        • Это свойство является обязательным, если operation (операцией) является addOrReplace или Add.This property is required if operation is addOrReplace or Add.
      • условие (необязательно)condition (optional)
        • Строка, содержащая выражение языка политики Azure с функциями политики , результатом вычисления которых является true или false.A string containing an Azure Policy language expression with Policy functions that evaluates to true or false.
        • Не поддерживает следующие функции политики: field() , resourceGroup() , subscription() .Doesn't support the following Policy functions: field(), resourceGroup(), subscription().

Операции ModifyModify operations

Массив свойств operation позволяет изменять несколько тегов различными способами из одного определения политики.The operations property array makes it possible to alter several tags in different ways from a single policy definition. Каждая операция состоит из свойств operation (операция), field (поле) и value (значение).Each operation is made up of operation, field, and value properties. Операция определяет, что делает задача исправления в тегах, поле определяет, какой тег изменяется, а значение определяет новый параметр для этого тега.Operation determines what the remediation task does to the tags, field determines which tag is altered, and value defines the new setting for that tag. Приведенный ниже пример вносит следующие изменения в теги.The example below makes the following tag changes:

  • Задает для тега environment значение Test, даже если он уже существует с другим значением.Sets the environment tag to "Test", even if it already exists with a different value.
  • Удаляет тег TempResource.Removes the tag TempResource.
  • Задает тег Dept для параметра политики DeptName, настроенного для назначения политики.Sets the Dept tag to the policy parameter DeptName configured on the policy assignment.
"details": {
    ...
    "operations": [
        {
            "operation": "addOrReplace",
            "field": "tags['environment']",
            "value": "Test"
        },
        {
            "operation": "Remove",
            "field": "tags['TempResource']",
        },
        {
            "operation": "addOrReplace",
            "field": "tags['Dept']",
            "value": "[parameters('DeptName')]"
        }
    ]
}

Свойство operation имеет следующие параметры.The operation property has the following options:

ОперацияOperation ОписаниеDescription
addOrReplaceaddOrReplace Добавляет определенное свойство или тег и значение к ресурсу, даже если свойство или тег уже существуют с другим значением.Adds the defined property or tag and value to the resource, even if the property or tag already exists with a different value.
ДобавитьAdd Добавляет определенное свойство или тег и значение к ресурсу.Adds the defined property or tag and value to the resource.
УдалитьRemove Удаляет заданное свойство или тег из ресурса.Removes the defined property or tag from the resource.

Примеры ModifyModify examples

Пример 1: Добавьте тег environment и замените существующие теги environment на Test.Example 1: Add the environment tag and replace existing environment tags with "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 параметризованным значением.Example 2: Remove the env tag and add the environment tag or replace existing environment tags with a parameterized value:

"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. Убедитесь, что учетная запись хранения не разрешает доступ к большому двоичному объекту, операция изменения применяется только при вычислении запросов с API версии выше или равным "2019-04-01":Example 3: Ensure that a storage account doesn't allow blob public access, the Modify operation is applied only when evaluating requests with API version greater or equals to '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
            }
        ]
    }
}

Наложение определений политикLayering policy definitions

На ресурс могут влиять несколько назначений.A resource may be impacted by several assignments. Эти назначения могут быть в одной или в разных областях.These assignments may be at the same scope or at different scopes. Для этих назначений наверняка будут назначены разные действия.Each of these assignments is also likely to have a different effect defined. Условие и действие для каждой политики вычисляется независимо друг от друга.The condition and effect for each policy is independently evaluated. Пример:For example:

  • Политика 1Policy 1
    • Ограничивает расположение ресурсов для региона "westus"Restricts resource location to 'westus'
    • Назначенная подписка АAssigned to subscription A
    • Результат запретаDeny effect
  • Политика 2Policy 2
    • Ограничивает расположение ресурсов для региона "eastus"Restricts resource location to 'eastus'
    • Назначенные группе ресурсов B в подписке AAssigned to resource group B in subscription A
    • Действие аудитаAudit effect

Эта настройка приведет к следующему результату.This setup would result in the following outcome:

  • Любой ресурс, уже входящий в группу ресурсов В и находящийся в регионе "eastus", соответствует политике 2, но не соответствует политике 1.Any resource already in resource group B in 'eastus' is compliant to policy 2 and non-compliant to policy 1
  • Любой ресурс, уже входящий в группу ресурсов В и не находящийся в регионе "eastus", не соответствует политике 2 и политике 1, если не находится в регионе "westus".Any resource already in resource group B not in 'eastus' is non-compliant to policy 2 and non-compliant to policy 1 if not in 'westus'
  • Любой новый ресурс в подписке А, не расположенный в регионе "westus", отклоняется политикой 1.Any new resource in subscription A not in 'westus' is denied by policy 1
  • Любой новый ресурс, который создается в подписке A и группе ресурсов В, расположенный в регионе "westus" и не соответствует политике 2.Any new resource in subscription A and resource group B in 'westus' is created and non-compliant on policy 2

Если задать для политик 1 и 2 действие запрета, ситуация изменится следующим образом.If both policy 1 and policy 2 had effect of deny, the situation changes to:

  • Любой ресурс, уже входящий в группу ресурсов В, но не расположенный в регионе "eastus", не соответствует политике 2.Any resource already in resource group B not in 'eastus' is non-compliant to policy 2
  • Любой ресурс, уже входящий в группу ресурсов В, но не расположенный в регионе "westus", не соответствует политике 1.Any resource already in resource group B not in 'westus' is non-compliant to policy 1
  • Любой новый ресурс в подписке А, не расположенный в регионе "westus", отклоняется политикой 1.Any new resource in subscription A not in 'westus' is denied by policy 1
  • Любой новый ресурс в группе ресурсов B в подписке A запрещается.Any new resource in resource group B of subscription A is denied

Каждое назначение оценивается по отдельности.Each assignment is individually evaluated. Таким образом, у ресурса нет возможности ускользнуть из-за различий в объеме.As such, there isn't an opportunity for a resource to slip through a gap from differences in scope. Общий результат наложения определений политик считается накопительным по принципу максимальной строгости.The net result of layering policy definitions is considered to be cumulative most restrictive. Например, если бы политики 1 и 2 имели эффект запрета, ресурс был бы заблокирован перекрывающимися и конфликтующими определениями политик.As an example, if both policy 1 and 2 had a deny effect, a resource would be blocked by the overlapping and conflicting policy definitions. Если вам все равно нужно создать ресурс в целевой области, пересмотрите исключения в каждом назначении, чтобы гарантировать, что определения политик влияют на правильные области.If you still need the resource to be created in the target scope, review the exclusions on each assignment to validate the right policy assignments are affecting the right scopes.

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