apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: disallow-host-namespaces annotations: policies.kyverno.io/title: "Запрет host namespaces и HostPath" policies.kyverno.io/category: Pod Security Standards (Baseline) policies.kyverno.io/severity: critical policies.kyverno.io/subject: Pod policies.kyverno.io/description: >- hostNetwork, hostPID, hostIPC и hostPath дают контейнеру прямой доступ к соответствующим ресурсам ноды. Это нарушает изоляцию контейнеров и является вектором для escape-атак. spec: validationFailureAction: Enforce background: true rules: - name: disallow-host-namespaces match: resources: kinds: - Pod exclude: resources: namespaces: - kube-system validate: message: >- Под '{{ request.object.metadata.name }}' использует host namespace. Запрещены: hostNetwork, hostIPC, hostPID. Эти настройки дают контейнеру доступ к сети/процессам/IPC ноды. pattern: spec: =(hostNetwork): false =(hostIPC): false =(hostPID): false - name: disallow-hostpath-volumes match: resources: kinds: - Pod exclude: resources: namespaces: - kube-system validate: message: >- Под '{{ request.object.metadata.name }}' использует HostPath volume. HostPath даёт контейнеру прямой доступ к файловой системе ноды. Используйте emptyDir, configMap, secret или PersistentVolumeClaim. deny: conditions: any: - key: "{{ request.object.spec.volumes[].hostPath | length(@) }}" operator: GreaterThan value: "0"