Kubernetes ValidatingWebhookConfiguration
Reading time: 2 minutes
Оригінальний автор цієї сторінки Guillaume
Визначення
ValidatingWebhookConfiguration - це ресурс Kubernetes, який визначає валідаційний вебхук, що є компонентом на стороні сервера, який перевіряє вхідні запити API Kubernetes на відповідність набору попередньо визначених правил і обмежень.
Мета
Мета ValidatingWebhookConfiguration полягає в тому, щоб визначити валідаційний вебхук, який буде забезпечувати дотримання набору попередньо визначених правил і обмежень для вхідних запитів API Kubernetes. Вебхук перевірятиме запити на відповідність правилам і обмеженням, визначеним у конфігурації, і поверне помилку, якщо запит не відповідає правилам.
Приклад
Ось приклад ValidatingWebhookConfiguration:
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: example-validation-webhook
namespace: default
webhook:
name: example-validation-webhook
clientConfig:
url: https://example.com/webhook
serviceAccountName: example-service-account
rules:
- apiGroups:
- ""
apiVersions:
- "*"
operations:
- CREATE
- UPDATE
resources:
- pods
Основна різниця між ValidatingWebhookConfiguration та політиками :

Kyverno.png
- ValidatingWebhookConfiguration (VWC) : Ресурс Kubernetes, який визначає валідаційний вебхук, що є компонентом на стороні сервера, який перевіряє вхідні запити API Kubernetes на відповідність набору попередньо визначених правил і обмежень.
- Kyverno ClusterPolicy: Визначення політики, яке вказує набір правил і обмежень для валідації та забезпечення ресурсів Kubernetes, таких як поди, деплойменти та сервіси
Enumeration
$ kubectl get ValidatingWebhookConfiguration
Зловживання Kyverno та Gatekeeper VWC
Як ми можемо бачити, всі встановлені оператори мають принаймні один ValidatingWebHookConfiguration(VWC).
Kyverno та Gatekeeper є обома механізмами політики Kubernetes, які надають структуру для визначення та впровадження політик у кластері.
Виключення стосуються конкретних правил або умов, які дозволяють обійти або змінити політику за певних обставин, але це не єдиний спосіб!
Для kyverno, оскільки є політика валідації, вебхук kyverno-resource-validating-webhook-cfg
заповнюється.
Для Gatekeeper є YAML файл gatekeeper-validating-webhook-configuration
.
Обидва мають значення за замовчуванням, але команди адміністраторів можуть оновити ці 2 файли.
Використання
$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml
Зараз визначте наступний вихід:
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP
Тут мітка kubernetes.io/metadata.name
відноситься до назви простору імен. Простори імен з назвами в списку values
будуть виключені з політики:
Перевірте наявність просторів імен. Іноді, через автоматизацію або неправильну конфігурацію, деякі простори імен могли не бути створені. Якщо у вас є дозвіл на створення простору імен, ви можете створити простір імен з назвою в списку values
, і політики не будуть застосовуватися до вашого нового простору імен.
Мета цієї атаки полягає в експлуатації неправильної конфігурації всередині VWC, щоб обійти обмеження операторів, а потім підвищити свої привілеї за допомогою інших технік.
Abusing Roles/ClusterRoles in Kubernetes