Kubernetes ValidatingWebhookConfiguration

이 페이지의 원래 저자는 Guillaume입니다.

정의

ValidatingWebhookConfiguration은 미리 정의된 규칙 및 제약 조건에 따라 들어오는 Kubernetes API 요청을 검증하는 서버 측 구성 요소인 검증 웹후크를 정의하는 Kubernetes 리소스입니다.

목적

ValidatingWebhookConfiguration의 목적은 들어오는 Kubernetes API 요청에 대해 미리 정의된 규칙 및 제약 조건을 적용하는 검증 웹후크를 정의하는 것입니다. 웹후크는 구성에 정의된 규칙 및 제약 조건에 따라 요청을 검증하고, 요청이 규칙에 부합하지 않을 경우 오류를 반환합니다.

예시

다음은 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 리소스로, 미리 정의된 규칙 및 제약 조건 집합에 대해 들어오는 Kubernetes API 요청을 검증하는 서버 측 구성 요소인 검증 웹후크를 정의합니다.

  • Kyverno ClusterPolicy: Kubernetes 리소스(예: pods, deployments, services)를 검증하고 시행하기 위한 규칙 및 제약 조건 집합을 지정하는 정책 정의입니다.

Enumeration

$ kubectl get ValidatingWebhookConfiguration

Kyverno 및 Gatekeeper VWC 악용

설치된 모든 운영자가 최소한 하나의 ValidatingWebHookConfiguration(VWC)을 가지고 있는 것을 볼 수 있습니다.

KyvernoGatekeeper는 모두 클러스터 전반에 걸쳐 정책을 정의하고 시행하기 위한 프레임워크를 제공하는 Kubernetes 정책 엔진입니다.

예외는 특정 규칙이나 조건을 의미하며, 특정 상황에서 정책을 우회하거나 수정할 수 있도록 허용하지만 이것이 유일한 방법은 아닙니다!

kyverno의 경우, 유효성 검사 정책이 있는 한, 웹후크 kyverno-resource-validating-webhook-cfg가 채워집니다.

Gatekeeper의 경우, gatekeeper-validating-webhook-configuration YAML 파일이 있습니다.

둘 다 기본값으로 제공되지만, 관리자 팀이 이 두 파일을 업데이트할 수 있습니다.

사용 사례

$ 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 내에서 운영자 제한을 우회하고, 다른 기술을 사용하여 권한을 상승시키는 것입니다.

Abusing Roles/ClusterRoles in Kubernetes

References

Last updated