Поделиться через


Эффект запрета определений политики 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, apiGroups или kinds.
    • Если constraintInfo не указано, ограничение можно создать из templateInfo и политики.
    • sourceType (обязательно)
      • Определяет тип источника для ограничения. Допустимые значения: PublicURL или Base64Encoded.

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

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

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

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

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