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

Эффект deny используется для предотвращения запроса ресурсов, который не соответствует определенным стандартам с помощью определения политики и завершается сбоем запроса.

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

При создании или обновлении соответствующего ресурса в режиме Resource Manager запрет останавливает запрос до его отправки поставщику ресурсов. Запрос возвращает 403 (Forbidden). На портале Forbidden можно просмотреть как состояние развертывания, которое было запрещено назначением политики. В режиме поставщика ресурсов поставщик ресурсов управляет оценкой ресурса.

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

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

В режиме deny Resource Manager эффект не имеет дополнительных свойств для использования в then условии определения политики.

Для режима Microsoft.Kubernetes.Datadeny поставщика ресурсов эффект имеет следующие вложенные свойстваdetails. Использование параметра templateInfo является обязательным для новых или обновленных определений политик, так как constraintTemplate является устаревшим.

  • templateInfo (обязательно)
    • Не может использоваться с constraintTemplate.
    • sourceType (обязательно)
      • Определяет тип источника для шаблона ограничения. Допустимые значения: PublicURL или Base64Encoded.

      • Значение if PublicURL, парное с свойством url , чтобы указать расположение шаблона ограничения. Расположение должно быть общедоступным.

        Предупреждение

        Не используйте URI или маркеры SAS в url или другие объекты, которые могут предоставить доступ к секрету.

      • Значение if Base64Encoded, парированное со свойством content для предоставления шаблона ограничения в кодировке Base 64. См. раздел "Создание определения политики из шаблона ограничения", чтобы создать пользовательское определение из существующего шаблона ограничения "Агент политики Open Policy Agent( OPA) версии 3.

  • constraint (необязательно)
    • Не может использоваться с templateInfo.
    • Реализация CRD шаблона ограничения. Использует параметры, передаваемые через values как {{ .Values.<valuename> }}. В приведенном ниже примере 2 это значения {{ .Values.excludedNamespaces }} и {{ .Values.allowedContainerImagesRegex }}.
  • constraintTemplate (не рекомендуется)
    • Не может использоваться с templateInfo.
    • Необходимо заменить на templateInfo при создании или обновлении определения политики.
    • Шаблон ограничения CustomResourceDefinition (CRD), который определяет новые ограничения. Шаблон определяет логику Rego, схему ограничения и параметры ограничения, передаваемые через values Политика Azure. Дополнительные сведения см. в ограничениях Gatekeeper.
  • constraintInfo (необязательно)
    • Нельзя использовать с constraint, constraintTemplateили apiGroupskinds.
    • Если constraintInfo это не указано, ограничение можно создать из templateInfo и политики.
    • sourceType (обязательно)
      • Определяет тип источника для ограничения. Допустимые значения: PublicURL или Base64Encoded.

      • Значение if PublicURL, в сочетании с свойством url для предоставления расположения ограничения. Расположение должно быть общедоступным.

        Предупреждение

        Не используйте URI или маркеры SAS в url или другие объекты, которые могут предоставить доступ к секрету.

  • namespaces (необязательно)
    • Массивпространства имен Kubernetes, которым ограничивается вычисление политики.
    • Пустое или отсутствующее значение приводит к тому, что оценка политики включает все пространства имен, за исключением тех, которые определены в excludedNamespaces.
  • excludedNamespaces (обязательно)
  • labelSelector (обязательно)
    • Объект, включающий matchLabels свойства (object) и matchExpression (массив), позволяющий указать, какие ресурсы Kubernetes следует включить для оценки политики, которая соответствовала предоставленным меткам и селекторам.
    • Пустое или отсутствующее значение приводит к тому, что оценка политики включает все метки и селекторы, кроме пространств имен, определенных в excludedNamespaces.
  • apiGroups (требуется при использовании templateInfo)
    • Массив, содержащий группы API для сопоставления. Пустой массив ([""]) — это основная группа API.
    • Определение ["*"] для apiGroups запрещено.
  • kinds (требуется при использовании templateInfo)
    • Массив, включающий тип объекта Kubernetes, которым ограничивается вычисление.
    • Определение ["*"] для параметра kinds запрещено.
  • values (необязательно)
    • Определяет все параметры и значения, передаваемые ограничению. Каждое значение должно существовать в шаблоне ограничения CRD.

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

Пример 1. Использование deny эффекта для режимов Resource Manager.

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

Пример 2. Использование deny эффекта для режима Microsoft.Kubernetes.Dataпоставщика ресурсов. Дополнительные сведения, приведенные в details.templateInfo объявлении использования PublicURL и задает url расположение шаблона ограничения для использования в Kubernetes для ограничения разрешенных образов контейнеров.

"then": {
  "effect": "deny",
  "details": {
    "templateInfo": {
      "sourceType": "PublicURL",
      "url": "https://store.policy.core.windows.net/kubernetes/container-allowed-images/v1/template.yaml",
    },
    "values": {
      "imageRegex": "[parameters('allowedContainerImagesRegex')]"
    },
    "apiGroups": [
      ""
    ],
    "kinds": [
      "Pod"
    ]
  }
}

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