В панели управления Container Security перейдите в раздел Контроль допуска → Политики допуска.
Нажмите Создать политику и выберите тип политики валидации:
Kubernetes — создание нативной политики валидации. Политика применяется для объектов, определенных в биндинге.
Kyverno (весь кластер) — создание расширенной политики валидации, которая применяется ко всем объектам кластера.
Kyverno (пространство имен) — создание расширенной политики валидации, которая применяется к объектам кластера определенного пространства имен.
Настройте конфигурацию политики:
На шаге «Конфигурация политики» в редакторе задайте параметры политики, используя шаблон:
apiVersion: admissionregistration.k8s.io/v1kind: ValidatingAdmissionPolicymetadata: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-файл с политикой.
На шаге «Биндинг» в редакторе задайте привязку политики к определенным объектам, используя шаблон ниже.
В биндинге определяются объекты, для которых будет проверяться политика.
apiVersion: admissionregistration.k8s.io/v1kind: ValidatingAdmissionPolicyBindingmetadata: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>.