52 lines
2.0 KiB
YAML
52 lines
2.0 KiB
YAML
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:
|
||
message: >-
|
||
Образ '{{ element.image }}' из недоверенного реестра.
|
||
Разрешены только:
|
||
- registry.company.com/
|
||
- gcr.io/company-project/
|
||
Загрузите образ в внутренний реестр и обновите манифест.
|
||
foreach:
|
||
- list: >-
|
||
request.object.spec.containers[] |
|
||
merge(request.object.spec.initContainers[] || `[]`, @)
|
||
deny:
|
||
conditions:
|
||
all:
|
||
# Образ НЕ из первого доверенного реестра
|
||
- key: "{{ element.image }}"
|
||
operator: NotStartsWith
|
||
value: "registry.company.com/"
|
||
# И НЕ из второго доверенного реестра
|
||
- key: "{{ element.image }}"
|
||
operator: NotStartsWith
|
||
value: "gcr.io/company-project/"
|
||
# Добавьте дополнительные условия по аналогии
|