Kubernetes ValidatingWebhookConfiguration

इस पृष्ठ के मूल लेखक हैं Guillaume

परिभाषा

ValidatingWebhookConfiguration एक Kubernetes संसाधन है जो एक validating webhook को परिभाषित करता है, जो एक सर्वर-साइड घटक है जो आने वाले Kubernetes API अनुरोधों को पूर्व निर्धारित नियमों और बाधाओं के सेट के खिलाफ मान्य करता है।

उद्देश्य

ValidatingWebhookConfiguration का उद्देश्य एक validating webhook को परिभाषित करना है जो आने वाले Kubernetes API अनुरोधों पर पूर्व निर्धारित नियमों और बाधाओं के सेट को लागू करेगा। यह webhook अनुरोधों को कॉन्फ़िगरेशन में परिभाषित नियमों और बाधाओं के खिलाफ मान्य करेगा, और यदि अनुरोध नियमों के अनुरूप नहीं है तो एक त्रुटि लौटाएगा।

उदाहरण

यहाँ एक 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 संसाधन जो एक validating webhook को परिभाषित करता है, जो एक सर्वर-साइड घटक है जो आने वाले Kubernetes API अनुरोधों को पूर्वनिर्धारित नियमों और बाधाओं के सेट के खिलाफ मान्य करता है।

  • Kyverno ClusterPolicy: एक नीति परिभाषा जो Kubernetes संसाधनों, जैसे pods, deployments, और services के लिए मान्य करने और लागू करने के लिए नियमों और बाधाओं के सेट को निर्दिष्ट करती है।

Enumeration

$ kubectl get ValidatingWebhookConfiguration

Abusing Kyverno and Gatekeeper VWC

जैसा कि हम देख सकते हैं, सभी स्थापित ऑपरेटरों के पास कम से कम एक ValidatingWebHookConfiguration(VWC) है।

Kyverno और Gatekeeper दोनों Kubernetes नीति इंजन हैं जो एक क्लस्टर में नीतियों को परिभाषित और लागू करने के लिए एक ढांचा प्रदान करते हैं।

Exceptions उन विशिष्ट नियमों या शर्तों को संदर्भित करते हैं जो किसी नीति को कुछ परिस्थितियों के तहत बायपास या संशोधित करने की अनुमति देते हैं, लेकिन यह एकमात्र तरीका नहीं है!

kyverno के लिए, जैसे ही एक मान्यकरण नीति होती है, वेबहुक kyverno-resource-validating-webhook-cfg भरा जाता है।

Gatekeeper के लिए, gatekeeper-validating-webhook-configuration YAML फ़ाइल है।

दोनों डिफ़ॉल्ट मानों के साथ आते हैं, लेकिन प्रशासनिक टीमें उन 2 फ़ाइलों को अपडेट कर सकती हैं।

Use Case

$ 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