Облачная платформаEvolution

Создать политику валидации


  1. В панели управления Container Security перейдите в раздел Контроль допуска → Политики допуска.

  2. Нажмите Создать политику и выберите тип политики валидации:

    • Kubernetes — создание нативной политики валидации. Политика применяется для объектов, определенных в биндинге.

    • Kyverno (весь кластер) — создание расширенной политики валидации, которая применяется ко всем объектам кластера.

    • Kyverno (пространство имен) — создание расширенной политики валидации, которая применяется к объектам кластера определенного пространства имен.

  3. Настройте конфигурацию политики:


    1. На шаге «Конфигурация политики» в редакторе задайте параметры политики, используя шаблон:

      apiVersion: admissionregistration.k8s.io/v1
      kind: ValidatingAdmissionPolicy
      metadata:
      name: <policy-name>
      spec:
      failurePolicy: <failure-policy>
      matchConstraints:
      resourceRules:
      - apiGroups: <api-groups>
      apiVersions: <api-versions>
      operations: <operations>
      resources: <resources>
      validations:
      - expression: "<validation-expression>"
      message: "<validation-message>"

      Где:

      • <policy-name> — название политики.

      • <failure-policy> — действие, в случае нарушения политики.

        Возможные значения:

        • Fail — запрещает создание объекта.

        • Ignore — игнорирует объект.

      • <api-groups> — определяет группы API, к которым будет применяться политика валидации. Например, ["apps"] или ["*"].

      • <api-versions> — версии API, которые рассматриваются в политике валидации. Например, ["v1"].

      • <operations> — операции с объектами, которые политика валидации должна проверять. Например, ["CREATE", "UPDATE"].

      • <resources> — типы объектов, для которых будет применяться политика валидации. Например, ["deployments"].

      • <validation-expression>CEL-выражение для проверки.

      • <validation-message> — сообщение с пояснением ошибки валидации.

      На этом шаге вы можете также загрузить заранее подготовленный YAML-файл с политикой.

    2. На шаге «Биндинг» в редакторе задайте привязку политики к определенным объектам, используя шаблон ниже.

      В биндинге определяются объекты, для которых будет проверяться политика.

      apiVersion: admissionregistration.k8s.io/v1
      kind: ValidatingAdmissionPolicyBinding
      metadata:
      name: <policy-binding-name>
      spec:
      policyName: <policy-name>
      validationActions: <validation-actions>
      matchResources:
      namespaceSelector:
      matchLabels:
      <label-key>: <label-value>

      Где:

      • <policy-binding-name> — название привязки для политики.

      • <policy-name> — название политики, логика которой будет применяться к объектам, определенным в биндинге.

      • <validation-actions> — действие, при обнаружении ошибки валидации. Например, [Deny, Audit].

        Возможные значения, если выражение валидации из политики не выполняется:

        • Deny — запрос на действие будет отклонен.

        • Warn — запрос будет принят, но отобразится предупреждение.

        • Audit — запрос будет принят, а информация о нарушении зафиксируется в отчете.

      • <label-key>: <label-value> — политика будет применяться только к ресурсам, находящимся в пространствах имен, которые имеют метку <label-key> со значением <value-key>.