apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: allow-only-trusted-registries annotations: policies.kyverno.io/title: "Только доверенные реестры" policies.kyverno.io/category: Security policies.kyverno.io/severity: high policies.kyverno.io/subject: Pod policies.kyverno.io/description: >- Разрешает образы только из доверенных реестров компании. Предотвращает использование образов из публичных реестров без проверки безопасности. НАСТРОЙТЕ список разрешённых реестров под вашу инфраструктуру. spec: validationFailureAction: Enforce background: true rules: - name: check-trusted-registries match: resources: kinds: - Pod exclude: resources: namespaces: - kube-system - kyverno validate: foreach: - list: >- request.object.spec.containers[] | merge(request.object.spec.initContainers[] || `[]`, @) | merge(request.object.spec.ephemeralContainers[] || `[]`, @) message: >- Образ '{{ element.image }}' из недоверенного реестра. Разрешены: registry.company.com/, gcr.io/company-project/. Загрузите образ в внутренний реестр и обновите манифест. deny: conditions: all: # regex_match: false = образ НЕ начинается с доверенного реестра - key: "{{ regex_match('^registry\\.company\\.com/', element.image) }}" operator: Equals value: false - key: "{{ regex_match('^gcr\\.io/company-project/', element.image) }}" operator: Equals value: false # Добавьте дополнительные условия по аналогии