параметры структуры определения Политика Azure

Параметры помогают упростить управление политиками за счет сокращения числа определений политик. Думайте о параметрах, таких как поля в форме: name, address, , citystate. Эти параметры всегда остаются неизменными, но их значения изменяются на основе отдельного заполнения формы. Точно так же параметры работают при создании политик. Добавив параметры в определение политики, вы сможете повторно использовать ее в различных сценариях, указывая разные значения.

Добавление или удаление параметров

Параметры могут быть добавлены в существующее и назначенное определение. Новый параметр должен включать defaultValue свойство. Это свойство предотвращает недопустимость существующих назначений политики или инициативы.

Параметры не могут быть удалены из определения политики, так как может быть назначение, которое задает значение параметра, и эта ссылка будет нарушена. Некоторые встроенные определения политики нерекомендуемые параметры с помощью метаданных"deprecated": true, которые скрывают параметр при назначении определения в портал Azure. Хотя этот метод не поддерживается для определений настраиваемых политик, другой вариант — дублировать и создавать новое определение настраиваемой политики без параметра.

Свойства параметра

Параметр использует следующие свойства в определении политики:

  • name: имя параметра. Используется функцией развертывания parameters в правиле политики. Дополнительные сведения см. в разделе об использовании значения параметра.
  • type: определяет, является stringли параметр , array, object, boolean, integerили floatdateTime.
  • metadata: определяет вложенные свойства, в основном используемые портал Azure для отображения понятной для пользователя информации:
    • description: объяснение того, для чего используется параметр. Можно использовать для примеров допустимых значений.
    • displayName: понятное имя, отображаемое на портале для параметра.
    • strongType: (Необязательно) Используется при назначении определения политики через портал. Предоставляет список с учетом контекста. См. дополнительные сведения о вложенном свойстве strongType.
    • assignPermissions: (Необязательно) Задайте значение true, чтобы портал Azure создавать назначения ролей во время назначения политики. Это свойство полезно, если вы хотите назначить разрешения за пределами области назначения. Существует одно назначение ролей для определения роли в политике (или определение роли во всех политиках инициативы). Значение параметра должно быть допустимым ресурсом или областью.
    • deprecated: логический флаг, указывающий, является ли параметр устаревшим в встроенном определении.
  • defaultValue: (необязательно) задает значение параметра в назначении, если значение не задано. Это свойство необходимо при обновлении существующего назначенного определения политики. Значение параметра объектного типа должно соответствовать определенной схеме.
  • allowedValues: (необязательно) Предоставляет массив значений, которые параметр принимает во время назначения.
    • Конфиденциальность регистра. Допустимые сравнения значений чувствительны к регистру при назначении политики, что означает, что выбранные значения параметров в назначении должны соответствовать регистру значений в allowedValues массиве в определении. Однако после выбора значений для назначения оценка сравнений строк может быть нечувствительной к регистру в зависимости от используемого условия . Например, если параметр указывает Dev в качестве допустимого значения тега в назначении, и это значение сравнивается с входной строкой с помощью equals условия, то Политика Azure позже будет оценивать значение dev тега как совпадение, даже если это строчные регистры, так как notEquals регистр не учитывается.
    • Для параметров типа объекта значения должны соответствовать соответствующей схеме.
  • schema: (необязательно) обеспечивает проверку входных данных параметров во время назначения с использованием самоопределяющейся схемы JSON. Это свойство поддерживается только для параметров объектного типа и соответствует реализации Json.NET Schema 2019-09. Вы можете просмотреть дополнительные сведения об использовании схем на сайте https://json-schema.org/ и протестировать черновые версии схем на сайте https://www.jsonschemavalidator.net/.

Примеры параметров

Пример 1

Например, можно создать определение политики, чтобы ограничить расположения, в которых могут развертываться ресурсы. Параметр для этого определения политики может использоваться allowedLocations каждым назначением определения политики для ограничения принятых значений. Использование расширенных strongType возможностей при выполнении задания на портале:

"parameters": {
  "allowedLocations": {
    "type": "array",
    "metadata": {
      "description": "The list of allowed locations for resources.",
      "displayName": "Allowed locations",
      "strongType": "location"
    },
    "defaultValue": [
      "westus2"
    ],
    "allowedValues": [
      "eastus2",
      "westus2",
      "westus"
    ]
  }
}

Пример входных данных для этого параметра типа массива (без strongType) во время назначения может быть ["westus", "eastus2"].

Пример 2

В более сложном сценарии можно определить политику, которая требует, чтобы модули pod кластера Kubernetes использовали указанные метки. Параметр для определения этой политики можно labelSelector использовать при каждом назначении определения политики, чтобы указать ресурсы Kubernetes, заданные на основе ключей и значений меток:

"parameters": {
  "labelSelector": {
    "type": "Object",
    "metadata": {
      "displayName": "Kubernetes label selector",
      "description": "Label query to select Kubernetes resources for policy evaluation. An empty label selector matches all Kubernetes resources."
    },
    "defaultValue": {},
    "schema": {
      "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all resources.",
      "type": "object",
      "properties": {
        "matchLabels": {
          "description": "matchLabels is a map of {key,value} pairs.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "minProperties": 1
        },
        "matchExpressions": {
          "description": "matchExpressions is a list of values, a key, and an operator.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "description": "key is the label key that the selector applies to.",
                "type": "string"
              },
              "operator": {
                "description": "operator represents a key's relationship to a set of values.",
                "type": "string",
                "enum": [
                  "In",
                  "NotIn",
                  "Exists",
                  "DoesNotExist"
                ]
              },
              "values": {
                "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "key",
              "operator"
            ],
            "additionalProperties": false
          },
          "minItems": 1
        }
      },
      "additionalProperties": false
    }
  },
}

Пример входных данных для этого параметра объектного типа при назначении будет представлен в формате JSON, который проверяется указанной схемой, и может иметь следующий вид:

{
  "matchLabels": {
    "poolID": "abc123",
    "nodeGroup": "Group1",
    "region": "southcentralus"
  },
  "matchExpressions": [
    {
      "key": "name",
      "operator": "In",
      "values": [
        "payroll",
        "web"
      ]
    },
    {
      "key": "environment",
      "operator": "NotIn",
      "values": [
        "dev"
      ]
    }
  ]
}

Использование значения параметра

В правилах политики полученные параметры используются со следующим синтаксисом функции parameters.

{
  "field": "location",
  "in": "[parameters('allowedLocations')]"
}

Этот пример ссылается на allowedLocations параметр, который был показан в свойствах параметров.

strongType

В свойстве metadata можно использовать strongType для предоставления списка вариантов в портал Azure. strongType может быть поддерживаемым типом ресурса или допустимым значением. Чтобы определить, является ли тип ресурса допустимымstrongType, используйте Get-AzResourceProvider. Формат типаstrongType ресурса .<Resource Provider>/<Resource Type> Например, Microsoft.Network/virtualNetworks/subnets.

Некоторые типы ресурсов, которые не возвращаются Get-AzResourceProvider , поддерживаются. Эти типы перечислены ниже.

  • Microsoft.RecoveryServices/vaults/backupPolicies

Допустимые значения strongType не типа ресурса:

  • location
  • resourceTypes
  • storageSkus
  • vmSKUs
  • existingResourceGroups

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