Kubernetes ValidatingWebhookConfiguration

The original author of this page is Guillaume

Definition

ValidatingWebhookConfiguration to zasób Kubernetes, który definiuje webhook walidacyjny, będący komponentem po stronie serwera, który weryfikuje przychodzące żądania API Kubernetes zgodnie z zestawem zdefiniowanych reguł i ograniczeń.

Purpose

Celem ValidatingWebhookConfiguration jest zdefiniowanie webhooka walidacyjnego, który będzie egzekwował zestaw zdefiniowanych reguł i ograniczeń na przychodzących żądaniach API Kubernetes. Webhook zweryfikuje żądania zgodnie z regułami i ograniczeniami zdefiniowanymi w konfiguracji i zwróci błąd, jeśli żądanie nie będzie zgodne z regułami.

Example

Here is an example of a 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

Główna różnica między ValidatingWebhookConfiguration a politykami :

  • ValidatingWebhookConfiguration (VWC) : Zasób Kubernetes, który definiuje webhook walidacyjny, który jest komponentem po stronie serwera, walidującym przychodzące żądania API Kubernetes w odniesieniu do zestawu zdefiniowanych reguł i ograniczeń.

  • Kyverno ClusterPolicy: Definicja polityki, która określa zestaw reguł i ograniczeń do walidacji i egzekwowania zasobów Kubernetes, takich jak pod, wdrożenia i usługi

Enumeration

$ kubectl get ValidatingWebhookConfiguration

Wykorzystywanie Kyverno i Gatekeeper VWC

Jak widać, wszyscy zainstalowani operatorzy mają przynajmniej jedną ValidatingWebHookConfiguration (VWC).

Kyverno i Gatekeeper to silniki polityki Kubernetes, które zapewniają ramy do definiowania i egzekwowania polityk w całym klastrze.

Wyjątki odnoszą się do konkretnych reguł lub warunków, które pozwalają na ominięcie lub modyfikację polityki w określonych okolicznościach, ale to nie jest jedyny sposób!

Dla kyverno, gdy istnieje polityka walidacyjna, webhook kyverno-resource-validating-webhook-cfg jest wypełniany.

Dla Gatekeepera istnieje plik YAML gatekeeper-validating-webhook-configuration.

Oba pochodzą z domyślnymi wartościami, ale zespoły administratorów mogą zaktualizować te 2 pliki.

Przypadek użycia

$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml

Teraz zidentyfikuj następujące wyjście:

namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP

Tutaj etykieta kubernetes.io/metadata.name odnosi się do nazwy przestrzeni nazw. Przestrzenie nazw z nazwami w liście values zostaną wykluczone z polityki:

Sprawdź istnienie przestrzeni nazw. Czasami, z powodu automatyzacji lub błędnej konfiguracji, niektóre przestrzenie nazw mogły nie zostać utworzone. Jeśli masz uprawnienia do tworzenia przestrzeni nazw, możesz utworzyć przestrzeń nazw z nazwą w liście values, a polityki nie będą miały zastosowania do twojej nowej przestrzeni nazw.

Celem tego ataku jest wykorzystanie błędnej konfiguracji wewnątrz VWC w celu obejścia ograniczeń operatorów, a następnie podniesienie swoich uprawnień za pomocą innych technik.

References

Last updated