Шаблон Политики Azure: свойства поля

Оператор field вычисляет указанное свойство или псевдоним предоставленному значению для заданного условия.

Пример определения политики

Это определение политики позволяет определить разрешенные регионы, соответствующие требованиям географического расположения вашей организации. Разрешенные ресурсы определяются в параметре listOfAllowedLocations (массив). Ресурсы, соответствующие определению, отклоняются.

{
    "properties": {
        "displayName": "Allowed locations",
        "policyType": "BuiltIn",
        "description": "This policy enables you to restrict the locations your organization can specify when deploying resources. Use to enforce your geo-compliance requirements. Excludes resource groups, Microsoft.AzureActiveDirectory/b2cDirectories, and resources that use the 'global' region.",
        "mode": "Indexed",
        "parameters": {
            "listOfAllowedLocations": {
                "type": "Array",
                "metadata": {
                    "description": "The list of locations that can be specified when deploying resources.",
                    "strongType": "location",
                    "displayName": "Allowed locations"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "location",
                        "notIn": "[parameters('listOfAllowedLocations')]"
                    },
                    {
                        "field": "location",
                        "notEquals": "global"
                    },
                    {
                        "field": "type",
                        "notEquals": "Microsoft.AzureActiveDirectory/b2cDirectories"
                    }
                ]
            },
            "then": {
                "effect": "Deny"
            }
        }
    }
}

Объяснение

    "if": {
        "allOf": [{
                "field": "location",
                "notIn": "[parameters('listOfAllowedLocations')]"
            },
            {
                "field": "location",
                "notEquals": "global"
            },
            {
                "field": "type",
                "notEquals": "Microsoft.AzureActiveDirectory/b2cDirectories"
            }
        ]
    },
    "then": {
        "effect": "Deny"
    }
}

Оператор field используется три раза в логическом оператореallOf.

  • При первом использовании вычисляется свойство location с условием notIn в параметре listOfAllowedLocations. notIn работает, как ожидает массив, и параметр является массивом. Если location созданного или обновленного ресурса не находится в списке утвержденных, этот элемент возвращает значение "true".
  • Второе использование также оценивает свойство location, но использует условие notEquals, чтобы определить, является ли ресурс глобальным. Если location созданного или обновленного ресурса не глобальное, этот элемент возвращает значение "true".
  • При последнем использовании вычисляется свойство type и используется условие notEquals для проверки, не является ли тип ресурса Microsoft.AzureActiveDirectory/b2cDirectories. Если это не так, этот элемент возвращает значение "true".

Если все три оператора условий в логическом операторе allOf оцениваются как "true", то создание или обновление ресурса блокируется Политикой Azure.

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