Kubernetes ValidatingWebhookConfiguration

Reading time: 3 minutes

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

परिभाषा

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

उद्देश्य

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

उदाहरण

यहाँ एक 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

ValidatingWebhookConfiguration और नीतियों के बीच मुख्य अंतर :

Kyverno.png

  • ValidatingWebhookConfiguration (VWC) : एक Kubernetes संसाधन जो एक validating webhook को परिभाषित करता है, जो एक सर्वर-साइड घटक है जो आने वाले Kubernetes API अनुरोधों को पूर्वनिर्धारित नियमों और बाधाओं के सेट के खिलाफ मान्य करता है।
  • Kyverno ClusterPolicy: एक नीति परिभाषा जो Kubernetes संसाधनों, जैसे pods, deployments, और services के लिए मान्य करने और लागू करने के लिए नियमों और बाधाओं के सेट को निर्दिष्ट करती है।

Enumeration

$ kubectl get ValidatingWebhookConfiguration

Kyverno और Gatekeeper VWC का दुरुपयोग

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

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

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

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

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

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

उपयोग का मामला

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

अब निम्नलिखित आउटपुट की पहचान करें:

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

यहाँ, kubernetes.io/metadata.name लेबल नामस्थान के नाम को संदर्भित करता है। values सूची में नाम वाले नामस्थान नीति से बाहर रखे जाएंगे:

नामस्थान की उपस्थिति की जांच करें। कभी-कभी, स्वचालन या गलत कॉन्फ़िगरेशन के कारण, कुछ नामस्थान नहीं बनाए जा सकते हैं। यदि आपके पास नामस्थान बनाने की अनुमति है, तो आप values सूची में नाम के साथ एक नामस्थान बना सकते हैं और नीतियाँ आपके नए नामस्थान पर लागू नहीं होंगी।

इस हमले का लक्ष्य VWC के अंदर गलत कॉन्फ़िगरेशन का लाभ उठाना है ताकि ऑपरेटर की सीमाओं को बायपास किया जा सके और फिर अन्य तकनीकों के साथ अपने विशेषाधिकारों को बढ़ाया जा सके।

Abusing Roles/ClusterRoles in Kubernetes

संदर्भ