Kubernetes ValidatingWebhookConfiguration

Reading time: 2 minutes

Mwandishi wa awali wa ukurasa huu ni Guillaume

Maana

ValidatingWebhookConfiguration ni rasilimali ya Kubernetes inayofafanua webhook ya kuthibitisha, ambayo ni kipengele cha upande wa seva kinachothibitisha maombi ya API ya Kubernetes yanayoingia dhidi ya seti ya sheria na vikwazo vilivyowekwa.

Kusudi

Kusudi la ValidatingWebhookConfiguration ni kufafanua webhook ya kuthibitisha ambayo itatekeleza seti ya sheria na vikwazo vilivyowekwa kwenye maombi ya API ya Kubernetes yanayoingia. Webhook itathibitisha maombi dhidi ya sheria na vikwazo vilivyofafanuliwa katika usanidi, na itarudisha kosa ikiwa ombi halikidhi sheria hizo.

Mfano

Hapa kuna mfano wa ValidatingWebhookConfiguration:

yaml
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

Tofauti kuu kati ya ValidatingWebhookConfiguration na sera:

Kyverno.png

  • ValidatingWebhookConfiguration (VWC) : Rasilimali ya Kubernetes inayofafanua webhook inayothibitisha, ambayo ni kipengele cha upande wa seva kinachothibitisha maombi ya API ya Kubernetes yanayoingia dhidi ya seti ya sheria na vikwazo vilivyowekwa awali.
  • Kyverno ClusterPolicy: Ufafanuzi wa sera unaoeleza seti ya sheria na vikwazo kwa ajili ya kuthibitisha na kutekeleza rasilimali za Kubernetes, kama vile pods, deployments, na services

Enumeration

$ kubectl get ValidatingWebhookConfiguration

Abusing Kyverno and Gatekeeper VWC

Kama tunavyoona, waendeshaji wote waliowekwa wana angalau moja ValidatingWebHookConfiguration(VWC).

Kyverno na Gatekeeper ni injini za sera za Kubernetes zinazotoa mfumo wa kufafanua na kutekeleza sera katika klasta.

Matumizi ya kipekee yanarejelea sheria maalum au hali ambazo zinaruhusu sera kupuuziliwa mbali au kubadilishwa chini ya hali fulani lakini hii si njia pekee!

Kwa kyverno, kadri kuna sera inayothibitisha, webhook kyverno-resource-validating-webhook-cfg inajazwa.

Kwa Gatekeeper, kuna faili ya YAML gatekeeper-validating-webhook-configuration.

Zote zinakuja na thamani za default lakini timu za Wasimamizi zinaweza kuboresha hizo faili 2.

Use Case

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

Sasa, tambua matokeo yafuatayo:

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

Hapa, lebo kubernetes.io/metadata.name inahusisha na jina la namespace. Namespaces zenye majina katika orodha ya values zitakuwa nje ya sera:

Kagua uwepo wa namespaces. Wakati mwingine, kutokana na automatisering au makosa ya usanidi, baadhi ya namespaces huenda hazijaundwa. Ikiwa una ruhusa ya kuunda namespace, unaweza kuunda namespace yenye jina katika orodha ya values na sera hazitakuwa na athari kwa namespace yako mpya.

Lengo la shambulio hili ni kutumia makosa ya usanidi ndani ya VWC ili kupita vizuizi vya waendeshaji na kisha kuinua haki zako kwa mbinu nyingine.

Abusing Roles/ClusterRoles in Kubernetes

Marejeleo