TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #116 35
Запрещаем использование capabilities в kubernetes с помощью kyverno

Kyverno - это мощный инструмент для обеспечения безопасности в Kubernetes, который умеет валидировать, мутировать и управлять различными сущностями кластера согласно заданным правилам (политикам).

Установить можно следующей командой:
kubectl create -f https://github.com/kyverno/kyverno/releases/download/v1.13.0/install.yaml


Ниже я приведу пример кластерной политики для запрета использования capabilities NET_ADMIN. Аналогично можно запретить и другие CAP, да и много чего в целом.
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: prevent-net-admin-capability
spec:
background: false
failurePolicy: Fail
validationFailureAction: Enforce
webhookTimeoutSeconds: 30
rules:
- name: prevent-net-admin-capability
match:
any:
- resources:
kinds:
- Pod
exclude:
any:
- resources:
namespaces:
- "kube-system"
preconditions:
all:
- key: "{{ request.operation }}"
operator: In
value:
- CREATE
- UPDATE
validate:
message: "Adding NET_ADMIN capability is not allowed."
deny:
conditions:
any:
- key: "{{ request.object.spec.containers[0].securityContext.capabilities.add[0] }}"
operator: Equals
value: "NET_ADMIN"
- key: "{{ request.object.spec.initContainers[0].securityContext.capabilities.add[0] }}"
operator: Equals
value: "NET_ADMIN"
- key: "{{ request.object.spec.ephemeralContainers[0].securityContext.capabilities.add[0] }}"
operator: Equals
value: "NET_ADMIN"


В этом примере мы запрещаем добавление NET_ADMIN для containers, initContainers, ephemeralContainers, кроме namespace "kube-system" в секции exclude. Проверим работоспособность, попробовав создать тестовый под:

apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: busybox
command: ["sleep", "3600"]
securityContext:
capabilities:
add:
- NET_ADMIN


В выводе должны увидеть:
error from server: error when creating "pod.yaml": admission webhook "validate.kyverno.svc-fail" denied the request:

resource Pod/default/test-pod was blocked due to the following policies

prevent-net-admin-capability:
prevent-net-admin-capability: Adding NET_ADMIN capability is not allowed.


#devsecops
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →