apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: restrict-privileged-for-non-admins annotations: policies.kyverno.io/title: "Привилегированные контейнеры — только для администраторов" policies.kyverno.io/category: Security policies.kyverno.io/severity: high policies.kyverno.io/subject: Pod policies.kyverno.io/description: >- Запрещает создание привилегированных контейнеров для обычных пользователей. Администраторы (system:masters, cluster-admins) могут создавать привилегированные поды для системных нужд. Использует request.userInfo для проверки прав запрашивающего. spec: rules: - name: restrict-privileged-non-admin match: resources: kinds: - Pod # Precondition: применять только если пользователь НЕ администратор preconditions: all: - key: "system:masters" operator: NotIn value: "{{ request.userInfo.groups }}" - key: "cluster-admins" operator: NotIn value: "{{ request.userInfo.groups }}" validate: message: >- Пользователь '{{ request.userInfo.username }}' не имеет права создавать привилегированные контейнеры. Обратитесь к cluster-admin для выполнения системных задач. foreach: - list: >- request.object.spec.containers[] | merge(request.object.spec.initContainers[] || `[]`, @) deny: conditions: any: - key: "{{ element.securityContext.privileged }}" operator: Equals value: true