Kubernetes Kyverno bypass

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

정책 잘못 구성 악용

규칙 나열

개요를 파악하면 어떤 규칙이 활성화되어 있는지, 어떤 모드인지, 누가 이를 우회할 수 있는지 알 수 있습니다.

$ kubectl get clusterpolicies
$ kubectl get policies

제외된 항목 나열

각 ClusterPolicy 및 Policy에 대해 제외된 엔터티 목록을 지정할 수 있습니다. 포함 항목은 다음과 같습니다:

  • 그룹: excludedGroups

  • 사용자: excludedUsers

  • 서비스 계정 (SA): excludedServiceAccounts

  • 역할: excludedRoles

  • 클러스터 역할: excludedClusterRoles

이러한 제외된 엔터티는 정책 요구 사항에서 면제되며, Kyverno는 이들에 대해 정책을 시행하지 않습니다.

예시

하나의 clusterpolicy 예제를 살펴보겠습니다 :

$ kubectl get clusterpolicies MYPOLICY -o yaml

제외된 엔티티를 찾으세요 :

exclude:
any:
- clusterRoles:
- cluster-admin
- subjects:
- kind: User
name: system:serviceaccount:DUMMYNAMESPACE:admin
- kind: User
name: system:serviceaccount:TEST:thisisatest
- kind: User
name: system:serviceaccount:AHAH:*

클러스터 내에서 여러 추가 구성 요소, 운영자 및 애플리케이션은 클러스터 정책에서 제외될 필요가 있을 수 있습니다. 그러나 이는 특권 있는 엔터티를 대상으로 하여 악용될 수 있습니다. 경우에 따라 네임스페이스가 존재하지 않거나 사용자를 가장할 권한이 없는 것처럼 보일 수 있으며, 이는 잘못된 구성의 징후일 수 있습니다.

ValidatingWebhookConfiguration 악용

정책을 우회하는 또 다른 방법은 ValidatingWebhookConfiguration 리소스에 집중하는 것입니다 :

Kubernetes ValidatingWebhookConfiguration

Last updated