Kubernetes ValidatingWebhookConfiguration

Bu sayfanın orijinal yazarı Guillaume

Tanım

ValidatingWebhookConfiguration, gelen Kubernetes API isteklerini önceden tanımlanmış bir dizi kural ve kısıtlamaya karşı doğrulayan bir sunucu tarafı bileşeni olan bir doğrulama webhook'unu tanımlayan bir Kubernetes kaynağıdır.

Amaç

ValidatingWebhookConfiguration'un amacı, gelen Kubernetes API istekleri üzerinde önceden tanımlanmış bir dizi kural ve kısıtlamayı uygulayacak bir doğrulama webhook'u tanımlamaktır. Webhook, istekleri yapılandırmada tanımlanan kurallara ve kısıtlamalara karşı doğrulayacak ve istek kurallara uymuyorsa bir hata döndürecektir.

Örnek

İşte bir ValidatingWebhookConfiguration örneği:

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 ile politikalar arasındaki ana fark :

  • ValidatingWebhookConfiguration (VWC) : Gelen Kubernetes API isteklerini önceden tanımlanmış bir dizi kural ve kısıtlamaya karşı doğrulayan, sunucu tarafı bileşeni olan bir doğrulama webhook'unu tanımlayan bir Kubernetes kaynağıdır.

  • Kyverno ClusterPolicy: Podlar, dağıtımlar ve hizmetler gibi Kubernetes kaynaklarını doğrulamak ve uygulamak için bir dizi kural ve kısıtlama belirten bir politika tanımıdır.

Enumeration

$ kubectl get ValidatingWebhookConfiguration

Kyverno ve Gatekeeper VWC'yi Kötüye Kullanma

Gördüğümüz gibi, kurulu olan tüm operatörlerin en az bir ValidatingWebHookConfiguration (VWC) vardır.

Kyverno ve Gatekeeper, bir küme genelinde politikaları tanımlama ve uygulama çerçevesi sağlayan Kubernetes politika motorlarıdır.

İstisnalar, belirli kurallar veya koşulları ifade eder ve bu kurallar, belirli durumlarda bir politikanın atlanmasına veya değiştirilmesine izin verir, ancak bu tek yol değildir!

Kyverno için, geçerli bir politika olduğunda, webhook kyverno-resource-validating-webhook-cfg doldurulur.

Gatekeeper için, gatekeeper-validating-webhook-configuration YAML dosyası vardır.

Her ikisi de varsayılan değerlerle gelir, ancak Yönetici ekipleri bu 2 dosyayı güncelleyebilir.

Kullanım Durumu

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

Şimdi, aşağıdaki çıktıyı tanımlayın:

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

Burada, kubernetes.io/metadata.name etiketi, ad alanı adını ifade eder. values listesindeki isimlere sahip ad alanları politikadan hariç tutulacaktır:

Ad alanlarının varlığını kontrol edin. Bazen, otomasyon veya yanlış yapılandırma nedeniyle bazı ad alanları oluşturulmamış olabilir. Ad alanı oluşturma izniniz varsa, values listesindeki bir isimle bir ad alanı oluşturabilirsiniz ve politikalar yeni ad alanınıza uygulanmayacaktır.

Bu saldırının amacı, operatör kısıtlamalarını aşmak ve ardından diğer tekniklerle ayrıcalıklarınızı artırmak için VWC içindeki yanlış yapılandırmayı istismar etmektir.

Abusing Roles/ClusterRoles in Kubernetes

Referanslar

Last updated