Kubernetes ValidatingWebhookConfiguration

Автором цієї сторінки є 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 та політиками :

  • 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, щоб обійти обмеження операторів, а потім підвищити свої привілеї за допомогою інших технік.

Посилання

Last updated