Kubernetes ValidatingWebhookConfiguration

Originalni autor ove stranice je Guillaume

Definicija

ValidatingWebhookConfiguration je Kubernetes resurs koji definiše validirajući webhook, što je komponenta na serverskoj strani koja validira dolazne Kubernetes API zahteve prema skupu unapred definisanih pravila i ograničenja.

Svrha

Svrha ValidatingWebhookConfiguration je da definiše validirajući webhook koji će sprovoditi skup unapred definisanih pravila i ograničenja na dolazne Kubernetes API zahteve. Webhook će validirati zahteve prema pravilima i ograničenjima definisanim u konfiguraciji, i vratiće grešku ako zahtev ne odgovara pravilima.

Primer

Evo primera 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

The main difference between a ValidatingWebhookConfiguration and policies :

  • ValidatingWebhookConfiguration (VWC) : Kubernetes resurs koji definiše validirajući webhook, što je komponenta na serverskoj strani koja validira dolazne Kubernetes API zahteve prema skupu unapred definisanih pravila i ograničenja.

  • Kyverno ClusterPolicy: Definicija politike koja specificira skup pravila i ograničenja za validaciju i sprovođenje Kubernetes resursa, kao što su podovi, implementacije i servisi

Enumeration

$ kubectl get ValidatingWebhookConfiguration

Zloupotreba Kyverno i Gatekeeper VWC

Kao što možemo videti, svi instalirani operatori imaju barem jednu ValidatingWebHookConfiguration(VWC).

Kyverno i Gatekeeper su oba Kubernetes policy engine-a koji pružaju okvir za definisanje i sprovođenje politika širom klastera.

Izuzeci se odnose na specifična pravila ili uslove koji omogućavaju da se politika zaobiđe ili izmeni pod određenim okolnostima, ali to nije jedini način!

Za kyverno, kada postoji validirajuća politika, webhook kyverno-resource-validating-webhook-cfg se popunjava.

Za Gatekeeper, postoji gatekeeper-validating-webhook-configuration YAML datoteka.

Oba dolaze sa podrazumevanim vrednostima, ali timovi administratora mogu ažurirati te 2 datoteke.

Use Case

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

Sada identifikujte sledeći izlaz:

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

Ovde, oznaka kubernetes.io/metadata.name se odnosi na ime prostora imena. Prostori imena sa imenima u values listi biće isključeni iz politike:

Proverite postojanje prostora imena. Ponekad, zbog automatizacije ili pogrešne konfiguracije, neki prostori imena možda nisu kreirani. Ako imate dozvolu da kreirate prostor imena, možete kreirati prostor imena sa imenom u values listi i politike se neće primeniti na vaš novi prostor imena.

Cilj ovog napada je da iskoristi pogrešnu konfiguraciju unutar VWC kako bi zaobišao ograničenja operatera i zatim povećao svoje privilegije drugim tehnikama.

Reference

Last updated